Я пытаюсь установить связь с моим модулем 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.