如何从 Google Play 服务中弹出启用蓝牙提示?

Posted

技术标签:

【中文标题】如何从 Google Play 服务中弹出启用蓝牙提示?【英文标题】:How to pop up Enable Bluetooth prompt from Google Play Services? 【发布时间】: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 提示用户位置和蓝牙的好例子?

【问题讨论】:

【参考方案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

以上是关于如何从 Google Play 服务中弹出启用蓝牙提示?的主要内容,如果未能解决你的问题,请参考以下文章

在启用 Proguard 的情况下将 Play 服务从 8.1 更新到 8.3

如何使用“google.gcm”服务?

(Unity) 使用 BuildPipeline 构建时启用 App Bundle (Google Play) 选项?

启用 Proguard 时,Xamarin Android 应用程序因缺少 google play 服务类而崩溃

如何启用 Google Play 应用签名

如何在 Google Play 等标签页中启用水平滚动?