扫描BLE设备的位置要求

问题描述:

BLE扫描面临着显着差异棉花糖随着设备位置的要求开启。从技术上讲,我没有看到为什么需要位置扫描BLE设备的正当理由。为什么这是由Google完成的?扫描BLE设备的位置要求

+0

相关:http://*.com/questions/33043582/bluetooth-low-energy-startscan-on-android-6-0-does-not-find-devices和https://code.google.com/p/android/issues/detail?id = 189090和https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id –

+0

Thanks @MorrisonChang!我已经通过这些线程。 –

问:为什么Google这样做? A:因为BLE扫描通常用于通过蓝牙LE信标确定用户的位置。

我在Google I/O 2015的一次会议上与Google工程师讨论了此问题,但仍未发布变更。当时,我担心的是不得不要求Bluetooth LE管理员权限扫描位置信标。对我而言,这是一个问题,因为用户明白我的应用需要查找用户的位置,但不明白为什么需要管理蓝牙。

工程师的回应是,需要位置权限(和位置)才能在Android M中执行此操作,以便更清楚地向用户说明。不幸的是,从我的观点来看,由于历史原因,蓝牙管理员权限仍然需要。

你当然可以不同意Google的决定。但推理很清楚。如果应用程序可以扫描蓝牙设备并可以读取其MAC地址或其他标识符,则还可以确定用户的位置,前提是应用程序开发人员知道这些扫描设备中的某些设备位于何处。

为什么相同的位置权限逻辑不适用于扫描WiFi或Bluetooth Classic(两者都允许相同的事情)不那么清晰。也许只是Google正准备加入他们的Eddystone标准的蓝牙LE灯塔游戏。

+0

我可以找到这个:要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限: –

+0

这是上述语句的链接:https://developer.android .com/about/versions/marshmallow/android-6.0-changes.html这意味着同样的权限逻辑也被应用于wifi扫描。我的感受是,用户很难解释这种用例对位置和蓝牙的要求。两个权限中的任何一个最初都会被用户撤销。此外,由于应用程序开发人员已经安装了自己的设备来跟踪用户的位置,因此他可以利用这些设备。 –

+1

我完全同意你的观点,这是谷歌走向灯塔游戏的一步。事实上,我相信,Google计划了解开发人员安装的每个信标,并将其用于自己的利益(跨产品链)。就像我们开发人员正在为Google的精确位置跟踪项目工作一样。 –