2011-10-26 25 views
1

启用GPS后,GPS准备就绪需要一段时间。因此,使用此代码可能会得到一个过时的位置: location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 我无法使用过时的位置。我怎样才能获得我需要的位置?如何获取未过期的位置?

这里有一个类似的问题: Android: getLastKnownLocation out-of-date - how to force location refresh?

从它,我可以用LocationListener的获得更新的位置,这应该是不会过时的。这是正确的。但我该如何处理这种情况:

我已经启用GPS,然后启动我的应用程序。如果我呆在一个地方而不移动,那么onLocationChanged()将不会被调用。所以我不能用这个方法来判断getLastKnownLocation()的返回值是不是过时的?

任何想法?

回答

1

如何获取未过期的位置?

你叫requestLocationUpdates()为1000毫秒minTime,在onLocationChanged()Location,你叫getAccuracy()。如果准确度可以接受,请致电removeUpdates()

所以我不能用这个方法来判断getLastKnownLocation()的返回值是否不出来过期

我认为它会返回一个包含了time stamp Location对象。您可以为现在和位置之间的时间差设置容差getTime()

+0

我会尝试时间戳。 – flypen

1

每个Location对象都有一个getTime()方法,该方法返回修复的时间。您可以使用它来确定修复程序的年龄。

+0

对时间戳看起来非常有帮助。谢谢。 – flypen