Thực hiện theo các bước được đề cập dưới đây
1) Tạo một LocationRequest
theo ý muốn của bạn
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10 * 1000)
.setFastestInterval(1 * 1000);
2) Tạo mộtLocationSettingsRequest.Builder
LocationSettingsRequest.Builder settingsBuilder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
settingsBuilder.setAlwaysShow(true);
3) Nhận LocationSettingsResponse
Task
bằng cách sử dụng mã sau
Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(this)
.checkLocationSettings(settingsBuilder.build());
Lưu ý: LocationServices.SettingsApi
không được dùng nữa nên hãy sử dụng SettingsClient
Thay vào đó.
4) Thêm a OnCompleteListener
để nhận kết quả từ Nhiệm vụ. Khi Task
hoàn thành, khách hàng có thể kiểm tra cài đặt vị trí bằng cách xem mã trạng thái từ LocationSettingsResponse
đối tượng.
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;
}
}
}
});
TRƯỜNG HỢP 1: LocationSettingsStatusCodes.RESOLUTION_REQUIRED
Vị trí không được bật nhưng chúng tôi có thể yêu cầu người dùng bật vị trí bằng cách nhắc anh ta bật vị trí bằng hộp thoại (bằng cách gọi startResolutionForResult
).
TRƯỜNG HỢP 2:: LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
Cài đặt vị trí không hài lòng. Tuy nhiên, chúng tôi không có cách nào để sửa cài đặt nên chúng tôi sẽ không hiển thị hộp thoại.
5) OnActivityResult
chúng tôi có thể nhận được hành động của người dùng trong hộp thoại cài đặt vị trí. RESULT_OK
=> Người dùng đã bật Vị trí.RESULT_CANCELLED
- Người dùng đã từ chối yêu cầu thiết lập vị trí.