@Izzy no está relacionado. La pregunta a la que se vinculó no tiene nada que ver con los servicios de ubicación.
lorddev
1
@lorddev No, no se mencionan explícitamente. Pero puede usar el mismo código para llamar a la intención de los servicios de ubicación. Lo que me confunde un poco es la redacción de mi comentario, que sugiere un "golpe directo" (y aquí ambos tienen razón: no es exactamente lo mismo). Difícil de decir, medio año después, lo que tenía en mente en aquel entonces ...
Izzy
Respuestas:
12
¿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:
Alta precisión: gps,wifi,networko gps,network(si no desea habilitar Wi-Fi)
Ahorro de batería: wifi,networko networksolo
Solo dispositivo: gps
Para deshabilitar el modo de ubicación
adb shell settings put secure location_providers_allowed ' '
¿También es posible cambiar otras configuraciones relacionadas con el sistema?
¿Sería posible lograr lo mismo, pero desde la consola del dispositivo, no a través del ADB de una computadora externa?
davide
1
Si, absolutamente. Sin embargo, necesitaría acceso root o ADB inalámbrico ejecutándose en el dispositivo. Eche un vistazo a esta respuesta como ejemplo. Tendrías una idea.
Señor del fuego
Esto solía funcionar en Android 5, pero ya no funciona en Android 6. Con o sin root, la configuración no cambia y permanece igual a la configurada en el sistema. Probablemente tenga algo que ver con location_providers_allowedser desaprobado ( developer.android.com/reference/android/provider/… ). Ideas?
gw0
Si solo desea activar / desactivar la funcionalidad GPS, puede ir a la página de Ubicación de la configuración y luego hacer clic en el botón de cambio. Esta operación también se puede lograr mediante el comando:, adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSluego haga clic en el botón de cambio.
Eddy
13
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
Gracias funciona. ¿Hay alguna forma de habilitar / deshabilitar gps y red con el comando adb de una línea? Lo necesito para una ubicación de alta precisión. gps + network = alta precisión
Suban Dhyako
4
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()y LocationManager#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.
Respuestas:
El comando es:
dónde,
settings
haría cambios ensettings.db
(parte decom.android.providers.settings
)put
es actualizar la clavelocation_providers_allowed
con el valorgps
en la tablasecure
.El comando mencionado no habilitaría el Servicio de ubicación de Google. Para habilitarlo también, emita el comando:
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 keyevent
cada 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,network
ogps,network
(si no desea habilitar Wi-Fi)wifi,network
onetwork
sologps
Para deshabilitar el modo de ubicación
Ver :
Pero ya di una gran idea usando
settings put
.fuente
location_providers_allowed
ser desaprobado ( developer.android.com/reference/android/provider/… ). Ideas?adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
luego 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
fuente
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
fuente
location_providers_allowed
ya no funciona para Android 10 (nivel de API 29).En su lugar, puede establecer
location_mode
aLOCATION_MODE_HIGH_ACCURACY
con un valor de 3:NOTA: Probablemente no funcionará> v29 ya que esto ya está en desuso, ya que los documentos en el modo de ubicación mencionan:
No sé cuál será una forma programática de hacer esto a través del shell una vez que esta constante desaparezca.
fuente