ทำตามขั้นตอนที่ระบุด้านล่าง
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)เพิ่ม a 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- ผู้ใช้ปฏิเสธคำขอตั้งค่าตำแหน่ง