最近在做android手机与蓝牙节点之间的通信,手机作为Master,Android版本为4.4.2,蓝牙节点作为Slave,基于TI官方的SimplePeripheral例程。想利用char4的noyify功能,在手机端进行相应设置,手机连接上蓝牙节点之后,在蓝牙节点端修改char4的值,手机端无法收到char4改变的通知。手机端配置如下:
public void onServicesDiscovered(final BluetoothGatt gatt, int status) { super.onServicesDiscovered(gatt, status); BluetoothGattService service = gatt.getService(UUID.fromString(GattConstants.SERVICE_UUID)); BluetoothGattCharacteristic characteristic_4 = service.getCharacteristic(UUID.fromString(GattConstants.CHARACTERISTIC_UUID_4)); setCharIndication(characteristic_4, true); } public void setCharIndication(BluetoothGattCharacteristic characteristic, boolean isEnabled){ if (bluetoothGatt != null){ bluetoothGatt.setCharacteristicNotification(characteristic, isEnabled); BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString(GattConstants.CLIENT_CHARACTERISTIC_CONFIG)); descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); bluetoothGatt.writeDescriptor(descriptor); } }
有遇到过类似问题的吗?谢谢!
Susan Yang:
你可以参考追踪一下DeviceActivity.java 文件里面的 private void enableNotifications(boolean enable) 函数,这个就是会使能远端的notification, 这里的远端用的是TI的sensortag,但足以参考,另外,还是在DeviceActivity.java 中,追踪一下 private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() 中的 else if (BluetoothLeService.ACTION_DATA_NOTIFY.equals(action)) , 这是在你用上面的函数使能了对方notifidation之后, 收到对方notification发过来的数据,就是之后的动作。
Q C:
回复 Susan Yang:
我对照了一下,使能远端的notification设置是一样的,但是我收不到对方的notification通知,所以也就没有之后的数据处理动作。不过,还是谢谢您的回答。