Я делаю приложение, которое должно разговаривать с устройствами BLE на Android.Android BLE, Не удается подключиться к устройству
У меня проблемы с установлением соединения с устройством BLE.
Случай 1) Сканирование: Во время сканирования после устройство было обнаружено и сообщается через
BluetoothLEScanCallback.onScanResult(...)
Я пытаю Подключаться через:
result.getDevice().connectGatt(...)
проблема на некоторых устройствах Я тестирую это (а именно HTC One M8 под управлением Android 5.0.1 и HTC Desire 516 под управлением Android 4.3), процесс соединения, похоже, не работает, т.е. обратный вызов
BluetoothGattCallback.onConnectionStateChange(....)
просто не называют большую часть времени. Теперь это не последовательное поведение, иногда иногда это не так.
Вторая проблема заключается в том, что часто, если соединение установлено вызов
BluetoothGatt.discoverServices()
не удается, т.е. BluetoothGattCallback.onServicesDiscovered (...) также не называется. Я попробовал повторить вызов несколько раз с интервалом в X миллисекунд, но он, похоже, постоянно терпит неудачу, независимо от количества попыток или промежутков между ними.
Случай 2 Прослушивание
Довольно много то же самое происходит, когда я пытаюсь просто «слушать» для устройства, снова вызывая
BluetoothDevice device = BluetoothManager.getAdapter().getRemoteDevice(macAddress);
device.connectGatt(...)
результаты часто в одной и той же ситуации.
В обоих случаях у меня проблема с Android в большинстве случаев, у меня есть устройство Nexus 5, на котором этот самый код работает по большей части (иногда стек BT, похоже, не выполняет свою работу) Чуть больше беспокоит то, что приложение iOS, которое у нас есть, не имеет ни одной из этих проблем.
Неужели кто-нибудь столкнулся с этими проблемами? Любые идеи, как их решить?
Вы тестируете логический результат BluetoothGatt.discoverServices()? –
Да, я проверяю его, и у меня есть политика повторных попыток, если BTLE «занят» и не хочет принимать вызов. –