gpt4 book ai didi

android - 从 Settings Api 获取 Needle 不适用于 API 23

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:42 27 4
gpt4 key购买 nike

我正在使用 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)

在我的例子中,我添加了 setNeedBle(true),因为我还需要打开蓝牙。然后,您从 SettingsApi 调用 checkLocationSettings 并向结果添加回调。这会弹出一个对话框,提示用户打开蓝牙和位置,您会收到一个关于用户是否选择这样做的回调。

这在具有 API22 和 Google Play 服务版本 8.4.89 的设备上工作正常,但在具有 API23 和 GPS 版本 8.4.89 的同一设备上也不起作用。只有 setNeedBle(true) 部分在 API23 上不起作用:当蓝牙关闭时,我没有看到对话框(但启用位置的对话框工作正常)。由于它们都安装了相同版本的 GPS,因此它与 API22 和 API23 有关。有谁知道这是一个错误还是我该如何解决这个问题?

我发现了一个关于此的类似问题 ( How to pop up Enable Bluetooth prompt from Google Play Services? ),但有人建议它已在 GPS 8.1 版中修复,但我正在运行 GPS v8.4。此外,这是一个稍微不同的问题,因为我没有获得 SETTINGS_CHANGE_UNAVAILABLE 状态。

最佳答案

API 23 中的定位服务有一个扫描设置面板。

location

有用于 Wifi 和蓝牙扫描的切换以提高定位精度。

scanning

通过打开它,定位服务可以使用 BLE 扫描即使蓝牙未启用。在这种情况下,setNeedBle(true) 不会提示用户打开蓝牙,因为定位服务已经可以使用 BLE。

但我不知道如何在我们自己的应用程序中提供定位服务中的 BLE 扫描,也许这是不可能的。

我建议在请求位置服务后检查蓝牙是否开启,如果没有开启则显示蓝牙开启提示。

关于android - 从 Settings Api 获取 Needle 不适用于 API 23,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com