Android BluetoothDevice: получить тип сопряженного устройства, когда Bluetooth Low Energy

Вот в чем проблема. Пользователь запускал мое приложение ранее, обнаружил и соединил его с медицинским устройством Bluetooth с низким энергопотреблением. Это все, с чем работает приложение, — это медицинские устройства. Я отслеживаю это устройство, поэтому приложение может автоматически повторно подключаться к этому устройству, пока приложение работает.

Если пользователь выходит из приложения или выключает и снова включает Android и перезапускает приложение, я хотел бы настроить автоматическое повторное подключение к этим сопряженным устройствам. В классическом использовании HDP это делается автоматически Android. В БТЛЭ такого нет! Итак, что мне нужно сделать, это просмотреть список сопряженных устройств и добавить их в мой список известных устройств.

Но вот проблема. В BTLE нет способа узнать, что это за устройство. Когда я проверяю BluetoothDevice.getBluetoothClass().getDeviceClass() или .getMajorDeviceClass(), все они дают один и тот же результат: 0x1F00, что означает «БЕЗ КАТЕГОРИИ». Поэтому, если кто-то подключил наушники BTLE, я включу их в свой список.

Есть ли способ получить класс или категорию устройства BTLE, не сохраняя кучу вещей в файл самостоятельно? Сохранение адресов BT не будет работать, поскольку устройства BTLE могут использовать случайную адресацию (хотя большинство из них этого не делают).


person Brian Reinhold    schedule 13.04.2018    source источник


Ответы (1)


Ненавижу это говорить, но я пришел к выводу, что нет никакого способа... поэтому я должен сделать это сам. Когда пользователь моего приложения принимает сопряжение устройства, я сохраняю его понятное имя и сохраняю его в общих настройках. Я думал о сохранении адреса, но адреса BTLE могут быть разрешимыми частными адресами, поэтому я отказался от этой мысли. Я был слишком ленив, чтобы сериализовать объект BluetoothDevice и сохранить его, но это, вероятно, было бы самым надежным.

При повторном подключении просто сверяйте каждое сопряженное устройство (сохраненное ОС Android) с моим сохраненным списком и, если они совпадают, запускайте отложенное подключение к устройству. Это работает, но кажется удручающе низкотехнологичным. По крайней мере, я не запускаю ожидание подключения наушников.

Если я использую подход сканирования вместо подхода ожидания подключения для решения проблемы повторного подключения, я просто добавляю сопряженное устройство в список известных устройств.

Если у кого-то есть лучшее решение, пожалуйста, напишите!!

person Brian Reinhold    schedule 19.05.2018