应对Android6.0扫描BLE需要定位的方法

前言

从Android 6.0之后,想要扫描低功率蓝牙设备,应用需要拥有访问设备位置的权限。这是因为Bluetooth beacons蓝牙信标,可用于确定手机和用户的位置。此外,在我的Android7.1.1的一加五,申请位置权限后,还需要打开定位服务(或者叫GPS)才能扫描到BLE设备。Android这样的做法无疑保护了用户的安全,但也给开发者带来了小小的麻烦,不过没办法,一切为了用户。

效果

  • 点击扫描后,用户未开启蓝牙


  • 点击扫描后,检测到未获取位置权限,申请权限


  • 用户拒绝权限后的提示,点击SETTINGS可以跳转到系统的应用程序设置界面申请权限


  • 用户之前点过拒绝权限(没有勾选不再提示),下次申请权限之前会先提示用户申请权限的原因


  • 用户未开启定位服务(全局,与权限无关),点击开启后会调到系统的定位服务管理界面


  • 点击原因会提示用户开启定位服务


  • 扫描后的效果(本应用侧重于扫描前的配置,扫描就只是列出设备,没有处理,甚至没用连接功能)


整个逻辑是模仿的一款叫nRF Connect的App。

实现

具体的实现我就直接贴代码了,里面注释的也很清楚。
https://github.com/xiaoniu/BLEDeviceSearch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。