#android #bluetooth #bluetooth-lowenergy
#Android #bluetooth #bluetooth-низкое энергопотребление
Вопрос:
Может кто-нибудь, пожалуйста, помогите.
Я разрабатываю приложение с низким энергопотреблением Bluetooth, работы выполнены:
- Устройства сканируют
- Подключение устройства
- Запись на удаленное устройство Raspberry Pi
Удаленное устройство имеет идентификатор службы:
6e400001-b5a3-f393-e0a9-e50e24dcca9e
Запись строк:
6e400002-b5a3-f393-e0a9-e50e24dcca9e
Строка уведомления равна:
6e400003-b5a3-f393-e0a9-e50e24dcca9e
Все вышеперечисленные пользовательские службы, хорошо работающие на IOS и Android, выполняются вместо прослушивания уведомлений удаленного устройства.
Я могу писать с помощью: gatt.writeCharacteristic(characteristicWrite);
Я могу включить уведомление с помощью:
gatt.setCharacteristicNotification(characteristicNotify, true);
Но когда я пытаюсь получить дескриптор, дескриптор всегда равен нулю.
Я пытался:
- UUID uuid = UUID.fromString(«00000001-0000-1000-8000-00805f9b34fb»); дескриптор BluetoothGattDescriptor = characteristic.getDescriptor(uuid);
- UUID uuid = UUID.fromString(«00002902-0000-1000-8000-00805f9b34fb»); дескриптор BluetoothGattDescriptor = characteristic.getDescriptor(uuid);
- UUID uuid = convertFromInteger(0x2902); дескриптор BluetoothGattDescriptor = characteristic.getDescriptor(uuid);
- UUID.fromString(«6e400003-b5a3-f393-e0a9-e50e24dcca9e»);
- UUID.fromString(«6e400002-b5a3-f393-e0a9-e50e24dcca9e»);
- 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 я не могу получать уведомления.
Извините за мой английский.
Ответ №1:
Я нашел свой ответ после двухдневных исследований. Пожалуйста, смотрите справочное приложение для тестирования любого устройства BLE. Приложение запрашивает MTU для изменения, а затем включает уведомление.
Мои шаги по записи и прослушиванию уведомлений приведены ниже: сначала я устал запрашивать MTU, а затем записывать значение уведомления. После первой попытки с помощью токена уведомления дескриптор записывается успешно. После этого шага я могу писать и слушать с данного устройства. Я могу быть любым, кто сталкивается с такой же проблемой, поэтому, пожалуйста, рассмотрите приведенное выше приложение и проверьте журналы приложений. Каждый шаг будет понятен для данного приложения.