BluetoothLeGatt
Android BLE 示例包含以下代码:
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
boolean enabled) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
// This is specific to Heart Rate Measurement.
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
}
}
我的问题基本上是,为什么标记代码特定于心率测量?似乎拥有客户端特征配置描述符(CCCD)特征是控制特征通知的标准方式,那么为什么不setCharacteristicNotification()
考虑写入它呢?既然它不这样做,那么setCharacteristicNotification()
实际上做了什么?
我对 BLE 很陌生,互联网上没有任何关于它的解释,不假设你已经理解了这一切!所以不要以为我知道什么是 CCCD 或其他什么!很难找出 CCCD 甚至代表什么!
编辑:另请参阅此答案,它支持我对 CCCD 的理解(并且让我继续想知道为什么当有一个看起来应该为您执行此操作的功能时,您必须在 Android 中手动写入它们): https://devzone .nordicsemi.com/index.php/what-does-cccd-mean