Почему мне нужно включить службы определения местоположения для сопряжения с устройством Bluetooth?

16

Всякий раз, когда я пытаюсь подключить свой Samsung Galaxy S6 с Android 6.0.1 к устройству с поддержкой Bluetooth, он говорит мне включить «службы определения местоположения».

Когда я пожаловался на это, поставщик программного обеспечения ответил: «Недавние обновления API Google Android, затрагивающие технологию Bluetooth LE, требуют предоставления разрешений на местоположение для использования приложения».

Я не вижу необходимости в этом.

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

Чтобы получить доступ к аппаратным идентификаторам соседних внешних устройств через сканирование Bluetooth и Wi-Fi, ваше приложение должно теперь иметь разрешения ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION

Вопрос . Означает ли это, что утверждение поставщика программного обеспечения неверно?

GUI Junkie
источник
Система разрешений определенно полностью нарушена при реструктуризации ММ (в объяснениях говорится, что они имели в виду «маяки Bluetooth», которые можно использовать для определения вашего местонахождения). Насколько я понимаю, ваши сомнения оправданы, а утверждение поставщика неверно: приложениям необходимо разрешение для доступа к Bluetooth. Но если им понадобится служба определения местоположения, чтобы найти оборудование («поверните направо на втором паяном соединении, пройдите транзистор на затворе 3…»), я был бы удивлен. Я очень сомневаюсь, что для этого нужно включить службы определения местоположения, но у меня нет MM-устройства для проверки.
Иззи

Ответы:

6

Мое понимание Bluetooth заключается в том, что приложения, использующие Bluetooth, имеют прямой доступ к MAC-адресу устройства для сопряжения. Я приму это за этот ответ.

Если вы можете прочитать MAC-адреса передатчиков WiFi или Bluetooth, вы можете найти устройство. Вот как работает местоположение WiFi / Bluetooth; Вы слушаете MAC-адреса передатчиков и ищите их в гигантской глобальной базе данных.

Следовательно, любое приложение, использующее Bluetooth и подключение для передачи данных, теоретически может обнаружить ваше устройство. Я не уверен, что это практически возможно; Bluetooth не имеет такой же зоны действия и полупостоянной инфраструктуры доступа, как WiFi.

Требуя, чтобы службы определения местоположения имели доступ к Bluetooth, вы гарантируете, что пользователь понимает, что информация о его местонахождении может просочиться при использовании Bluetooth. В версиях Android до Marshmallow пользователь мог использовать Bluetooth без включенных служб определения местоположения, но информация о местоположении могла просочиться. В этих старых версиях вы также могли запускать сканирование WiFi, чтобы найти MAC-адреса без включенных служб определения местоположения, что снова означало, что информация о вашем местоположении может просочиться. Требование разрешить службам определения местоположения использовать Bluetooth означает, что тот, кто отключает местоположение, сохраняет свое местоположение в секрете.

Я бы охарактеризовал эту проблему как проблему дизайна, а не как ошибку. Возможно, ошибка исправима, но мне не совсем понятно, что вы можете использовать Bluetooth вообще без утечки информации о местоположении. Bluetooth был создан раньше, чем кто-либо рассматривал услуги определения местоположения через WiFi и Bluetooth.

mattm
источник
2

Поставщик верен, вам нужно включить службы определения местоположения для сканирования устройств WiFi или Bluetooth LE.

Смотрите ошибку # 185370 для деталей. Google сказал, что они исправили это в «будущем выпуске», но согласно комментариям к ошибке, это все еще не исправлено в Android 7


Изменить: Ранее я говорил, что службы определения местоположения требуются, только когда приложение, запускающее сканирование, работает в фоновом режиме. Исходный код указывает, что это верно, только если API-Target <Android M.

йомо
источник
Если это ошибка Android, почему поставщик будет прав? Они должны были ответить: «Это ошибка Android»
GUI Junkie
Можно ли связать устройство с блютузом вне приложения?
GUI Junkie
Вы спросили, является ли утверждение поставщика неверным. Это не является неправильным, вам нужно предоставить разрешения на местоположение приложения. Кроме того, из-за ошибки необходимо включить службы определения местоположения .
Джомо