如何从 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?您可以使用 <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
避免清单上没有 BLE 的手机
应用程序已经在清单中提到了行,我在三星 Galaxy S3 (4.3) 和 LG G3 (5.0) 上尝试setNeedBle(boolean)
。两次都给了我SETTINGS_CHANGE_UNAVAILABLE
。以上是关于如何从 Google Play 服务中弹出启用蓝牙提示?的主要内容,如果未能解决你的问题,请参考以下文章
在启用 Proguard 的情况下将 Play 服务从 8.1 更新到 8.3
(Unity) 使用 BuildPipeline 构建时启用 App Bundle (Google Play) 选项?