Android 安卓,全球定位系统。每秒钟获取一次位置

Android 安卓,全球定位系统。每秒钟获取一次位置,android,gps,location,coordinates,Android,Gps,Location,Coordinates,我有这个: public class GpsUpdate extends Observable implements LocationListener { private int x_position; private int y_position; private float currentAccuracy; public GpsUpdate(Observer observer){ addObserver(observer); } @Override public void o

我有这个:

public class GpsUpdate extends Observable implements LocationListener  {

private int x_position;
private int y_position;
private float currentAccuracy;
public GpsUpdate(Observer observer){
    addObserver(observer);
}


@Override
public void onLocationChanged(Location location) {
    int lat = (int) (location.getLatitude() * 1E6);
    int lng = (int) (location.getLongitude() * 1E6);
    setAccuracy(location.getAccuracy());
    setX_position(lat);
    setY_position(lng);
    setChanged();
    notifyObservers();



}
@Override
public void onProviderDisabled(String provider) {
}


@Override
public void onProviderEnabled(String provider) {
}

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

public int getX_position() {
    return x_position;
}
public void setX_position(int x_position) {
    this.x_position = x_position;

}
public int getY_position() {
    return y_position;

}
public void setY_position(int y_position) {
    this.y_position = y_position;
}

public void setAccuracy(float currentAccuracy) {
    this.currentAccuracy = currentAccuracy;
}


public float getAccuracy(){
    return currentAccuracy;
}
}

此方法(onLocationChanged())通知其他类中的另一个方法(update())位置已更改,但我需要收集所有坐标,即使当前坐标与前面的相同

_GPSUPDATE = new GpsUpdate(this);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, _GPSUPDATE);

    @Override
        public void update(Observable observable, Object data) {
            xCurrent = _GPSUPDATE.getX_position();
            yCurrent = _GPSUPDATE.getY_position();
                     .....
          }

所以,我必须添加/更改什么才能每秒获得位置?

这是一种相当糟糕的方法。即使您需要每秒存储一次位置,也要重新定义应用程序逻辑以存储时间戳为的位置。这就足够了,因为(假设
T
是以秒为单位的增量时间)如果在
T=0
时您接收并存储了
locationA
,在
T=2
您收到并存储了
locationB
,如果您想知道
T=1
的位置是什么,但没有看到明确的记录,您知道当时的位置没有变化,因此很明显,您的位置等于最近的
T
位置的上次存储位置,在本例中,在
T=1
处,您的位置(仍然)是
locationA
,因为它自
T=0以来没有改变。这是一种更好的方法,可以为您节省大量存储空间。如果您将其存储在datbase中,那么获得正确的结果也很简单-只需搜索时间戳小于或等于所需时间戳的条目,按时间戳desc排序,限制为1。

那么问题是什么呢???为什么要这么快杀死用户的电池?不管怎样;]它可以是每10秒一次,但我需要得到坐标,即使它们是不变的。