Bom trecho de código. Removai o @SuppressWarnings e não estou recebendo nenhum aviso ... talvez eles sejam desnecessários?
span
30
Aconselho declarando alertpara toda a atividade que você pode descartá-lo em onDestroy para evitar uma fuga de memória ( if(alert != null) { alert.dismiss(); })
Cameron
E se eu estiver economizando bateria, isso ainda funcionará?
Prakhar Mohan Srivastava
3
@PrakharMohanSrivastava se as definições de localização estão em economia de energia, isso irá retornar falso, no entanto LocationManager.NETWORK_PROVIDERretornará true
Tim
129
No Android, podemos verificar facilmente se o GPS está ativado no dispositivo ou não usando o LocationManager.
Aqui está um programa simples para verificar.
GPS ativado ou não: - Adicione a linha de permissão do usuário abaixo no AndroidManifest.xml para acessar o local
publicclassExampleAppextendsActivity{/** Called when the activity is first created. */protectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.main);LocationManager locationManager =(LocationManager) getSystemService(LOCATION_SERVICE);if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){Toast.makeText(this,"GPS is Enabled in your devide",Toast.LENGTH_SHORT).show();}else{
showGPSDisabledAlertToUser();}}privatevoid showGPSDisabledAlertToUser(){AlertDialog.Builder alertDialogBuilder =newAlertDialog.Builder(this);
alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?").setCancelable(false).setPositiveButton("Goto Settings Page To Enable GPS",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){Intent callGPSSettingIntent =newIntent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(callGPSSettingIntent);}});
alertDialogBuilder.setNegativeButton("Cancel",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){
dialog.cancel();}});AlertDialog alert = alertDialogBuilder.create();
alert.show();}}
Um conselho: Declare alertpara toda a atividade que você pode descartá-lo em onDestroy()evitar um vazamento de memória ( if(alert != null) { alert.dismiss(); })
NAXA
38
sim As configurações de GPS não podem mais ser alteradas programaticamente, pois são configurações de privacidade e temos que verificar se estão ativadas ou não no programa e tratá-lo se não estiverem ativadas. você pode notificar o usuário que o GPS está desligado e usar algo assim para mostrar a tela de configurações ao usuário, se desejar.
Verifique se os provedores de localização estão disponíveis
String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available
startFetchingLocation();}else{// Notify users and show settings if they want to enable GPS}
Se o usuário deseja ativar o GPS, você pode mostrar a tela de configurações dessa maneira.
E no seu onActivityResult, você pode ver se o usuário ativou ou não
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){if(requestCode == REQUEST_CODE && resultCode ==0){String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available. // Do whatever you want
startFetchingLocation();}else{//Users did not switch on the GPS}}}
Essa é uma maneira de fazê-lo e espero que ajude. Deixe-me saber se estou fazendo algo errado.
oi, eu tenho um problema semelhante ... você pode explicar brevemente o que é o "REQUEST_CODE" e para que serve?
Poeschlorn
2
@poeschlorn Anna postou o link para detalhes abaixo. Em termos simples, o RequestCode permite que você use startActivityForResultcom várias intenções. Quando as intenções retornam à sua atividade, você verifica o RequestCode para ver qual intenção está retornando e responde de acordo.
Farray 17/02
2
A providerpode ser uma cadeia vazia. Eu tive que mudar o cheque para(provider != null && !provider.isEmpty())
Pawan
Como o provedor pode "", considere usar o modo int = Settings.Secure.getInt (getContentResolver (), Settings.Secure.LOCATION_MODE); Se mode = 0 GPS estiver desligado
Levon Petrosyan
31
Aqui estão os passos:
Etapa 1: crie serviços em execução em segundo plano.
Etapa 2: Você também precisa da seguinte permissão no arquivo Manifest:
android.permission.ACCESS_FINE_LOCATION
Etapa 3: escreva o código:
finalLocationManager manager =(LocationManager)context.getSystemService (Context.LOCATION_SERVICE );if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER ))Toast.makeText(context,"GPS is disabled!",Toast.LENGTH_LONG).show();elseToast.makeText(context,"GPS is enabled!",Toast.LENGTH_LONG).show();
Etapa 4: ou simplesmente você pode verificar usando:
O GPS será usado se o usuário permitir que seja usado em suas configurações.
Você não pode mais ativar explicitamente isso, mas não precisa - é realmente uma configuração de privacidade, para que você não queira alterá-la. Se o usuário estiver de acordo com os aplicativos que recebem coordenadas precisas, ele estará ativado. Em seguida, a API do gerenciador de localização usará o GPS, se puder.
Se o seu aplicativo realmente não for útil sem o GPS e estiver desativado, você poderá abrir o aplicativo de configurações na tela certa usando uma intenção para que o usuário possa ativá-lo.
Nos seus LocationListenerimplementadores onProviderEnablede onProviderDisabledmanipuladores de eventos. Quando você ligar requestLocationUpdates(...), se o GPS estiver desativado no telefone, onProviderDisabledserá chamado; se o usuário ativar o GPS, onProviderEnabledserá chamado.
InKotlin:-How to check GPS is enable ornot
val manager = getSystemService(Context.LOCATION_SERVICE)asLocationManagerif(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
checkGPSEnable()}private fun checkGPSEnable(){
val dialogBuilder =AlertDialog.Builder(this)
dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?").setCancelable(false).setPositiveButton("Yes",DialogInterface.OnClickListener{ dialog, id
->
startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))}).setNegativeButton("No",DialogInterface.OnClickListener{ dialog, id ->
dialog.cancel()})
val alert = dialogBuilder.create()
alert.show()}
Respostas:
A melhor maneira parece ser a seguinte:
fonte
alert
para toda a atividade que você pode descartá-lo em onDestroy para evitar uma fuga de memória (if(alert != null) { alert.dismiss(); }
)LocationManager.NETWORK_PROVIDER
retornará trueNo Android, podemos verificar facilmente se o GPS está ativado no dispositivo ou não usando o LocationManager.
Aqui está um programa simples para verificar.
GPS ativado ou não: - Adicione a linha de permissão do usuário abaixo no AndroidManifest.xml para acessar o local
Seu arquivo de classe java deve ser
A saída será semelhante a
fonte
alert
para toda a atividade que você pode descartá-lo emonDestroy()
evitar um vazamento de memória (if(alert != null) { alert.dismiss(); }
)sim As configurações de GPS não podem mais ser alteradas programaticamente, pois são configurações de privacidade e temos que verificar se estão ativadas ou não no programa e tratá-lo se não estiverem ativadas. você pode notificar o usuário que o GPS está desligado e usar algo assim para mostrar a tela de configurações ao usuário, se desejar.
Verifique se os provedores de localização estão disponíveis
Se o usuário deseja ativar o GPS, você pode mostrar a tela de configurações dessa maneira.
E no seu onActivityResult, você pode ver se o usuário ativou ou não
Essa é uma maneira de fazê-lo e espero que ajude. Deixe-me saber se estou fazendo algo errado.
fonte
startActivityForResult
com várias intenções. Quando as intenções retornam à sua atividade, você verifica o RequestCode para ver qual intenção está retornando e responde de acordo.provider
pode ser uma cadeia vazia. Eu tive que mudar o cheque para(provider != null && !provider.isEmpty())
Aqui estão os passos:
Etapa 1: crie serviços em execução em segundo plano.
Etapa 2: Você também precisa da seguinte permissão no arquivo Manifest:
Etapa 3: escreva o código:
Etapa 4: ou simplesmente você pode verificar usando:
Etapa 5: execute seus serviços continuamente para monitorar a conexão.
fonte
Sim, você pode conferir abaixo o código:
fonte
Este método usará o serviço LocationManager .
Link de origem
fonte
O GPS será usado se o usuário permitir que seja usado em suas configurações.
Você não pode mais ativar explicitamente isso, mas não precisa - é realmente uma configuração de privacidade, para que você não queira alterá-la. Se o usuário estiver de acordo com os aplicativos que recebem coordenadas precisas, ele estará ativado. Em seguida, a API do gerenciador de localização usará o GPS, se puder.
Se o seu aplicativo realmente não for útil sem o GPS e estiver desativado, você poderá abrir o aplicativo de configurações na tela certa usando uma intenção para que o usuário possa ativá-lo.
fonte
Este código verifica o status do GPS
`
fonte
Nos seus
LocationListener
implementadoresonProviderEnabled
eonProviderDisabled
manipuladores de eventos. Quando você ligarrequestLocationUpdates(...)
, se o GPS estiver desativado no telefone,onProviderDisabled
será chamado; se o usuário ativar o GPS,onProviderEnabled
será chamado.fonte
fonte