投稿

4月, 2010の投稿を表示しています

Google Maps Data APIの謎

SmartTraining 2.0.0のこと。 今回のバージョンアップは初期バージョンリリース以来ずっと実現したかったGoogle Mapsへのデータアップ機能実装がメイン。嬉しかったので自分へのご褒美という意味でメジャーバージョンをあげちゃいましたwバージョン管理なんてそんなもん。 Google Mapsへのデータアップロード、意外に手間取りました。つい最近までずっとMaps関連のAPIは Google Maps API だけだと思っていて、外部アプリからデータのアップロードなんてできないものだと思い込んでいました。 ところが先週、何気に情報探していたら Google Maps Data API なるものを発見。紛らわしー名前だなー。これ発見した時「勝てる!」思いましたよ。楽勝だってね。でもそこからが大変。 まずは、Androidアプリを開発してるわけなので、Javaライブラリを探す。 発見 。おおぉー、サンプルも載ってるし楽勝じゃねーか。と思いつつライブラリダウンロード。ダウンロードしたライブラリには普通のJava環境用のライブラリとandroid用のライブラリが格納されている。普通のJava環境用のものはjacksonやらkxmlやらcommons-loggingやらいろいろと依存ライブラリがあるらしく、Android上でそのまま動かすのはちょっとつらい。 そこでAndroid用ライブラリをためす。早速ライブラリを組み込み実験用アプリを作りマップのリストを取得してみる。が、なんかおかしい。Webサイト上のサンプルをそのまま書いてみてもEclipse上では赤い下線が出る。 「そんなメソッドねぇ」だと。そこでダウンロードしたJavaDocs見ると、Webサイト上のサンプルで使ってるメソッドなんてありません。Maps関連のクラスを見てもAUTH_TOKEN_TYPEとVERSIONのstaticなフィールドが定義されているだけ。んー、なんだこりゃ。ライブラリのソースをダウンロードしてみるがJavaDocs通りフィールドが2個定義されているだけ。。。オイw未実装かよwさんざん探したけどサンプルもありません。 一晩寝てわかりました。Webサイト上のサンプルはv1.4用のっぽいんですね。この当時のライブラリにAndroid版はない。ダウンロードしたのはv2.1。

HT-03AとXperiaの比較~加速度センサー&GPS編

イメージ
HT-03AとXperiaでSmartTrainingを動かして加速度センサーとGPSの計測結果を比較してみました。 ◆計測方法  ・2端末を縦向きにして同じ胸ポケットに入れる。  ・実測約1000歩の区間を普通の速度で歩く。 ◆結果 ↑Xperia画面 ↑HT-03A画面 ・Xperia  歩数:1178歩  距離:963m ・HT-03A  歩数:944歩  距離:921m 歩数が1000歩から±10%~20%誤差があります。 それぞれのセンサーの特性による違いなのか、それとも、端末自体の重量によりセンサーが受け取る衝撃の強さが違うのか、ちょっとよくわかりませんが、端末によってこの程度の誤差は付き物なのかもしれません。 距離も5%程度違っています。 これは、30秒おきに計測しているGPSのロケーション情報が取れるタイミングが微妙に異なるのが原因で、地図上の軌跡が異なっていることが原因です。 カロリーと継続時間が微妙に異なっているのは、計測停止時に同時に2端末をストップさせることができずに、もたもたしていたせいです。カロリーは継続時間に依存するのでここで端末の違いによる誤差がでることはありません。 ↑Xperia画面 ↑HT-03A画面 GPSから取得した時間-高度グラフをみても結構違いますね。 API経由で取れちゃうんだからアプリとしてはどうしようもないのですが、いろいろと内部での補正の方法が違ったりするのかな? いずれにしても精度としては数十mがいいところといった感じでしょうか。 ---- その後、同じコースでもう一度計測してみました。 今回は朝出勤の時に測ったので、ちょっとだけ急ぎ足なのかもしれませんね。 やっぱり、Xperiaの方が多くカウントされます。 同じような傾向がでました。 ・Xperia  継続時間:09:28  歩数:1120歩  距離:930m  カロリー:104kcal ・HT-03A  継続時間:9:22  歩数:926歩  距離:808m  カロリー:103kcal

SmartTraining 1.9.0 リリース

先日リリースしたSmartTraining1.9.0のこと。  今回のバージョンアップは、以前Andronaviさんで 紹介 していただいた時に低かった評価の改善、Marketでいただいたコメントに対する対応を行ってみました。  歩数については、あの当時から万歩計ロジックを2度修正して多少はマシになっていると思います。一応、個人的な計測では悪くても2割程度の誤差。ロジックについてはさらに見直して精度アップの余地はあると思っています。ただ、なかなか試験に時間がかかるので、引き続き実験と計測を繰り返しつつ徐々に改善していこうかと思っています。  一時停止中の距離カウントを止める機能は、途中でトレーニング種別を変える機能と絡めてみました。例えば、将来的にはトライアスロンや、スキーでの滑走&リフトなど、途中で実施する運動が変化するケースでも計測の継続を容易にすることを想定しています。現実的には今のハードウェアが耐水的にも耐寒冷的にも弱いのでこの機能が真価を発揮するのはまだまだ先のことになりそうです。あと、本当は人が操作しなくても自動的に状況を認識して記録してくれるというのが理想ですが、こちらはもう少し研究が必要ですね。  Twitterにつぶやく機能は1.8.5で適当に実装(といっても他アプリに送るだけですが)してみたのをもう少し拡張してみました。っていうか、誰もハッシュタグ使ってつぶやいてくれないので消そうかと思いましたがwちょっとだけ悪あがき。  最後は、ContentProviderによるデータの公開。どうやって公開するのが一般的なのかわからなかったので、 サポートサイト に利用側コードを貼ってあります。マッシュアップで運動の計測にはこのアプリを活用していただけるととても嬉しいです。データアクセス手段の公開と外部へのエクスポートによるアプリマッシュアップはAndroidならではの機能ではないかなと思っています。  あと、おまけ。機能的には地味なのでどこにもコメントありませんが、設定画面で使っているトレーニングタイプの選択時に表示しているリストダイアログ。以前は標準のListPreferenceを使っていたのですが、結構殺風景だったので、リスト上にアイコンを表示するように機能拡張してみました。 やり方は、DialogPreferenceを継承したオリジナルのクラスを作