2011-11-03 22 views
9

Eventuali duplicati:
Programmatically find device support GPS or not?controllo Android disponibilità GPS sulla dispositivo

Come posso controllare, è il GPS disponibile sul dispositivo?

Quando provo ad usare il codice successivo

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"); 
} 

ottengo sempre ha il GPS, ma il mio Archos 101IT senza modulo GPS. C'è un modo per verificare la disponibilità GPS dell'hardware?

risposta

23

Usa questo codice

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

se avete l'hardware GPS incorporato per la periferica, ma non è abilitata quindi utilizzare il seguente cod per abilitare in modo dinamico,

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(); 
} 

È possibile chiamare LocationManager.getAllProviders() e controllare se LocationManager.GPS_PROVIDER è incluso nell'elenco.

altro semplicemente si utilizza questo codice metodo LocationManager.isProviderEnabled(String provider).

se restituire false anche nel caso se non dovete GPS nel dispositivo

+2

Ho un dispositivo senza GPS, ma pm.hasSystemFeature (PackageManager.FEATURE_LOCATION_GPS); restituisce sempre True – skayred

+1

visualizza la modifica e prova – Karthi

+1

LocationManager.isProviderEnabled (provider di stringhe) restituisce false per il mio tablet, è vero. Ma se ho il GPS disabilitato sul mio palmare con supporto GPS, sarà anche falso. Devo controllare la disponibilità dell'hardware, non abilitata-disabilitata stato – skayred

2

La schermata di impostazione dei sistemi GPS Android può essere chiamato, proprio come qualsiasi altra attività:

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

Per controllare il GPS disponibilità utilizzare il codice codice qui sotto:

(l'attività deve implementare LocationListener)

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

Come arrivare quando si attiva e disattiva il GPS da isGPS da il tuo snippet di codice è sempre vero? Sei sicuro che questo rileva se il GPS è attivo, o controlla se il GPS è disponibile o permesso o altro? – portfoliobuilder

Problemi correlati