LocationListener在第一次结果之前需要太长时间

时间:2015-12-13 08:39:20

标签: android geolocation location

我遇到了问题。如果我关闭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这么慢,但下面的时间要快得多?

1 个答案:

答案 0 :(得分:0)

如果应用需要更准确,更新的位置,请使用gps提供商。在获取位置之前,必须预热Gps提供商。因此,热身需要时间和变化,因为你在哪里。您可以使用缓存gps位置调用getLastKnownLocation(“gps”)直到gps硬件预热,并检查这是否太旧。