从 LocationServices 返回的位置年龄

Mar*_*igo 2 android location-services

我需要确保我使用的位置是新鲜的:

有没有办法知道返回的位置结果有多旧LocationServices.FusedLocationApi.getLastLocation

如果不是:如果我向LocationServices.FusedLocationApi.requestLocationUpdates(使用setNumUpdates(1)setMaxWaitTime(0))注册一个位置侦听器,那么如果位置与返回的位置相比没有更改,它会更新吗LocationServices.FusedLocationApi.getLastLocation

小智 6

是的,有一个非常简单的方法。getTime()您可以通过如下调用来获取位置修复的时间:

Location currentLocation = LocationServices.FusedLocationApi.getLastLocation(apiClient);
long locationAge = System.currentTimeMillis() - currentLocation.getTime();

if (locationAge <= 60 * 1000) { // not older than 60 seconds
    // do something with the location
}
Run Code Online (Sandbox Code Playgroud)

文档建议不要使用 System.currentTimeMillis() 进行时间比较,但我从未遇到过这种方法的任何缺陷。但是,您应该考虑阅读(简短的)文档:

https://developer.android.com/reference/android/location/Location.html#getTime()