Siga los pasos que se mencionan a continuación
1) Cree un LocationRequest
según su deseo
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Crea unLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Obtener LocationSettingsResponse
Task
el uso siguiente código
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Nota: LocationServices.SettingsApi
está en desuso, así que use en su SettingsClient
lugar.
4) Agregue un OnCompleteListener
para obtener el resultado de la tarea. Cuando se Task
complete, el cliente puede verificar la configuración de ubicación mirando el código de estado del LocationSettingsResponse
objeto.
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;
}
}
}
});
CASO 1: La LocationSettingsStatusCodes.RESOLUTION_REQUIRED
ubicación no está habilitada, pero podemos pedirle al usuario que habilite la ubicación solicitándole que active la ubicación con el cuadro de diálogo (llamando startResolutionForResult
).
CASO 2: LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
La configuración de ubicación no está satisfecha. Sin embargo, no tenemos forma de corregir la configuración, por lo que no mostraremos el cuadro de diálogo.
5) OnActivityResult
podemos obtener la acción del usuario en el cuadro de diálogo de configuración de ubicación. RESULT_OK
=> El usuario activó la ubicación. RESULT_CANCELLED
- El usuario rechazó la solicitud de configuración de ubicación.