我正在尝试确定使用蓝牙低功耗与支持BLE的设备进行通信的应用程序出了什么问题。令人抓狂的部分是,问题只出现在某些设备上,例如来自Europa的Motorola Moto G3和来自中国的Samsung S5,而它与Europa的三星S5,Europa的HTC One M7和中国的MI W3都能正常工作。
当它不起作用时,一切都在成功写入描述符后停止,因为从不调用相应的onDescritorWrite(...)回调。据推测,它与未能设置加密有关(下面的完整日志):
W/bt-btif (18797): btif_gatt_set_encryption_cb() - Encryption failed (1)
我已经通过了通常的事情,比如确保蓝牙事件被发布到主线程上的处理程序,现在我需要新的想法来尝试解决这个问题...
我的日志捕获命令:
adb logcat | grep 'BLEService\|BluetoothGatt\|BtGatt\|bt\-'
日志输出:
D/BtGatt.GattService(18797): registerClient() - UUID=9a90904a-84e8-4f30-9b10-de78ac49f236
D/BtGatt.GattService(18797): onClientRegistered() - UUID=9a90904a-84e8-4f30-9b10-de78ac49f236, clientIf=5
D/BtGatt.GattService(18797): start scan with filters
D/BtGatt.ScanManager(18797): handling starting scan
D/BtGatt.GattService(1