我遇到了问题。如果我关闭GPS,然后再将其打开 - getLastKnownLocation()将返回null。 在这种情况下,获取当前坐标的唯一方法是LocationListener。 (如果我错了,请纠正我。)
所以我打电话给听众:
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 10, (float) 0.01, locationListener );
.....
public void onLocationChanged(final Location loc)
{
try {
addresses = geoCoder.getFromLocation( loc.getLatitude(), loc.getLongitude(), 1);
if (addresses.size() > 0)
{
String cityName = addresses.get(0).getLocality();
String streetName = addresses.get(0).getAddressLine(0);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
找到位置需要大约一分钟(!)。虽然一旦找到它,它就会每秒更新一次。但它对我帮助不大。
我需要尽快找到当前坐标。怎么办?为什么第一次调用onLocationChanged这么慢,但下面的时间要快得多?
答案 0 :(得分:0)
如果应用需要更准确,更新的位置,请使用gps提供商。在获取位置之前,必须预热Gps提供商。因此,热身需要时间和变化,因为你在哪里。您可以使用缓存gps位置调用getLastKnownLocation(“gps”)直到gps硬件预热,并检查这是否太旧。