Ошибка настройки уведомлений BLE на Android - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь установить связь с моим модулем Laird BL652 BLE. До сих пор я получил UUID для RX и TX для vSP (виртуальный последовательный протокол), и я могу успешно отправлять данные в модуль, однако я хочу, чтобы модуль отправлял мне данные обратно после отправки определенного символа.

У меня есть это в моей основной деятельности:

mBluetoothLeService.setCharacteristicNotification(characteristicRX, true);

Это код в библиотеке Google BluetoothLeService, который устанавливает характеристическое уведомление

/**
 * Enables or disables notification on a give characteristic.
 *
 * @param characteristic Characteristic to act on.
 * @param enabled If true, enable notification.  False otherwise.
 */
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
                                          boolean enabled) {
    if (mBluetoothAdapter == null || mBluetoothGatt == null) {
        Log.w(TAG, "BluetoothAdapter not initialized");
        return;
    }
    mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);

    BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
            UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
    descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
    mBluetoothGatt.writeDescriptor(descriptor);
}

Проблема в том, что когда я устанавливаю характерное уведомление, мое приложение вылетает и выдает эту ошибку:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.a.a.BluetoothLeService.setCharacteristicNotification(android.bluetooth.BluetoothGattCharacteristic.boolean)' on a null object reference

Кроме того, я попытался установить дескриптор в своей основной деятельности, но он говорит, что mBluetoothLeService.writeDescriptor (дескриптор) не распознается, даже если я импортировал android.bluetooth.BluetoothGattDescriptor.

...