Изменение режима местоположения на высокую точность Программно для Android

Можно ли получить информацию о режиме местоположения, который пользователь выбрал из трех режимов в настройках параметров местоположения i.e

1.Hight Accuracy

2. Экономия памяти

Только 3.GPS

Я хочу программно проверить, выбрал ли пользователь режим High Accuracy, если нет, тогда включите его автоматически. Является ли это возможным? Пожалуйста, совет.

Ответы

Ответ 1

Можно получить режим текущего местоположения устройства с уровня API 19 (Kitkat):

public int getLocationMode(Context context)
{
return Settings.Secure.getInt(activityUnderTest.getContentResolver(), Settings.Secure.LOCATION_MODE);

}

Это возможные возвращаемые значения (см. здесь):

0 = LOCATION_MODE_OFF
1 = LOCATION_MODE_SENSORS_ONLY
2 = LOCATION_MODE_BATTERY_SAVING
3 = LOCATION_MODE_HIGH_ACCURACY

Итак, вы хотите что-то вроде

if(getLocationMode(context) == 3)
{
// do stuff
}

К сожалению, вы не можете установить режим местоположения программно, но вы можете отправить пользователя непосредственно на экран настроек, где он может это сделать:

startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

Ответ 2

Вы можете указать критерии в LocationMamager.requestLocationUpdates. В качестве критериев вы можете указать одно из следующих значений для выбора необходимой точности.

Constants
int ACCURACY_COARSE A constant indicating an approximate accuracy requirement
int ACCURACY_FINE   A constant indicating a finer location accuracy requirement
int ACCURACY_HIGH   a constant indicating a high accuracy requirement - may be used for horizontal, altitude, speed or bearing accuracy.
int ACCURACY_LOW    A constant indicating a low location accuracy requirement - may be used for horizontal, altitude, speed or bearing accuracy.
int ACCURACY_MEDIUM A constant indicating a medium accuracy requirement - currently used only for horizontal accuracy.

См http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long, float, android.location.Criteria, android.app.PendingIntent)