É possível ativar os Serviços de Localização (GPS ou Google NetworkLocation) via ADB ou Emulador de Terminal? Estou em um telefone enraizado.
Pontos extras: Também é possível alterar outras configurações relacionadas ao sistema?
É possível ativar os Serviços de Localização (GPS ou Google NetworkLocation) via ADB ou Emulador de Terminal? Estou em um telefone enraizado.
Pontos extras: Também é possível alterar outras configurações relacionadas ao sistema?
Respostas:
É possível ativar os Serviços de Localização (GPS ou Google NetworkLocation) via ADB ou Emulador de Terminal?
O comando é:
adb shell settings put secure location_providers_allowed gps
Onde,
settings
faria alterações em settings.db
(parte de com.android.providers.settings
)put
é atualizar a chave location_providers_allowed
com o valor gps
na tabela secure
.O comando acima mencionado não ativaria o Serviço de Localização do Google. Para habilitá-lo também, emita o comando:
adb shell settings put secure location_providers_allowed gps,network
Você verá um pop-up para concordar com os Serviços de Localização. No meu Android 4.2.1, tenho que concordar com a GUI ou input keyevent
sempre que ativar o serviço do zero.
No entanto, no meu Android 5.0, eu posso salvar as configurações na caixa de diálogo e a execução do comando faz as coisas perfeitamente da próxima vez.
Alguns dispositivos, como os do Lollipop, têm três modos de locais, e os valores relevantes a serem passados no comando acima seriam:
gps,wifi,network
ou gps,network
(se você não quiser o Wi-Fi ativado)wifi,network
ou network
apenasgps
adb shell settings put secure location_providers_allowed ' '
Também é possível alterar outras configurações relacionadas ao sistema?
Vejo :
Mas eu já dei uma grande ideia usando settings put
.
location_providers_allowed
a descontinuação ( developer.android.com/reference/android/provider/… ). Ideias?
adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
, em seguida, clique no botão alternar.
Para Android 6.0
Para ativar o uso:
Para GPS: adb shell settings put secure location_providers_allowed +gps
Para rede: adb shell settings put secure location_providers_allowed +network
Desabilitar :
GPS : adb shell settings put secure location_providers_allowed -gps
Para rede: adb shell settings put secure location_providers_allowed -network
O Serviço de Localização Android vem com opções diferentes:
1) Alta Precisão: gps, network
Habilitar:
adb shell settings put secure location_providers_allowed +gps,network
Desativar:
adb shell settings put secure location_providers_allowed -gps,network
2) Apenas telefone: gps
Habilitar:
adb shell settings put secure location_providers_allowed +gps
Desativar: adb shell settings put secure location_providers_allowed -gps
3) Economia de bateria: network
Habilitar:
adb shell settings put secure location_providers_allowed +network
Desativar: adb shell settings put secure location_providers_allowed -network
location_providers_allowed
não funciona mais no Android 10 (nível 29 da API).
Em vez disso, você pode definir o location_mode
que LOCATION_MODE_HIGH_ACCURACY
com um valor de 3:
adb shell settings put secure location_mode 3
OBSERVAÇÃO: Provavelmente não funcionará> v29, pois isso já foi preterido, pois os documentos no Modo de Localização mencionam:
Essa constante foi descontinuada no nível 28 da API. Os métodos preferidos para verificar o modo de localização e escutar alterações são via
LocationManager#isLocationEnabled()
eLocationManager#MODE_CHANGED_ACTION
.
Não sei que maneira programática de fazer isso através do shell será assim que essa constante desaparecer.