Suivez les étapes mentionnées ci-dessous
1) Créez un LocationRequest
selon votre souhait
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Créez unLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Utilisez le LocationSettingsResponse
Task
code suivant
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Remarque: LocationServices.SettingsApi
est obsolète donc, utilisez SettingsClient
plutôt.
4) Ajoutez un OnCompleteListener
pour obtenir le résultat de la tâche. Une fois la tâche Task
terminée, le client peut vérifier les paramètres d'emplacement en regardant le code d'état de l' LocationSettingsResponse
objet.
result.addOnCompleteListener(new OnCompleteListener<LocationSettingsResponse>() {
@Override
public void onComplete(@NonNull Task<LocationSettingsResponse> task) {
try {
LocationSettingsResponse response =
task.getResult(ApiException.class);
} catch (ApiException ex) {
switch (ex.getStatusCode()) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException resolvableApiException =
(ResolvableApiException) ex;
resolvableApiException
.startResolutionForResult(MapsActivity.this,
LOCATION_SETTINGS_REQUEST);
} catch (IntentSender.SendIntentException e) {
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
break;
}
}
}
});
CAS 1:: L' LocationSettingsStatusCodes.RESOLUTION_REQUIRED
emplacement n'est pas activé mais, nous pouvons demander à l'utilisateur d'activer l'emplacement en lui demandant d'activer l'emplacement avec la boîte de dialogue (en appelant startResolutionForResult
).
CAS 2:: LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
Les paramètres de localisation ne sont pas satisfaits. Cependant, nous n'avons aucun moyen de corriger les paramètres, nous n'afficherons donc pas la boîte de dialogue.
5) OnActivityResult
nous pouvons obtenir l'action de l'utilisateur dans la boîte de dialogue des paramètres d'emplacement. RESULT_OK
=> L'utilisateur a activé l'emplacement. RESULT_CANCELLED
- L'utilisateur a refusé la demande de réglage de l'emplacement.