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