Obtendo as configurações de localização GPS (location mode) programaticamente

Neste post vou mostrar um bloco de código Java que obtém em qual location mode seu dispositivo está. No post anterior http://www.frameworksystem.com/habilitando-e-desabilitando-gps-location-no-android-via-linha-de-comando/ mostrei como obter o location mode do dispositivo utilizando a linha de comando settings get secure location_providers_allowed em um prompt adb shell. Caso você queira obter essas informações direto em um programa Java Android, utilize o bloco de código abaixo:

try {
int mode = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE);

if (mode == 0) {
// LOCATION_MODE_OFF
} else if (mode ==1) {
// LOCATION_MODE_SENSORS_ONLY
} else if (mode ==2) {
// LOCATION_MODE_BATTERY_SAVING
} else if (mode == 3) {
// LOCATION_MODE_HIGH_ACCURACY
} else {
// MODO NAO IMPLEMENTADO
}
} catch (Exception e) {
e.printStackTrace();
}

Para habilitar o location mode via Java Android existem uma série de limitações:

  1. Seu dispositivo deve estar rooteado corretamente.
  2. Você vai precisar de duas permissões de escrita no settings do AndroidManifest.xml:

    <uses-permission android:name=”android.permission.WRITE_SETTINGS” />
    <uses-permission android:name=”android.permission.WRITE_SECURE_SETTINGS” />

  3. Sua aplicação precisa receber grant para executar as ações de escrita no settings no prompt do su:

    pm grant [pacote de sua aplicação completo] android.permission.WRITE_SECURE_SETTINGS

  4. Sua aplicação precisa estar instalada no /system/app com permissão de execução
  5. Sua aplicação precisa ser efetivamente uma aplicação de sistema (essa parte é um pouco mais complicada e para aqueles que não estão familiarizados com o tema, irei fazer um post no futuro sobre isso)

Caso você tenha solucionado todos os itens acima, você pode utilizar o bloco de código exibido abaixo:

try {
Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCATION_MODE, [codigo do location mode]);
} catch (Exception e) {
e.printStackTrace();
}

Como disse anteriormente, você pode de forma alternativa seguir as orientações do post http://www.frameworksystem.com/habilitando-e-desabilitando-gps-location-no-android-via-linha-de-comando/.

Paras aqueles leitores que não estão familiarizados com o uso do adb shell para executar comandos no prompt do Android OS, leiam o artigo http://www.frameworksystem.com/abrindo-um-adb-shell-terminal-no-android/.

 

Add Comment

Your email address will not be published. Required fields are marked *

Phone: (31) 3646-1612
Fax: (31) 3646-1614
Loja 01, Lourdes, Belo Horizonte/MG
Rua Rio de Janeiro, 1278