如果用户在其设备上选择了省电位置模式,是不是可以在 Android 上获得高精度的位置更新?

Posted

技术标签:

【中文标题】如果用户在其设备上选择了省电位置模式,是不是可以在 Android 上获得高精度的位置更新?【英文标题】:Is it possible to get location updates on Android with high accuracy if the user has selected battery saving location mode on their device?如果用户在其设备上选择了省电位置模式,是否可以在 Android 上获得高精度的位置更新? 【发布时间】:2014-06-19 23:50:36 【问题描述】:

我正在使用 Google Play 定位服务在我的 android 应用中获取高精度的位置更新,如下所示:

mLocationRequest=LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

我的问题是,如果应用用户在设备设置中选择了省电位置模式(见下图),那么上述请求是否能够以高精度获取位置更新,或者我是否必须切换位置编程模式?还是让用户手动更改定位模式是唯一的解决方案?

一如既往,非常感谢大家帮助指出正确的方向! :)

【问题讨论】:

【参考方案1】:

不,您不能以编程方式更改用户的位置偏好。用户的偏好会覆盖您的 LocationRequest 优先级和清单文件中的权限。

最好的解决方案是使用 Google Play Services 7.0 库中的新 API,它允许您创建对话框(不是直接创建对话框,而是播放服务为您创建),请参阅@mrek 答案中的屏幕截图。您必须使用LocationSettingsRequest.Builder (reference)。

【讨论】:

【参考方案2】:

根据this 文章,如果没有超级用户权限,您将无法做到这一点。但是,Google 地图 具有此功能,因为它是一个系统(内置)应用程序:

幸运的是,(正如iceman所说),如果你有最新版本的Google Play服务(7.0),你可以使用Location Settings Dialog。

您可以找到更多信息here。

【讨论】:

不,他们使用的是最新版本 (7.0) 的 Google Play 服务库。我刚刚签入了我的 android SDK,它现在可供公众使用! “这个答案”的链接没有链接到答案。它链接到 imgur 上的图像。能补一下链接吗?

以上是关于如果用户在其设备上选择了省电位置模式,是不是可以在 Android 上获得高精度的位置更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道用户在 <paper-dialog> 上选择了哪个按钮?

SwiftUI List 如何识别在 macOS 上选择了哪些项目

日程管理(bug report)

如何在 extjs 4 中选择网格面板行作为 HTMLELEMENT

BottomSheetDialogFragment 如何与其宿主片段通信?

如果用户没有响应,qt 中是不是有任何 api 或方法可以在特定时间后将设备置于睡眠模式?