Чому мені потрібно увімкнути служби локації, щоб з'єднатися з пристроєм Bluetooth?


16

Кожен раз, коли я намагаюся підключити свій Samsung Galaxy S6 з Android 6.0.1 до пристрою з підтримкою Bluetooth, воно вказує мені ввімкнути "служби локації".

Коли я поскаржився на це, постачальник програмного забезпечення відповів: "Для останніх оновлень API Google Android, що впливають на технологію Bluetooth LE, для використання програми потрібно надавати дозволи розташування".

Я не бачу потреби в цьому.

Ця дискусія говорить про це. У технічній довідці зазначено, що програми повинні мати певні дозволи , а не те, що служби локації будуть активними.

Для доступу до апаратних ідентифікаторів довколишніх зовнішніх пристроїв через сканування Bluetooth та Wi-Fi, тепер у вашому додатку повинно бути ACCESS_FINE_LOCATION або ACCESS_COARSE_LOCATION.

Питання : Чи означає це, що твердження постачальника програмного забезпечення є невірним?


Система дозволів, безумовно, повністю пов'язана з реструктуризацією MM (у поясненнях йдеться про те, що вони мали на увазі "маяки Bluetooth", які можна було б знайти для вас). Наскільки я розумію, ваші сумніви виправдані, а заява постачальника невірна: Програмам потрібен дозвіл для доступу до Bluetooth. Але якщо їм потрібна служба локації, щоб знайти апаратне забезпечення ("поверніть праворуч на друге з'єднання припою, пропустіть транзистор на воротах 3 ..."), я був би здивований. Я дуже сумніваюся, що для цього потрібно ввімкнути служби локації, але у мене немає пристрою ММ для підтвердження.
Іззі

Відповіді:


6

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

Якщо ви можете прочитати MAC адреси Wi-Fi або Bluetooth-передавачів, ви можете знайти пристрій. Так працює місце розташування WiFi / Bluetooth; ви слухаєте MAC-адреси передавачів і шукаєте їх у величезній глобальній базі даних.

Тому будь-яка програма, що використовує Bluetooth та з'єднання для передачі даних, теоретично здатна локалізувати ваш пристрій. Я не впевнений, що це практично можливо; Bluetooth не має такого ж діапазону та напівпостійної інфраструктури точки доступу, як WiFi.

Вимагаючи надання послуг локації для доступу до Bluetooth, ви гарантуєте, що користувач розуміє, що інформація про їхнє місцезнаходження може просочитися під час використання Bluetooth. У версіях Android до Маршмаллоу користувач міг використовувати Bluetooth без ввімкнених служб локації, але інформація про місцезнаходження могла просочитися. У цих старих версіях ви також можете запустити сканування Wi-Fi, щоб знайти MAC-адреси без включених служб локації, що знову ж таки означало, що інформація про ваше місцезнаходження може просочитися. Вимога дозволити службам локації користуватися Bluetooth полягає в тому, щоб той, хто вимкнув місцезнаходження, зберігав приватне місцезнаходження.

Я б охарактеризував це питання як проблему дизайну, а не помилку. Імовірно, помилка може бути виправлена, але мені незрозуміло, що ви можете використовувати Bluetooth взагалі без потенційного протікання інформації про місцезнаходження. Bluetooth був створений раніше, ніж хтось розглядав послуги Wi-Fi та локації Bluetooth.


2

Постачальник правильний, вам потрібно включити послуги локації для сканування на Wi-Fi або Bluetooth LE-пристрої.

Детальну інформацію див. У програмі помилка №185370 . Google заявив, що вони виправили це у «майбутньому випуску», але згідно з коментарями про помилку, вона все ще не виправлена ​​в Android 7.


Редагувати: я раніше казав, що послуги локації потрібні лише тоді, коли програма, яка починає сканування, працює у фоновому режимі. Вихідний код вказує, що це справедливо лише в тому випадку, якщо ціль API - <Android M.


Якщо це помилка Android, чому б постачальник був правильним? Вони мали відповісти: "Це помилка Android"
GUI Junkie

Чи можливо зв’язати пристрій через Bluetooth за межами програми?
GUI Junkie

Ви запитали, чи твердження постачальника невірно. Це невірно, потрібно надати програмі дозволи на місцезнаходження . Крім того, через помилку потрібно включити послуги локації .
jomo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.