Следуйте инструкциям, указанным ниже
1) Создайте по LocationRequest
своему желанию
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) СоздайтеLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Получить LocationSettingsResponse
Task
используя следующий код
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Примечание: LocationServices.SettingsApi
не рекомендуется использовать SettingsClient
вместо.
4) Добавьте, OnCompleteListener
чтобы получить результат от Задачи. По Task
завершении клиент может проверить настройки местоположения, посмотрев на код состояния LocationSettingsResponse
объекта.
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;
}
}
}
});
СЛУЧАЙ 1: LocationSettingsStatusCodes.RESOLUTION_REQUIRED
Местоположение не включено, но мы можем попросить пользователя включить местоположение, предложив ему включить местоположение в диалоговом окне (позвонив startResolutionForResult
).
СЛУЧАЙ 2:: LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
Настройки местоположения не подходят. Однако у нас нет возможности исправить настройки, поэтому мы не будем показывать диалог.
5) OnActivityResult
мы можем получить действие пользователя в диалоговом окне настроек местоположения. RESULT_OK
=> Пользователь включил Местоположение. RESULT_CANCELLED
- Пользователь отклонил запрос на настройку местоположения.