1

私はこれを持っています:

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();
                     .....
          }

それで、毎秒位置を取得するために何を追加/変更する必要がありますか?

4

1 に答える 1

3

これはかなり悪いアプローチです。毎秒場所を保存する必要がある場合でも、タイムスタンプ付きの場所を保存するようにアプリロジックを再定義します。Tこれで十分です(秒単位のデルタ時間であると仮定しT=0ます)受信して保存locationAしたT=2とき、受信して保存したとき、locationBどの場所にあったかを知りたい場合は、T=1明示的なレコードが表示されないので、その時点で場所の変更はなかったことがわかります、したがって、あなたの場所が最後に保存されたものと最も近いものと等しいことは明らかです。Tこの場合、T=1あなたの場所(まだ)はlocationAそれ以来変更されていませんでしたT=0。これははるかに優れたアプローチであり、ストレージを大幅に節約できます。そして、これをdatbaseに保存すると、正しい結果を得るのも簡単です。必要なタイムスタンプ以下のエントリを検索し、タイムスタンプの説明で並べ替えて、制限を1にします。

于 2012-09-11T14:03:43.470 に答える