Wykonaj czynności wymienione poniżej
1) Utwórz LocationRequest
zgodnie ze swoim życzeniem
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Utwórz plikLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Pobierz LocationSettingsResponse
Task
poniższy kod
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Uwaga: LocationServices.SettingsApi
jest przestarzałe, więc użyj SettingsClient
Zamiast tego.
4) Dodaj, OnCompleteListener
aby uzyskać wynik z zadania. Po Task
zakończeniu klient może sprawdzić ustawienia lokalizacji, patrząc na kod stanu z LocationSettingsResponse
obiektu.
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;
}
}
}
});
PRZYPADEK 1:: LocationSettingsStatusCodes.RESOLUTION_REQUIRED
Lokalizacja nie jest włączona, ale możemy poprosić użytkownika o włączenie lokalizacji, zachęcając go do włączenia lokalizacji za pomocą okna dialogowego (dzwoniąc startResolutionForResult
).
PRZYPADEK 2:: LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
ustawienia lokalizacji są niezadowalające. Nie mamy jednak możliwości naprawienia ustawień, więc nie pokażemy tego okna.
5) OnActivityResult
możemy uzyskać akcję użytkownika w oknie dialogowym ustawień lokalizacji. RESULT_OK
=> Użytkownik włączył lokalizację. RESULT_CANCELLED
- Użytkownik odrzucił prośbę o ustawienie lokalizacji.