我希望在我的 Android 应用程序中收到通知,我有几个特征(都在一项服务下)。当我为其中一个设置通知描述符时,它运行良好。我知道必须使用某种队列或延迟来接收多个通知,但我不明白如何在我的代码中实现它。我在这个站点的 Android 文档上也找不到任何示例,或者其他解释如何实现的示例。
这是我尝试创建的用于设置服务通知的代码:
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
for (BluetoothGattCharacteristic characteristic: gatt.getService(UUID.fromString("00001826-0000-1000-8000-00805f9b34fb")).getCharacteristics()) {
gatt.setCharacteristicNotification(characteristic, true);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
gatt.writeDescriptor(descriptor);
}
}
}
这是我在应用程序中设置文本以匹配刚刚更改的特征值的功能:
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
super.onCharacteristicChanged(gatt, characteristic);
TextView instructionText = getView().findViewById(R.id.instructionText);
if(showMeasurements) {
instructionText.setText(characteristic.getStringValue(0));
}
}
我考虑尝试的另一种方法是创建一个列表List<BluetoothGattCharacteristic> chars = new ArrayList<>();
并添加我在此列表中找到的每个特征。然后我可以尝试一个一个地编写通知描述符,但我似乎也无法实现这一点。
我是一名大学生,不熟悉Android开发等功能。任何有关如何解决此问题的帮助将不胜感激。谢谢你。