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

应对Android6.0扫描BLE需要定位的方法_第1张图片

前言

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

效果

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


    应对Android6.0扫描BLE需要定位的方法_第2张图片
  • 点击扫描后,检测到未获取位置权限,申请权限


    应对Android6.0扫描BLE需要定位的方法_第3张图片
  • 用户拒绝权限后的提示,点击SETTINGS可以跳转到系统的应用程序设置界面申请权限


    应对Android6.0扫描BLE需要定位的方法_第4张图片
  • 用户之前点过拒绝权限(没有勾选不再提示),下次申请权限之前会先提示用户申请权限的原因


    应对Android6.0扫描BLE需要定位的方法_第5张图片
  • 用户未开启定位服务(全局,与权限无关),点击开启后会调到系统的定位服务管理界面


    应对Android6.0扫描BLE需要定位的方法_第6张图片
  • 点击原因会提示用户开启定位服务


    应对Android6.0扫描BLE需要定位的方法_第7张图片
  • 扫描后的效果(本应用侧重于扫描前的配置,扫描就只是列出设备,没有处理,甚至没用连接功能)


    应对Android6.0扫描BLE需要定位的方法_第8张图片

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

实现

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

你可能感兴趣的:(应对Android6.0扫描BLE需要定位的方法)