我有个蓝牙设备,在Android4.3系统上onCharacteristicChanged回调成功而且可以读取数据
,但是在5.0 以上的机器上onCharacteristicChanged 不回调;onCharacteristicWrite和onCharacteristicRead都成功了。
这是为什么呢?
Android 5.0 以上,onCharacteristicChanged不回调
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Mr康 2017-03-20 07:02关注
1、在创建某个特征值A时,一定记得设置该特征值为PROPERTY_NOTIFY;例如:如下标红位置
A = new BluetoothGattCharacteristic(UUID.fromString(NOTICE), BluetoothGattCharacteristic.PROPERTY_WRITE|
BluetoothGattCharacteristic.PROPERTY_READ|BluetoothGattCharacteristic.PROPERTY_NOTIFY, BluetoothGattCharacteristic.PERMISSION_WRITE|BluetoothGattCharacteristic.PERMISSION_READ);
2、在中心设备上在发现A特征值时要设置:bluetoothGatt.setCharacteristicNotification(A,,true);表示该特征值可以接收通知;
3、在外设中,当A的值改变时要通过bluetoothGattServer.notifyCharacteristicChanged(device,A,false)发送通知;可以在onNotificationSend中查看通知是否发送成功;
4.最后在中心设备的onCharacteristicChanged中查看是否有回调;如果以上几个步骤都完成的话,应该是可以收到回调的,若再收不到回调,则可能是第2步设置的有问题,可以查看一下第2步是否返回true,依次查看后面几步是否有问题;
解决 1无用