Siga os passos mencionados abaixo
1) Crie um de LocationRequest
acordo com seu desejo
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Crie umLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Comece LocationSettingsResponse
Task
usando o seguinte código
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Nota: LocationServices.SettingsApi
está obsoleto, portanto, use em SettingsClient
vez disso.
4) Adicione um OnCompleteListener
para obter o resultado da Tarefa. Quando o for Task
concluído, o cliente pode verificar as configurações de localização observando o código de status do 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:: O LocationSettingsStatusCodes.RESOLUTION_REQUIRED
local não está habilitado, mas podemos pedir ao usuário para habilitar o local, solicitando que ele ative o local com a caixa de diálogo (chamando startResolutionForResult
).
CASO 2:: As LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
configurações de localização não são satisfeitas. No entanto, não temos como corrigir as configurações, por isso não mostraremos a caixa de diálogo.
5) OnActivityResult
podemos obter a ação do usuário na caixa de diálogo de configurações de localização. RESULT_OK
=> Usuário ativou o local. RESULT_CANCELLED
- O usuário recusou a solicitação de configuração de local.