Android:仅获取最近的位置,而不是getLastKnownLocation?

时间:2013-07-09 13:04:44

标签: android gps location

我正在开发一个Android应用程序,其中当前和精确的位置是关键。检测到GPS定位后,它将移至下一个活动。

问题是我在户外进行了测试,发现有时它只是使用了之前修复的位置。

所以我要问的是什么;有什么其他逻辑可以从LocationManager获取位置而不是getLastKnownLocation吗?我还没有找到一个看起来不像

的例子
    Location location = locationManager.getLastKnownLocation(provider);

感谢名单!

3 个答案:

答案 0 :(得分:2)

您可以使用LocationListener然后调用locationManager.requestLocationUpdates()传递您自己的侦听器实现。

答案 1 :(得分:2)

以下是official guide的示例代码(稍加修改):

// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
         makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}
    public void onProviderEnabled(String provider) {}
    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

在这里,您只需从GPS请求更新,一旦收到位置,您就会收到回拨电话。

答案 2 :(得分:1)

Google发布了新的Location API,请查看此链接https://developer.android.com/training/location/index.html

对于您的问题,您需要实现位置更新回调以获取当前位置。 https://developer.android.com/training/location/receive-location-updates.html