Comment vérifier et activer le GPS sur un appareil compatible Android Cupcake (1.5)?
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();
}
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 à
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.
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.
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);
}
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.
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();
}
`
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;
};
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é.