我目前能够在服务可用时接收位置更新,但如果服务不可用,我需要获得响应,以便我可以调用另一种方法来处理这种情况。从我收集的内容来看,这些是onLocationResult()和onLocationAvailability()的唯一两个方法,我必须使用requestLocationUpdates()。我从onLocationAvailabilty获得的响应似乎不是很准确,如果我实际上已经停止服务,那么一段时间后,这个方法可能不会被fusedLocationClient调用。我的另一个问题是onLocationResult似乎没有让我知道如果没有结果,这在我的情况下非常有用。知道fusedLocationClient无法找到位置或当前无法使用的最佳方法是什么? locationAvailability.isLocationAvailable()往往给我一个不可靠的答案,即使我有服务也是假的......
mFusedLocationClient.requestLocationUpdates(mLocationRequest, callback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
// do work here
onLocationChanged(locationResult.getLastLocation());}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
}
}, Looper.myLooper());
}
答案 0 :(得分:0)
我找到的最佳解决方案是实现LocationListener并使用onStatusChanged()方法,该方法在用户步骤停止服务时提供响应,并在他们重新投入服务时再次提供响应。