Я работаю над приложением, которое должно взаимодействовать с устройством Bluetooth LE.
Это код, который я использую для установки CharacteristicNotification
public boolean setCharacteristicNotification(
BluetoothGattCharacteristic characteristic, boolean enable) {
if(mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return false;
}
Log.v(TAG, "setCharacteristicNotification(): uuid=" + characteristic.getUuid() + " enabled=" + enable);
boolean notifications = mBluetoothGatt.setCharacteristicNotification(characteristic, enable);
if(notifications) {
Log.v(TAG, "setCharacteristicNotification(): Notifications are enabled");
}
else {
Log.w(TAG, "setCharacteristicNotification(): Notifications are not enabled for characteristic " + characteristic);
}
BluetoothGattDescriptor desc = characteristic.getDescriptor(
UUID.fromString(FBGattAttributes.CHARACTERISTIC_CLIENT_CONFIG));
desc.setValue(enable ?
BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE :
new byte[]{0x00, 0x00}
);
boolean ok = mBluetoothGatt.writeDescriptor(desc);
if(ok){
Log.v(TAG, "wrote descriptor value for notification: ok=" + ok);
}else{
Log.w(TAG, "writeDescriptor failed: we will not get notifications=" + ok);
}
return ok;
}
Вот в этом коде "mBluetoothGatt.writeDescriptor(desc);" иногда возвращает false, поэтому я не могу получать уведомления от BluetoothGatt. Я не уверен, как решить эту проблему.
Эта проблема была только на LG G2 с ОС 5.02, до этого была 4.4 Проблема была не так часто, но после обновления у меня каждый раз получалось "false", кроме первого раза. Если мы попытаемся установить уведомления в первый раз после подключения, оно сработает, и как только я отключусь и попытаюсь подключиться, оно всегда будет возвращать False. Мне нужно убить и перезапустить приложение, чтобы оно снова заработало. Кто-нибудь знает, почему это не работает? заранее спасибо