¿Es posible habilitar los Servicios de ubicación (GPS o Google NetworkLocation) a través de ADB o Terminal Emulator? Estoy en un teléfono rooteado.
Puntos extra: ¿También es posible cambiar otras configuraciones relacionadas con el sistema?
¿Es posible habilitar los Servicios de ubicación (GPS o Google NetworkLocation) a través de ADB o Terminal Emulator? Estoy en un teléfono rooteado.
Puntos extra: ¿También es posible cambiar otras configuraciones relacionadas con el sistema?
Respuestas:
¿Es posible habilitar los servicios de ubicación (GPS o Google NetworkLocation) a través de ADB o Terminal Emulator?
El comando es:
adb shell settings put secure location_providers_allowed gps
dónde,
settingsharía cambios en settings.db(parte de com.android.providers.settings)putes actualizar la clave location_providers_allowedcon el valor gpsen la tabla secure.El comando mencionado no habilitaría el Servicio de ubicación de Google. Para habilitarlo también, emita el comando:
adb shell settings put secure location_providers_allowed gps,network
Se le mostrará una ventana emergente para aceptar los Servicios de ubicación. En mi Android 4.2.1, tengo que aceptar a través de la GUI o input keyeventcada vez que habilito el servicio desde cero.
Sin embargo, en mi Android 5.0 puedo guardar la configuración en el cuadro de diálogo y la ejecución del comando hace las cosas perfectamente desde la próxima vez.
Algunos dispositivos como los de Lollipop tienen tres modos de ubicación, y los valores relevantes que se pasarán en el comando mencionado serían:
gps,wifi,networko gps,network(si no desea habilitar Wi-Fi)wifi,networko networksologpsadb shell settings put secure location_providers_allowed ' '
¿También es posible cambiar otras configuraciones relacionadas con el sistema?
Ver :
Pero ya di una gran idea usando settings put.
location_providers_allowedser desaprobado ( developer.android.com/reference/android/provider/… ). Ideas?
adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSluego haga clic en el botón de cambio.
Para Android 6.0
Para habilitar el uso:
Para GPS: adb shell settings put secure location_providers_allowed +gps
Para la red: adb shell settings put secure location_providers_allowed +network
Deshabilitar :
GPS : adb shell settings put secure location_providers_allowed -gps
Para la red: adb shell settings put secure location_providers_allowed -network
El servicio de ubicación de Android viene con diferentes opciones:
1) Alta precisión: gps, network
Habilitar:
adb shell settings put secure location_providers_allowed +gps,network
Inhabilitar:
adb shell settings put secure location_providers_allowed -gps,network
2) Solo teléfono: gps
Habilitar:
adb shell settings put secure location_providers_allowed +gps
Inhabilitar: adb shell settings put secure location_providers_allowed -gps
3) Ahorro de batería: network
Habilitar:
adb shell settings put secure location_providers_allowed +network
Inhabilitar: adb shell settings put secure location_providers_allowed -network
location_providers_allowed ya no funciona para Android 10 (nivel de API 29).
En su lugar, puede establecer location_modea LOCATION_MODE_HIGH_ACCURACYcon un valor de 3:
adb shell settings put secure location_mode 3
NOTA: Probablemente no funcionará> v29 ya que esto ya está en desuso, ya que los documentos en el modo de ubicación mencionan:
Esta constante fue desaprobada en el nivel 28 de API. Los métodos preferidos para verificar el modo de ubicación y escuchar los cambios son a través de
LocationManager#isLocationEnabled()yLocationManager#MODE_CHANGED_ACTION.
No sé cuál será una forma programática de hacer esto a través del shell una vez que esta constante desaparezca.