Есть ли какой-либо умный способ для приложения, установленного на двух устройствах, расположенных близко друг к другу, чтобы распознавать себя через Bluetooth без каких-либо вопросов пользователю? Обратите внимание, что я не говорю о передаче данных или какой-либо другой операции, я просто хочу знать (точно), что это конкретное устройство близко ко мне (например, простой общий идентификатор или аппаратный адрес будет достаточно большим).Обнаруживать присутствие Android устройства через Bluetooth
Важно: он должен работать с Android 4.4 до Android 6, так что это означает, что:
- Мы не можем полагаться на BluetoothLeAdvertiser, потому что это только из API 21.
- Мы не можем полагаться на BluetoothAdapter Распознавание адреса Mac, потому что it is now broken and randomized из API 23.
Благодарим вас за отзыв. Действительно, похоже, что мы должны забыть использовать Bluetooth LE. Другой способ сделать это - обнаружить любую периферию Bluetooth (классический способ, без LE) ... это было возможно до тех пор, пока Android M не сломает его: есть ли уловка, чтобы обойти тот факт, что API 23 рандомизирует рекламируемый MacAddress телефона? – JBA
@JBA это любопытно. Я думал, что рандомизация MAC-адреса выполняется только в LE и с API 21, как описано здесь: http://stackoverflow.com/questions/30975466/android-bluetooth-le-mac-address-randomization. Я считаю, что это не так в Bluetooth Classic, иначе это сломает пурпуру спаривания классического Bluetooth, в то время как в LE не требуется спаривание :) – Mackovich
Вы правы, это любопытно ... могут быть некоторые тонкие детали Я не заметил, что [документация] (https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id) не совсем понятна в BT classic/BT LE ... Я проведу некоторые тесты на своих устройствах и вернусь сюда позже с результатами ... – JBA