如果用户在其设备上选择了节电定位模式,是否可以高精度地在Android上获取位置更新?

时间:2014-05-03 09:33:02

标签: java android location google-play-services

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

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

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

Battey saving setting for location mode on Android

与往常一样,非常感谢大家帮忙指出正确的方向!! :)

2 个答案:

答案 0 :(得分:0)

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

enter image description here

幸运的是,(正如冰人提到的),如果您拥有最新版本的Google Play服务(7.0),则可以使用Location Settings Dialog

您可以找到更多信息here

答案 1 :(得分:0)

不,您无法以编程方式更改用户的位置偏好设置。用户的首选项会覆盖您的LocationRequest优先级以及清单文件中的权限。

最佳解决方案是在Google Play Services 7.0 lib中使用新的API,您可以在@mrek的答案中看到屏幕截图,创建对话框(不是直接创建,而是播放服务为您创建)。您必须使用LocationSettingsRequest.Builderreference)。