Возможно ли взломать поддержку периферийного режима BLE в Android?
Это сообщение в блоге от radius networks обсуждает, как устройства Android не могут пока использоваться в качестве iBeacons (AKA: BLE peripheral mode), даже если аппаратное обеспечение устройства поддерживает BLE, потому что Android не имеет API для BLE peripheral mode.
Примечание: BLE означает Bluetooth с низкой энергией
Прочитав этот раздел, я собираюсь предложить что-то глупое
Поскольку их SDK поддерживает только центральную роль, "реклама" a сервис как центральный сервер означает сидят свои тихо, только раскрывая (или" рекламируя") свои сервисные характеристики другому устройство в периферийном режиме после того, как соединение уже установлено. Для установления такого соединения требуется другое устройство, чтобы выполнить фактическое сначала радиореклама. Samsung SDK не собирается этого делать.
Можно ли обмануть устройство в Центральном режиме (телефон Samsung), думая, что другое устройство в периферийном режиме установило соединение с ним, а затем получить центральный режим для "рекламы". Можно ли обмануть телефон, подделав соединение в программном обеспечении?
Вероятно, глупая идея, возможно, можно обмануть устройство в Центральном режиме, но "реклама" не является рекламой BLE периферийного режима и не будет напоминать iBeacon в периферийном режиме.
Мне очень нужна поддержка периферийного режима BLE от Android, и на данный момент я был бы в порядке с взломом чего-то, в надежде, что Android в конечном итоге поддержит это набор функций, который, кстати, уже является запросом функций
1 ответ:
Я не думаю, что эта техника будет работать, даже если можно "обмануть" Android, думая, что у него есть соединение с другим устройством BLE. Хотя этот вопрос касается Samsung BLE SDK, я думаю, что тот же ответ применим к выделенным API Android BLE (
android.bluetooth.BluetoothAdapter
), которые поставляются начиная с Android 4.3.Давайте на минуту отложим в сторону хитрость-даже если Android на самом деле имеет соединение с другим устройством BLE, вы можете сделать его рекламным? Если по "рекламе" вы имеете в виду, раскрывая свои услуги другому устройству, ответ-да. Но эта радиопередача идет по частному каналу между двумя устройствами и не может быть принята сканированием BLE таким же образом, как реклама iBeacon. На самом деле это вовсе не реклама-именно поэтому я сказал в блоге, что документация Samsung вводит в заблуждение. Так что если вы не можете сделать это с реальным соединением, то обман соединения также не будет работать.
Мое понимание стеки bluetooth ограничены, но я думаю, что фактические рекламные объявления радиопередач, которые сканируют, контролируются аппаратным чипсетом BLE, что означает, что вы должны иметь доступ к частям стека bluetooth, которые говорят аппаратному обеспечению, чтобы это произошло. Я не думаю, что в Samsung BLE SDK или Android SDK есть что-то, что намеренно позволяет это.
Альтернативой может быть выполнение прямых вызовов JNI к стеку BlueDroid. Я не уверен, что разрешения Android позволяют это, или если реклама даже реализована в стеке BlueDroid.
Обновление: передавая как методами теперь можно в Android 4.4.3 и Android л. смотрите здесь.