Требование местоположения для сканирования устройств BLE

Сканирование BLE столкнулось с заметной разницей между Marshmallow и требованием включения устройства. Технически, я не вижу веской причины, по которой местоположение должно было бы сканировать устройства BLE. Почему это было сделано Google?

1 ответ

Решение

Q: Почему это было сделано Google?

A: Поскольку BLE-сканирование обычно используется для определения местоположения пользователя с помощью маяков Bluetooth LE.

Я обсуждал это с инженерами Google на сессии вопросов и ответов на Google I/O 2015, когда изменения еще не были опубликованы. В то время меня беспокоило то, что мне нужно было запрашивать разрешения администратора Bluetooth LE для сканирования радиомаяков. Для меня это было проблемой, потому что пользователи понимали, что моему приложению нужно найти местоположение пользователя, но не понимали, зачем ему нужно администрировать Bluetooth.

Инженеры ответили, что разрешение на местоположение (и местоположение на) потребуется для этого в Android M, чтобы сделать это более понятным для пользователей. К сожалению, с моей точки зрения, разрешение администратора по-прежнему требуется по историческим причинам.

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

Почему одна и та же логика разрешений местоположения не применяется к сканированию WiFi или Bluetooth Classic (оба варианта допускают одно и то же), менее понятно. Возможно, просто Google готовился присоединиться к игре маяков Bluetooth LE со своим стандартом Eddystone.

Исправление: для сканирования WiFi требуется разрешение на местоположение.

Другие вопросы по тегам