ubicacion siempre restaurar pokemon mejorar impedir google encontrar dispositivo desactivar correcta calibrar activo android gps location android-location android-geofence

siempre - Cambiar el modo de ubicación a alta precisión programáticamente en Android



mi ubicacion en google maps no es correcta (3)

¿Es posible obtener la información sobre el modo de ubicación que el usuario ha seleccionado entre los tres modos en las opciones de configuración de ubicación?

1. alta precisión

2. Ahorro de batería

3.GPS solamente

Quiero verificar programáticamente si el usuario ha seleccionado el modo de Alta precisión, si no, habilitarlo automáticamente. Es posible ? Por favor aconséjame.


Desde el nivel de API 28, debe usar LocationManager.isProviderEnabled() para averiguar si un proveedor específico está habilitado o no.

Lamentablemente, no es posible cambiar la configuración mediante programación desde su aplicación.


Es posible obtener el modo de ubicación actual del dispositivo desde el nivel de API 19 (Kitkat) :

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

Estos son los valores de retorno posibles (ver here ):

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

Así que quieres algo como

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

Lamentablemente, no puede establecer el modo de ubicación mediante programación, pero puede enviar al usuario directamente a la pantalla de configuración donde puede hacerlo:

startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));


Puede proporcionar criterios en el LocationMamager.requestLocationUpdates. Como criterio, puede proporcionar uno de los siguientes valores para seleccionar la precisión necesaria.

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.

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