我们公司开发蓝牙设备,在安卓版本 6.0 以上,必须要允许定位功能,才能连接成功。谷歌官方好像有说明,但是对于客户来说,不可思议。我不是做安卓开发的,请问大家有遇到这样的情况,并且是怎么解决的呢?
1
Havee 2017-11-02 17:45:19 +08:00
室内定位......
|
2
hn 2017-11-02 17:48:42 +08:00 via Android
杀个 Android 程序员祭天…
|
3
phy25 2017-11-02 19:47:07 +08:00 via Android
连 BLE 就是这样,可能是 Android 认为 BLE 包括了 iBeacon 类设备,属于敏感的位置数据?总之大家都绕不开的应该。
|
4
Asshasahole 2017-11-02 20:44:18 +08:00 via iPhone
贵公司的耳机用的是 BLE 吗?应该不是吧。
正如 3 楼所说,BLE 因为之前更多用于和 beacon 类产品交互,被定义为精确定位方式,但是现在 beacon 半死不活,BLE 都用在其他方面了,感觉仍然定义为精确定位方式不是很合适了。 现在部分安卓手机在不打开定位的情况下无法正常使用 BLE,经典蓝牙倒不太清楚。苹果没有这种现象。 |
5
haiyan OP @Asshasahole 是 BLE,苹果的是正常的,安卓工程师已经被折磨死
|
6
phy25 2017-11-03 00:54:56 +08:00 via Android
其实解决方案也简单,就是先检测系统权限,然后连续弹框动态请求位置权限和打开蓝牙就好(弹窗可以连按,体验还算流畅),打开之后一般用户也不至于再把位置关了,也就不会动不动再弹窗要权限了。
至于说用户不理解?弹窗前提示是系统限制就好咯,能不理解的用户自己查一查就会发现的确是这样子。 |
7
phy25 2017-11-03 01:04:48 +08:00 via Android
|
8
honeycomb 2017-11-03 03:17:22 +08:00 via Android
这是很现实的:
如果应用需要连接附近的蓝牙设备,那么它就需要能知道附近有哪些蓝牙设备。 而知道了附近有哪些蓝牙设备等同于获得了可以提取出当前位置的数据。 同理,能进行 WiFi scan 的应用也需要定位权限,未来没有定位权限的应用可能无法获知已经连接着的 WiFi 热点的 ssid/bssid,因为大数据的缘故,单个 bssid 足以提供相当精确的定位了。 所以是你的客户需要理解。 |