Android BLE onCharacteristicChanged not called



我正在做一个项目,其中包括一个Bluegiga BLE113模块和一个Android应用程序。在Bluegiga模块上,我设置了几个特性。对于一个特征,我定义了一个描述符来激活客户端通知(在我的例子中,客户端是Android应用程序)。BLE113模块的特征定义如下所示:

:
<characteristic uuid="dcfa2671-974d-4e4a-96cd-6221afeabb62" id="ez1_flow_data_out">
  <!-- org.bluetooth.descriptor.gatt.characteristic_user_description -->
  <description>Data to transmit to Android device</description>
  <properties write="true" read="true" />
  <value variable_length="true" length="255" type="hex" />
  <!-- org.bluetooth.descriptor.gatt.client_characteristic_configuration -->
  <descriptor uuid="2902">
    <properties write="true" read="true" const="false" />
    <!-- Bit 0 = 1: Notifications enabled -->
    <value type="hex">0001</value>
    </descriptor>
:
:
</characteristic>

在Android端,我已经根据Android蓝牙低功耗指南在onServicesDiscovered(...)回调中设置了通知:

characteristic = gatt.getService(BLEuuids.DATAFLOW_SERVICE).getCharacteristic(BLEuuids.DATAFLOW_OUT_CHARACT);
//Enable local notifications
gatt.setCharacteristicNotification(characteristic, true);
//Enabled remote notifications
BluetoothGattDescriptor desc = characteristic.getDescriptor(BLEuuids.DATAFLOW_OUT_DESCRIPT);
boolean test;
test = desc.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);  // return value = true
test = gatt.readDescriptor(desc);  // return value = true
test = gatt.writeDescriptor(desc);  // return value = true

然而,如果我改变dataflow_out_character特征UUID的值,使用Bluegiga模块的串行接口,预期的回调onCharacteristicChanged(...)不会在我的Android应用程序上触发。

尽量不要读取描述符。一定要在set之后写描述符。正确的读将覆盖你的集合,你写回相同的值?

相关内容

  • 没有找到相关文章

最新更新