Android - Какой API можно использовать, чтобы увидеть, поддерживает ли устройство центральный режим BLE? - PullRequest
0 голосов
/ 06 декабря 2018

https://developer.android.com/guide/topics/connectivity/bluetooth-le#roles

Центральный и периферийный.Это относится к самому соединению BLE.Устройство в центральной роли сканирует, ищет рекламу, а устройство в периферийной роли делает рекламу.

Чтобы проверить, поддерживает ли устройство режим «периферия» / реклама, оно выглядит так, как будто я могуuse getBluetoothLeAdvertiser ()

getBluetoothLeAdvertiser

добавлен в API уровня 21 public

BluetoothLeAdvertiser getBluetoothLeAdvertiser () Возвращает объект BluetoothLeAdvertiser для операций Bluetooth LE Advertising.Возвращает ноль, если Bluetooth выключен или Bluetooth LE Advertising не поддерживается на этом устройстве.

Используйте isMultipleAdvertisingSupported (), чтобы проверить, поддерживается ли LE Advertising на этом устройстве, перед вызовом этого метода.

Теперь я слышал некоторые слухи о том, что некоторые устройства могут на самом деле дать вам BluetoothLeAdvertiser, но вернуть false на isMultipleAdvertisementSupported(), что само по себе является другой проблемой, но в центре внимания, документы не говорят что-нибудь!

Я что-то упустил?https://developer.android.com/reference/android/bluetooth/BluetoothAdapter ничего не говорит о центральном режиме.Я что-то упустил здесь?Спасибо за любую помощь.Я слышал, что Bluetooth - это проблема для Android, и я впервые изучаю эти API.

1 Ответ

0 голосов
/ 06 декабря 2018

Краткий ответ

Как отметил DigitalNinja, телефон Android всегда будет поддерживать центральную функцию по умолчанию, поэтому, если ваш телефон поддерживает BLE, он определенно может работать в центральной роли.

Длинный ответ

Вы правы, API может быть не простым, но это связано с тем, как Bluetooth Low Energy (BLE) API был добавлен в Androidи даже до истории самой технологии BLE.

Когда BLE был впервые представлен, он был предназначен только для датчиков (например, термометр, частота сердечных сокращений, близость и т. д.) и устройств, которые взаимодействуют с этими датчиками.Датчики были периферийными устройствами в этом случае, а устройства, которые общаются с этими датчиками, являются центральными .Периферийные устройства были настоящими устройствами с низким энергопотреблением (LE), так как они просто рекламировали и отправляли данные время от времени.Центральные устройства, с другой стороны, не будут очень энергоэффективными, так как им придется постоянно сканировать устройства, подключаться к этим устройствам и нести ответственность за поддержание и мониторинг этого соединения, что означает, что радио будет включено гораздо дольше по сравнению ск периферийному устройству.

Когда API-интерфейс Bluetooth Low Energy (BLE) был добавлен в Android, он поддерживал только центральную роль.Другими словами, вы могли бы написать приложение Android для сканирования и подключения к периферийным устройствам (датчикам), но само устройство Android не могло выступать в качестве периферийного устройства (поскольку предполагалось, что вам не понадобится устройство Android, чтобы действовать в качестве датчика).Это было сделано в Android 4.3 (API 18) .

Поскольку люди стали чаще использовать BLE и технология стала более зрелой, она начала использоваться для всех видов различных приложений (например, для виртуальных серийных устройств).порт, передача данных, маяки и т. д.).Более того, на рынке стали появляться автономные центральные устройства, и на этапах разработки возникла необходимость использовать их с телефонами или, по крайней мере, протестировать их на телефонах / планшетах.Таким образом, различие между центральным и периферийным устройствами стало более размытым и нечетким, и возникла потребность в Android, чтобы начать поддерживать роль периферийных устройств.Это когда API BLE был обновлен для представления функциональности периферийных ролей, что произошло в Android 5.0 (API 21) .

Итак, чтобы ответить на ваш вопрос, если BLE поддерживается на устройстве Android, можно с уверенностью заявить, что оно по умолчанию будет поддерживать центральную роль, поскольку это является основой функциональности BLE для Android.Однако API был представлен позже для поддержки периферийной роли, поэтому не все устройства Android, поддерживающие BLE, будут поддерживать периферийную роль.

Наконец, обратите внимание, что isMultipleAdvertiseSupported - это другая функция, которая указывает, поддерживает ли ваше устройство отправку.из нескольких объявлений одновременно.Некоторые устройства поддерживают одновременную рассылку разных объявлений, а другие - нет.Однако это не значит, что они вообще не поддерживают рекламу.Устройство, которое поддерживает isMultipleAdvertisementSupported, безусловно, будет поддерживать BluetoothLeAdvertiser, но обратный путь не гарантирован.

В заключение, самый безопасный способ проверить, поддерживает ли ваше устройство центральную и / или периферийную роль, - этоВерсия Android и используемый уровень API, как указано двумя ссылками выше.На Android 5 (API 21) и более поздних версиях вы можете писать приложения, которые поддерживают как центральные, так и периферийные роли, тогда как до этого вы можете писать только приложения для центральной роли.

Надеюсь, это поможет.

...