2011-11-03 23 views
9

Duplicar posibles:
Programmatically find device support GPS or not?Android comprobar la disponibilidad de GPS en el dispositivo

¿Cómo puedo comprobar, es el GPS disponible en el dispositivo?

Cuando trato de utilizar el siguiente código

PackageManager pm = context.getPackageManager(); 
boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION); 

if (hasGps) { 
    Log.d("TAG", "HAS GPS"); 
} else { 
    Log.d("TAG", "HAS NOT GPS"); 
} 

Siempre tengo TIENE GPS, pero mi Archos 101IT no tiene módulo GPS. ¿Hay alguna manera de verificar la disponibilidad del hardware de GPS?

Respuesta

23

Usar este código

boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS); 

si ha incrustado hardware GPS para el dispositivo pero no está activada, utilice el siguiente bacalao que le permita de forma dinámica,

LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //Ask the user to enable GPS 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Location Manager"); 
    builder.setMessage("Would you like to enable GPS?"); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //Launch settings, allowing user to make a change 
      Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(i); 
     } 
    }); 
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //No location service, no Activity 
      finish(); 
     } 
    }); 
    builder.create().show(); 
} 

Puede llamar LocationManager.getAllProviders() y compruebe si LocationManager.GPS_PROVIDER está incluido en la lista.

else simplemente utiliza este código LocationManager.isProviderEnabled(String provider) método.

si return false incluso en el caso si usted don `t tiene GPS en su dispositivo

+2

Tengo un proveedor sin GPS, pero pm.hasSystemFeature (PackageManager.FEATURE_LOCATION_GPS); siempre devuelve True – skayred

+1

ver la edición y se tratan – Karthi

+1

LocationManager.isProviderEnabled (proveedor de cadena) return false para mi tableta, eso es cierto. Pero si tengo el GPS desactivado en la computadora de mano con soporte de GPS, también será falso. Necesito verificar la disponibilidad del hardware, estado no activado-deshabilitado – skayred

2

la pantalla de configuración del GPS sistemas androide puede ser llamado como cualquier otro Actividades:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); 

Para comprobar GPS disponibilidad utilizar el código siguiente código:

(la actividad debe implementar LocationListener)

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this); 
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER); 
+0

¿Cómo puedo cuando enciendo y apago mi gps isGPS desde ¿Tu fragmento de código es siempre verdadero? ¿Estás seguro de que esto detecta si el GPS está activo o comprueba si el GPS está disponible o permitido u otro? – portfoliobuilder

Cuestiones relacionadas