Nim*_*myz 5 android bluetooth google-play-services
我正在使用com.google.android.gms.location.SettingsApi在我的Android应用中启用蓝牙和位置.它会弹出一个对话框,提示用户在禁用时启用它,以便我的应用程序可以扫描附近的蓝牙设备.我按照参考指南(https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi)中的说明进行操作.这非常简单:首先连接到GoogleApiClient,然后创建一个LcoationSettingsRequest.builder:
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequestHighAccuracy)
.setNeedBle(true)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我添加了setNeedBle(true),因为我也需要打开蓝牙.然后,您可以从SettingsApi调用checkLocationSettings并向结果添加回调.这会弹出一个对话框,提示用户打开蓝牙和位置,然后您会收到用户是否选择执行此操作的回调.
这适用于具有API22和Google Play服务版本8.4.89的设备,但在具有API23和GPS版本8.4.89的同一设备上也不行.只有setNeedBle(true)部分不能在API23上运行:当蓝牙关闭时,我没有得到对话框(但启用该位置的对话框工作正常).由于它们都安装了相同版本的GPS,因此它与API22和API23有关.有谁知道这是一个错误还是我如何解决这个问题?
我发现了一个类似的问题(如何从Google Play服务弹出启用蓝牙提示?),但有人建议在GPS版本8.1中修复但我正在运行GPS v8.4.此外,这是一个稍微不同的问题,因为我没有获得SETTINGS_CHANGE_UNAVAILABLE状态.
如果客户端使用 BLE 扫描来获取位置,则可以通过调用setNeedBle(boolean)请求启用 BLE 。
请参考解决方案: https://github.com/googlemaps/android-samples/tree/master/ApiDemos (如果您想在运行时授予API 23(Android M)的权限。)
另请参阅此官方存储库:
https://developer.android.com/training/location/change-location-settings.html
https://developer.android.com/about/versions/marshmallow/android-6.0.html #蓝牙手写笔
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |