经过大量的阅读和与它的斗争,我不得不问我的好同事。
我有一种行为,我无法向FusedLocationClient解释。
我想得到的位置(只有一个实例),以显示一些信息给用户。为此,我调用:mFusedLocationClient.getLastLocation().addOnSuccessListener(...)
如果getLastLocation()的位置为null。我想“跳开始”客户端给我一个位置。
LocationRequest locationRequest = new LocationRequest();
locationRequest.setFastestInterval(5000);
locationRequest.setInterval(10000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
Timber.d("OnLocationResult entered");
if (locationResult != null && !locationResult.getLocations().isEmpty())
findCurrentArea();
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
Timber.d("OnLocationAvailability entered");
super.onLocationAvailability(locationAvailability);
}
};
mFusedLocationClient.requestLocationUpdates(locationRequest, mLocationCallback, null);让我在前面说,我也使用了LocationSettingsRequest来检查设置,并且总是成功的。
奇怪的是:
onLocationAvailability()被叫了两次。第一次响应是真的,但是没有调用onLocationResult(),然后我得到了false的可用性!我有过几次让它被叫不止一次的场合。LocationSettingsRequest的失败案例并进行自动解析(与Google一样弹出式),那么这个位置就会正确触发!问题基本上是..。为什么?
在打开位置服务时,自动解析弹出与按快速访问按钮有什么不同。在检查设置时,快速访问按钮也会返回成功的结果。是否有另一种万无一失的方式来请求requestLocationUpdates()
提前谢谢。
发布于 2022-11-06 18:19:27
我遇到了同样的问题,我用LocationRequest.Builder创建了我的locationRequest,然后,GPS信号变得稳定了:
locationRequest = new LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 1000)
.setWaitForAccurateLocation(false)
.setMinUpdateIntervalMillis(500)
.setMaxUpdateDelayMillis(1000)
.build();https://stackoverflow.com/questions/54437865
复制相似问题