繁体   English   中英

Android BLE(蓝牙 Gatt 描述符)总是 null

[英]Android BLE (Bluetooth Gatt Descriptor) always null

任何人都可以帮忙。

我正在开发一个蓝牙低功耗应用程序工作已完成:

  1. 设备扫描
  2. 设备连接
  3. 写入远程设备 Raspberry Pi

远程设备具有服务 ID:

6e400001-b5a3-f393-e0a9-e50e24dcca9e

写字符串是:

6e400002-b5a3-f393-e0a9-e50e24dcca9e

通知字符串是:

6e400003-b5a3-f393-e0a9-e50e24dcca9e

以上所有自定义服务在 IOS 和 Android 上都运行良好,而不是监听远程设备通知。

我可以写: gatt.writeCharacteristic(characteristicWrite);

我可以启用通知:

gatt.setCharacteristicNotification(characteristicNotify, true);

但是当我尝试获取描述符时,描述符总是 null。

我试过:

  1. UUID uuid = UUID.fromString("00000001-0000-1000-8000-00805f9b34fb"); BluetoothGattDescriptor 描述符 = characteristic.getDescriptor(uuid);
  2. UUID uuid = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"); BluetoothGattDescriptor 描述符 = characteristic.getDescriptor(uuid);
  3. UUID uuid = convertFromInteger(0x2902); BluetoothGattDescriptor 描述符 = characteristic.getDescriptor(uuid);
  4. UUID.fromString("6e400003-b5a3-f393-e0a9-e50e24dcca9e");
  5. UUID.fromString("6e400002-b5a3-f393-e0a9-e50e24dcca9e");
  6. UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e");

在所有情况下,描述符都返回 null,我无法设置描述符通知值。

服务器人员告诉服务器设备上未配置描述符值,同一设备在 IOS 上工作正常但在 Android 上未收到通知。

我用这个应用程序测试了相同的设备:
https://play.google.com/store/apps/details?id=no.nordicsemi.android.nrftoolbox
我可以借助此应用程序接收通知。
上面的应用监听:00002902-0000-1000-8000-00805f9b34fb 用于描述符
但是使用相同的 UUID 我无法收到通知。

对不起我的英语不好。

经过两天的研究,我找到了答案。 请参阅参考应用程序以测试任何 BLE 设备。 应用更改请求 MTU,然后启用通知。

我编写和收听通知的步骤如下:首先,我厌倦了请求 MTU,然后写入通知值。 在通知令牌的帮助下第一次尝试后,描述符被成功写入。 在那一步之后,我可以用给定的设备写和听。 我是任何面临同样问题的人,所以请考虑上面给出的应用程序并检查应用程序日志。 给定的应用程序将清楚每一步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM