2011年7月6日水曜日

ちょっと進んだかな。

ずっと放置状態だった、Android開発のお勉強を再開しました。
GPSのLocationを得るのはほんの数行でできてしまいます。

android.location.LocationListener
を実装し、以下の未実装メソッドを追加するだけ。

public void onLocationChanged(Location location) {}

これでAndroid端末の位置情報が変わったというイベントが発生したら、
onLocationChangedメソッドが実行されます。
(ホントかしら?未検証です。)

今のところやりたいのは、累積距離をカウントすることです。
累積距離はとりあえずはメンバ変数に蓄えておくとして、
location間の距離を計算するには、
android.location.Location
のdistanceToメソッドを使用すればいいらしいです。

float distance;
Location old_location

@Override
public void onLocationChanged(Location location) {
      distance += location.distanceTo(old_location);
      old_location = location;
}

みたいに書けば、累積距離を計算できるはず。
ここまではあくまでも頭の中で考えたものなので、はしょってる部分も多いし、そのままじゃダメだと思います(笑

距離の計算には、locationの位置情報から自分で球面距離やら3次元で距離を求めたりなんかをしないといけないと思い込んでいたので、こんな簡単にできるとは、かなり拍子抜けです。

何とか累積距離を表示するプログラム作ってテストするぞ!

2 件のコメント:

  1. おお!進んでる(笑)

    2^16とか2^32とかカウントするとリセットしちゃうバグを期待しております(笑)

    返信削除
  2. ドラクエですか?(笑
    もっと程度の低いバグを連発する予定ですけどね。
    (-m-;)

    返信削除