每30秒后以10米的距离获得当前位置(位置更新)的有效方法

时间:2012-09-17 00:30:24

标签: java android location

我有以下代码,在Most Recent location30 seconds之后得到10 meters,但它会不断接收位置更新,并在获取最新的位置更新后每30秒一次。

有没有更好/更有效的方法呢?

基本上我的要求是每隔30秒使用Current Location 10 meters distance moved。我可以用几种方式做到这一点,我在想是否有更好的方法来解决这个问题?那么Timer类呢?

任何想法都会有很大的帮助。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

    locationListener = new GPSLocationListener();

    locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 
            30000, 
            10, 
            locationListener);

}

以下是实现LocationListener的类。

private class GPSLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            GeoPoint point = new GeoPoint(
                    (int) (location.getLatitude() * 1E6), 
                    (int) (location.getLongitude() * 1E6));
        System.out.println(location.getLatitude()+"--"+location.getLongitude());

        }
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

1 个答案:

答案 0 :(得分:0)

Techgeeky,不确定你到底想要什么。但是你所拥有的正是你所描述的,即如果你已经移动了10米,那就是每30秒获得一次nupdate。操作系统会让GPS芯片休眠30秒,一旦醒来,如果你移动10米,它会给出更新。你有什么应该完美的工作,究竟是什么问题?我编写了多个使用位置监听器的应用程序,每30秒唤醒一次是合理的,以确保获得更新。