Android - 在Marshmallow上以编程方式设置位置模式

时间:2016-06-05 08:20:05

标签: android location android-6.0-marshmallow android-permissions android-location

自从我将设备升级到Android 6.0.1 Marshmallow后,Android会自动将位置模式设置为高精度,当具有android.permission.ACCESS_FINE_LOCATION权限的应用尝试访问时我的设备的位置。

就我个人而言,我发现将位置模式设置为高精度非常烦人,因此我的设备的电池耗电率非常高。因此,我需要立即检查位置模式是否已更改并手动将其更改回省电模式。

所以,我决定制作一个应用程序,在背景中部署IntentService,如果位置模式已更改为高精度,则每隔30分钟检查一次并将其更改回省电

但是,这样做的问题是找到一种让我以编程方式更改位置模式的方法。

我尝试使用以下代码但没有任何用处:

public void ChangeLocationMode() {
    LocationRequest mLocationRequest = LocationRequest.create();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

    mHandler.post(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(SetLocationModeService.this, "Location Mode Changed!", Toast.LENGTH_LONG).show();
        }
    });
}

我还在AndroidManifest.xml中添加了以下权限:

<uses-permission android:name="android.permission.LOCATION_HARDWARE"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>

但是,这种方法似乎根本不起作用。

所以,我的问题是,

  

有没有办法在Android Marshmallow(或更高版本)中以编程方式更改位置模式?

如果有任何经过试验和测试的方法,请考虑在此分享。

0 个答案:

没有答案