【发布时间】:2018-04-02 11:10:02
【问题描述】:
我正在使用谷歌服务来获取当前位置。
我正在使用这种方法来启用位置:
void enableLoc(Activity activity, int request) {
LocationRequest mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
SettingsClient client = LocationServices.getSettingsClient(activity);
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
task.addOnSuccessListener(activity, locationSettingsResponse -> {
if (locationSettingsResponse.getLocationSettingsStates().isGpsUsable())
onGetLocation(activity);
});
task.addOnFailureListener(activity, e -> {
if (e instanceof ResolvableApiException) {
try {
Timber.d("Dialog to allow GPS location");
// Show the dialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
ResolvableApiException resolvable = (ResolvableApiException) e;
resolvable.startResolutionForResult(activity,
request);
} catch (IntentSender.SendIntentException sendEx) {
// Ignore the error.
}
}
});
}
我从以下位置获取位置:
@SuppressLint("MissingPermission")
void onGetLocation(Activity activity) {
FusedLocationProviderClient fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(activity);
fusedLocationProviderClient.getLastLocation().addOnSuccessListener(location -> {
//I am getting Null after enabling GPS Location
});
}
这是我的 onActivityResult 方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CHECK_SETTINGS && resultCode == RESULT_OK){
onGetLocation(this);
}
}
启用 GPS 定位后,我得到空位置。
【问题讨论】:
标签: android google-location-services