web-dev-qa-db-fra.com

Comment savoir si le GPS d'un appareil Android est activé

Comment vérifier et activer le GPS sur un appareil compatible Android Cupcake (1.5)?

195
Marcus

Le meilleur moyen semble être le suivant:

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

Sous Android, nous pouvons facilement vérifier si le GPS est activé sur l'appareil ou non à l'aide de LocationManager.

Voici un programme simple à vérifier.

GPS activé ou non: - Ajoutez la ligne d'autorisation d'utilisateur ci-dessous dans AndroidManifest.xml pour accéder à l'emplacement.

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

Votre fichier de classe Java doit être

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 sortie ressemblera à

enter image description here

enter image description here

125
user647826

oui Les paramètres GPS ne peuvent plus être modifiés par programme car il s'agit de paramètres de confidentialité et nous devons vérifier s'ils sont activés ou non du programme et les gérer s'ils ne sont pas activés. vous pouvez notifier à l'utilisateur que le GPS est désactivé et utiliser un système similaire pour afficher l'écran des paramètres à l'utilisateur si vous le souhaitez.

Vérifiez si les fournisseurs de localisation sont 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 l'utilisateur souhaite activer le GPS, vous pouvez afficher l'écran des paramètres de cette manière.

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

Et dans votre onActivityResult, vous pouvez voir si l'utilisateur l'a activé ou non.

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

C’est une façon de le faire et j’espère que cela aidera. Faites-moi savoir si je fais quelque chose de mal.

36
achie

Voici les étapes:

Étape 1: Créez des services fonctionnant en arrière-plan.

Étape 2: Vous devez également posséder l'autorisation suivante dans le fichier manifeste:

Android.permission.ACCESS_FINE_LOCATION

Étape 3: Écrire le code:

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

Étape 4: Ou simplement, vous pouvez vérifier en utilisant:

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

Étape 5: Exécutez vos services en continu pour surveiller la connexion.

31
Rakesh

Oui, vous pouvez vérifier ci-dessous le code:

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

Le GPS sera utilisé si l'utilisateur l'a autorisé dans ses paramètres.

Vous ne pouvez plus l'activer explicitement, mais vous n'y êtes pas obligé - il s'agit vraiment d'un paramètre de confidentialité, vous ne voulez donc pas le modifier. Si l'utilisateur accepte les applications avec des coordonnées précises, elles seront activées. Ensuite, l’API du gestionnaire d’emplacement utilisera le GPS s’il le peut.

Si votre application n'est vraiment pas utile sans GPS et qu'elle est désactivée, vous pouvez ouvrir l'application de configuration sur le bon écran en utilisant une intention afin que l'utilisateur puisse l'activer.

6
Mike Hearn

Ce morceau de code vérifie l'état du GPS

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

`

5
kashifahmad

Cette méthode utilisera le service LocationManager .

Source Lien

//Check GPS Status true/false
public static boolean checkGPSStatus(Context context){
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );
    boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    return statusOfGPS;
};
3
Code Spy

Dans votre LocationListener, implémentez les gestionnaires d'événements onProviderEnabled et onProviderDisabled. Lorsque vous appelez requestLocationUpdates(...), si le GPS est désactivé sur le téléphone, onProviderDisabled sera appelé; si l'utilisateur active le GPS, onProviderEnabled sera appelé.

3
Ahmad Pourbafrani