【发布时间】:2016-01-07 20:01:11
【问题描述】:
升级到 Android 6.0 版后,蓝牙低功耗 (BLE) 扫描仅在设备上启用了定位服务的情况下才能工作。参考这里:Bluetooth Low Energy startScan on Android 6.0 does not find devices
基本上,您需要为应用和手机启用权限。这是一个错误吗?是否可以在没有实际启用定位服务的情况下进行扫描?我不想为我的所有应用程序提供位置。
编辑
我没有提到我正在使用 API 21 中提供的BluetoothLeScanner 中的startScan() 方法。我可以接受此方法所需的清单中的课程和精细位置权限。我只是不希望我的应用程序的用户必须在他们的设备(GPS 等)上启用位置服务才能使用我的应用程序。
以前,startScan() 方法将在手机上禁用定位服务的情况下运行并返回结果。然而,在 Marshmallow 上,当手机上未启用定位服务且课程/精细定位权限仍在清单中时,相同的应用程序会“扫描”但静默失败并且不返回任何结果。
【问题讨论】:
-
您使用的是什么设备?我在使用 Moto G 第二代时遇到了同样的问题。 Moto G 第 1 代和 Nexus 6 使用完全相同的代码运行良好,无需显式启用定位服务。
-
我在任何运行 Marshmallow 的设备上都发现了它 - Nexus 5X、Samsung S6、Samsung S7、LG G4
标签: android bluetooth bluetooth-lowenergy android-6.0-marshmallow