¿Cómo averiguo si el GPS de un dispositivo Android está habilitado?

En un dispositivo habilitado para Android Cupcake (1.5), ¿cómo puedo comprobar y activar el GPS?

La mejor manera parece ser la siguiente:

final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE ); if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) { buildAlertMessageNoGps(); } private void buildAlertMessageNoGps() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Your GPS seems to be disabled, do you want to enable it?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) { startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) { dialog.cancel(); } }); final AlertDialog alert = builder.create(); alert.show(); } 

En android, podemos comprobar fácilmente si el GPS está habilitado en el dispositivo o no usando LocationManager.

Aquí está un programa simple para comprobar.

GPS habilitado o no: – Añada la línea de permiso de usuario abajo en AndroidManifest.xml a Access Location

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Su archivo de clase java debe ser

 public class ExampleApp extends Activity { /** Called when the activity is first created. */ protected void 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(); } } private void showGPSDisabledAlertToUser(){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.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", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ Intent callGPSSettingIntent = new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(callGPSSettingIntent); } }); alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ dialog.cancel(); } }); AlertDialog alert = alertDialogBuilder.create(); alert.show(); } } 

La salida se verá como

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Sí La configuración de GPS no se puede cambiar programáticamente ya que son configuraciones de privacidad y tenemos que comprobar si están encendidas o no del programa y manejarlas si no están encendidas. Puede notificar al usuario que el GPS está apagado y utilizar algo como esto para mostrar la pantalla de configuración al usuario si lo desea.

Compruebe si los proveedores de ubicación están disponibles

  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 } 

Si el usuario quiere habilitar GPS, puede mostrar la pantalla de configuración de esta manera.

 Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent, REQUEST_CODE); 

Y en su onActivityResult puede ver si el usuario lo ha habilitado o no

  protected void 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 } } } 

Esa es una manera de hacerlo y espero que ayude. Hazme saber si estoy haciendo algo malo.

Estos son los pasos:

Paso 1: Crear servicios ejecutándose en segundo plano.

Paso 2: También necesita el siguiente permiso en el archivo de manifiesto:

 android.permission.ACCESS_FINE_LOCATION 

Paso 3: Escriba el código:

  final LocationManager manager = (LocationManager)context.getSystemService (Context.LOCATION_SERVICE ); if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) Toast.makeText(context, "GPS is disabled!", Toast.LENGTH_LONG).show(); else Toast.makeText(context, "GPS is enabled!", Toast.LENGTH_LONG).show(); 

Paso 4: O simplemente puede comprobar con:

 LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE ); boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

Paso 5: Ejecute sus servicios continuamente para supervisar la conexión.

Si usted puede comprobar abajo es el código:

 public boolean isGPSEnabled (Context mContext){ LocationManager locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } 

GPS se utilizará si el usuario ha permitido que se utilice en su configuración.

No se puede cambiar explícitamente esto en más, pero usted no tiene que – es una configuración de privacidad realmente, por lo que no desea ajustarlo. Si el usuario está bien con las aplicaciones obteniendo coordenadas precisas estará activado. A continuación, el administrador de localización API utilizará GPS si puede.

Si tu aplicación realmente no es útil sin GPS y está desactivada, puedes abrir la aplicación de configuración en la pantalla de la derecha con una intención para que el usuario pueda habilitarla.

En su LocationListener , implemente los controladores de eventos onProviderEnabled y onProviderDisabled . Cuando llama a requestLocationUpdates(...) , si el GPS está desactivado en el teléfono, se onProviderDisabled ; Si el usuario habilita GPS, se onProviderEnabled .

Esta pieza de código comprueba el estado del GPS

 final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE ); if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) { buildAlertMessageNoGps(); } 

  • Agregar distancia a una coordenada GPS
  • Android mejor manera de obtener la ubicación repetidamente en el fondo considerando la batería así
  • GPS de seguimiento de Android y WakeLock
  • Android O API 26. Los métodos de ubicación recientemente agregados no funcionan según sea necesario
  • ¿Cómo comprobar la presencia de un sensor GPS?
  • Obtener la ubicación de Android a través de wifi no funciona
  • Conflicto de la información de ubicación GPS en las aplicaciones de Android
  • ¿La habilitación Wi-Fi drena más o menos la batería al localizar la ubicación?
  • Cuán exacta es la medida de altitud en los teléfonos móviles
  • Activar GPS de forma programática como la aplicación Android de Ola Cabs
  • ¿Por qué el servicio de aplicaciones se reinicia y no puede reiniciarlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.