【问题标题】:How to pop up Enable Bluetooth prompt from Google Play Services?如何从 Google Play 服务中弹出启用蓝牙提示?
【发布时间】:2015-12-06 02:33:16
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android bluetooth google-play-services android-settings


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你很亲密。在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)

      【讨论】:

      • 我以前试过这个,但我得到的是SETTINGS_CHANGE_UNAVAILABLE 状态。你有工作样本吗?
      • 您的目标是哪个版本的android?您可以使用 &lt;uses-feature android:name="android.hardware.bluetooth_le" android:required="true" /&gt; 避免清单上没有 BLE 的手机
      • 应用程序已经在清单中提到了行,我在三星 Galaxy S3 (4.3) 和 LG G3 (5.0) 上尝试setNeedBle(boolean)。两次都给了我SETTINGS_CHANGE_UNAVAILABLE。
      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多