Не удается написать характеристику в приложении BLE для Android - PullRequest
0 голосов
/ 25 ноября 2018

Невозможно записать характеристику на BLE.Приложение способно подключаться к ГАТТ и читать характеристики.Первая мысль: я использую неправильный UUID для Tx.В противном случае моя характеристика по какой-то причине равна нулю.Вот скриншот из Nrf Connect enter image description here

Атрибуты GATT:

     public class RBLGattAttributes {
private static HashMap<String, String> attributes = new HashMap<String, 
String>();
public static String CLIENT_CHARACTERISTIC_CONFIG = "00002902-0000-1000- 
8000-00805f9b34fb";
public static String BLE_SHIELD_TX = "713d0002-503e-4c75-ba94-3148f18d941e";
public static String BLE_SHIELD_RX = "713d0002-503e-4c75-ba94-3148f18d941e";
public static String BLE_SHIELD_SERVICE = "713d0000-503e-4c75-ba94- 
3148f18d941e";

static {
    // RBL Services.
    attributes.put("713d0000-503e-4c75-ba94-3148f18d941e",
            "BLE Shield Service");
    // RBL Characteristics.
    attributes.put(BLE_SHIELD_TX, "BLE Shield TX");
    attributes.put(BLE_SHIELD_RX, "BLE Shield RX");
}

public static String lookup(String uuid, String defaultName) {
    String name = attributes.get(uuid);
    return name == null ? defaultName : name;
}

BLE Service:

public void writeCharacteristic() {
    BluetoothGattCharacteristic  characteristic=null;

    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    if (UUID_BLE_SHIELD_TX.equals(characteristic.getUuid())) {

        String ident="I";
    byte[] arr={1};
    try {
        characteristic.setValue(arr);
    } catch (NullPointerException e){Log.w(TAG,"sth is wrong");}
    mBluetoothGatt.writeCharacteristic(characteristic);

Ошибка LogCat:java.lang.NullPointerException: попытка вызвать виртуальный метод int android.bluetooth.BluetoothGattCharacteristic.getProperties () для нулевой ссылки на объект

Характеристика равна нулю

...