4

我正在处理的应用程序同时使用位置和 BLE,如果位置或蓝牙被禁用,我必须要求用户启用它们。

最新的 Google Play 服务提供了一种标准方法来LocationSettingsRequest检查要求并在需要更改设置时引发标准弹出窗口。它就像一个单独的位置的魅力,但一旦我添加SetNeedBle (true)LocationSettingsRequest我得到一个状态SETTINGS_CHANGE_UNAVAILABLE

我唯一的猜测是我需要添加AddApi (FitnessClass.BLE_API)对 a 的调用,GoogleApiClientBuilder因为它可能对 BLE 功能至关重要,但后来我连接到 Google Play 服务失败,SIGN_IN_REQUIRED状态令人困惑,因为我只需要健身服务的 BLE 部分。

有谁知道LocationSettingsRequest提示用户位置和蓝牙的好例子?

位置弹出

4

2 回答 2

1

你很亲密。在LocationSettingsRequest.Builder里面setNeedBle(boolean needBle)会弹出一个对话框询问BLE。不要将 Fitness API 用于 BLE 定位。

还要通过添加到清单中来确保手机启用了 BLE:

<manifest>
<uses-feature
        android:name="android.hardware.bluetooth_le"
        android:required="false" />
</manifest>

然后在你的代码中:

if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    //has BLE
}

从 Google Play 服务中,您可以使用SettingApi向系统询问可用功能。该指南包含如何使用它的完整示例。

https://developers.google.com/android/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html#setNeedBle(boolean)

于 2015-09-10T01:37:26.353 回答
0

看起来它已在 8.1.0 中修复,因此SetNeedBle (true)可以按预期工作:

在此处输入图像描述

于 2015-11-01T10:52:54.383 回答