2011-11-03 4 views
9

Possible en double:
Programmatically find device support GPS or not?vérifier la disponibilité Android GPS sur l'appareil

Comment puis-je vérifier, le GPS disponible sur le périphérique?

Lorsque je tente d'utiliser le code suivant

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

Je reçois toujours HAS GPS, mais mon Archos 101IT n'a pas le module GPS. Existe-t-il un moyen de vérifier la disponibilité du matériel GPS?

Répondre

23

Utilisez ce code

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

si vous avez du matériel GPS embarqué pour votre appareil, mais il n'est pas activé puis utilisez la morue suivante pour activer dynamiquement,

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

Vous pouvez appeler LocationManager.getAllProviders() et vérifiez si LocationManager.GPS_PROVIDER est inclus dans la liste. Sinon vous utilisez simplement ce code LocationManager.isProviderEnabled(String provider) méthode.

si return false même dans le cas si vous n `avez GPS dans votre appareil

+2

J'ai un devide sans GPS, mais pm.hasSystemFeature (PackageManager.FEATURE_LOCATION_GPS); renvoie toujours la valeur True – skayred

+1

voir la modification et essayez – Karthi

+1

LocationManager.isProviderEnabled (Fournisseur de chaîne) renvoie false pour ma tablette, c'est-à-dire vrai. Mais si j'ai GPS désactivé sur mon ordinateur de poche avec le support GPS, ce sera faux aussi. J'ai besoin de vérifier la disponibilité du matériel, non activé-état désactivé – skayred

2

L'écran de réglage GPS des systèmes Android peut être appelé comme toute autre activité:

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

Pour vérifier GPS disponibilité utiliser le code ci-dessous:

(l'activité doit mettre en œuvre LocationListener)

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

Comment venir quand basculer mon GPS sur et isGPS de votre extrait de code est toujours vrai? Êtes-vous sûr que cela détecte si le GPS est actif, ou vérifie-t-il si le GPS est disponible ou autorisé ou autre? – portfoliobuilder

Questions connexes