É 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,
settingsfaria alterações em settings.db(parte de com.android.providers.settings)puté atualizar a chave location_providers_allowedcom o valor gpsna 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 keyeventsempre 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,networkou gps,network(se você não quiser o Wi-Fi ativado)wifi,networkou networkapenasgpsadb 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_modeque LOCATION_MODE_HIGH_ACCURACYcom 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.