2

Есть ли какой-либо умный способ для приложения, установленного на двух устройствах, расположенных близко друг к другу, чтобы распознавать себя через Bluetooth без каких-либо вопросов пользователю? Обратите внимание, что я не говорю о передаче данных или какой-либо другой операции, я просто хочу знать (точно), что это конкретное устройство близко ко мне (например, простой общий идентификатор или аппаратный адрес будет достаточно большим).Обнаруживать присутствие Android устройства через Bluetooth

Важно: он должен работать с Android 4.4 до Android 6, так что это означает, что:

  1. Мы не можем полагаться на BluetoothLeAdvertiser, потому что это только из API 21.
  2. Мы не можем полагаться на BluetoothAdapter Распознавание адреса Mac, потому что it is now broken and randomized из API 23.

ответ

0

Android API 21 добавлен профиль низкой энергии Bluetooth в Перифале, чтобы устройство Android могло выступать в качестве маяка или обеспечивать полностью работающий сервер Gatt.

Ниже приводится перечень устройств, которые являются аппаратно-совместимыми (что вполне ограничение) ->https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html

Так что я боюсь, что теперь способ сделать это в LE в KitKat.

И поскольку список устройств довольно мал, и множество устройств enabld-LE от Jelly Bean и KitKat (например, Samsung Galaxy Note 3) не способны рекламировать на аппаратном уровне, это не сработает для вас ,

+0

Благодарим вас за отзыв. Действительно, похоже, что мы должны забыть использовать Bluetooth LE. Другой способ сделать это - обнаружить любую периферию Bluetooth (классический способ, без LE) ... это было возможно до тех пор, пока Android M не сломает его: есть ли уловка, чтобы обойти тот факт, что API 23 рандомизирует рекламируемый MacAddress телефона? – JBA

+0

@JBA это любопытно. Я думал, что рандомизация MAC-адреса выполняется только в LE и с API 21, как описано здесь: http://stackoverflow.com/questions/30975466/android-bluetooth-le-mac-address-randomization. Я считаю, что это не так в Bluetooth Classic, иначе это сломает пурпуру спаривания классического Bluetooth, в то время как в LE не требуется спаривание :) – Mackovich

+0

Вы правы, это любопытно ... могут быть некоторые тонкие детали Я не заметил, что [документация] (https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id) не совсем понятна в BT classic/BT LE ... Я проведу некоторые тесты на своих устройствах и вернусь сюда позже с результатами ... – JBA

Смежные вопросы