Androidアプリ「GPS定期測位」を作ってみた

→ Galaxy SII/Android/Google Latitudeの不満点

といった不満があったので、Androidアプリ作成の練習も兼ねて「一定時間おきにGPS測位するだけ」のAndroidアプリを作ってみた。

無料なので、もし同様の不満を感じているかたがいらしたらどうぞ。
個人的にはけっこう満足。
Google Latitudeで、そんなにバッテリも使わず、1時間に1回程度は、むちゃくちゃな誤差もなく、位置履歴が採れるようになったので。

GPS定期測位(Android Market)

アプリのアイコン、GPS衛星のつもりなんだけど・・・そう見えなかったらゴメンナサイ。

GPSでの測位を一定時間おきに行う、ただそれだけのアプリです。

このアプリそのものは、測位結果を記録することを目的としていません。

このアプリがGPSで測位したタイミングで、Google Latitudeが位置情報履歴を残してくれることを期待しています。

■製作意図

Androidの「無線とネットワーク」での位置情報取得を有効にしていると、時として非常に精度が悪い位置情報が取得されることがあります。

しかし、それを嫌って「無線とネットワーク」での位置情報取得を無効にし、「GPS機能を使用」だけを有効にしていると、Google Latitudeは自分でGPSを起動して位置情報を取りに行こうとはしないようで、Googleマップやその他のアプリがGPSを使った時、ついでに位置情報履歴を記録するだけのようです。逆に言うとGPSを使わないでいると、いつまでたっても履歴が残りません。

ならば、定期的にGPSで測位してやるアプリを動かしておけば、Google Latitudeも定期的に履歴を残してくれるのではないか?というのが本アプリの製作意図です。

実際、本アプリを15分おきの設定で動作させておけば、1時間に1~2回程度は、Google Latitudeで履歴が残るようになりました。

■設定・動作について

GPS測位間隔は、15分・30分・1時間・2時間 から選択できます。
(注:間隔は目安であり、正確ではありません)

GPSを起動して一定時間内に測位できなければその回の測位はあきらめますが、
そのタイムリミットは 30秒・1分・2分 から選択できます。

有効に設定すると、Androidを再起動しても、起動時から定期測位動作は有効になります。

アプリの画面には、直近10回までの測位動作結果を表示します。
動作時刻 OK 測位成功 測位までにかかった秒数と、大まかな座標を表示
動作時刻 NG 測位失敗 失敗判定までの秒数

本アプリの測位機能は常時バックグラウンドで動作しているわけではなく、必要時のみ起動しますので、バッテリ使用は最小限だと思います。
(技術的に言うと、ServiceをAlarmManagerによって起動しています)

動作確認は GALAXY SII(Docomo SC-02C) Android 2.3.5 で行っています。

2011/11/25 Ver 1.0 初版

GALAXY SII(Docomo SC-02C)の「位置情報履歴」がヘン

GALAXY SII(Docomo SC-02C)の、「位置情報とセキュリティ」設定画面には、「位置情報履歴」というのがあって、「最新の位置情報を100件まで保存」と書いてあるのだが…

そう言われたら、当然、FIFO・リングバッファ式に位置情報履歴が保存されてるんだろうなあ、と思うじゃないですか。見てみると、

最新のが1件と、あとは妙に古い日の位置情報がこんなふうに同時刻で多数残っている。
昨日やおととい(11/20, 11/19)もGPSは使ったのに、スルーされてる。
いつ見てもこんな感じ。なにこれ…(‘A`)どういうロジックでこうなってるのか全然わからないよ。

Galaxy SII/Android/Google Latitudeの不満点

基本的に私は、携帯の位置情報を常にGoogle Latitudeで記録したいと思っているのだが、現在以下のような不満がある。

  • Androidの「無線とネットワーク」(== WiFi/3G)での位置特定機能をオンにしておくと、ひどく精度が悪いことがある。
    数キロ~数十キロずれることもざらで、ひどいときは日本から出てもいないのに、ロンドンにいたことになっていたことがあった。

    東京モーターショー(@ビッグサイト)に行ったとき、途中まで地下鉄に乗っていたのでその間はこの機能に頼ろうと思ってオンにしたまま、ビッグサイトに着いても、4時間ほど、オフにもどすのを忘れてたときは面白かった。その4時間のあいだに私は札幌・千葉・横浜愛知・大阪・フランクフルトにいたことになっていた。なんだそりゃ。まあ原因はだいたい想像できるが。

  • だから、この機能はオフにして、GPSでだけ測位したいのだが…

  • Galaxy SIIをAndroid2.3.5にアップデートして以降のことのように思うが、「無線とネットワーク」での位置特定機能をオフにしていると、位置情報が全くGoogle Latitudeに記録されなくなった。記録されるのは、マップアプリ等でGPSを使った場合に、ついでに行われるだけのようだ。

Googleがどんだけ「無線とネットワーク」での位置特定機能に自信を持っている(マップ使ってるとしょっちゅうオンにさせたがるもんね)のか知らんけど、こんな現状なんで、私は、常時使う気にはとてもなれない。
GPSのみ使う設定でも、数時間に1回くらいとか、任意設定の時間間隔で、Google Latitudeの記録ができるようにしてほしいもんだと思う。

まあ、バックグラウンドで、定期的にGPSで位置情報とるアプリを動かしておけばしのげるけど、標準機能で持っといてほしいよ・・・。

「定期的にGPSで位置情報とるアプリ」を作ってみた。

android携帯の位置情報

Galaxy SIIで、Google Latitude を使い、自分の位置情報を記録している。
しかし、位置情報取得にGPSだけを使用するようにしていると、ごく粗い頻度でしか位置情報を記録してくれないようだ。

バックグラウンドで、別の、GPSロガーアプリを、1分おきにログ取得、とかの設定にして起動しておくと、Google Latitudeも釣られて(?)、一気に位置情報記録密度が増す。しかし、そうすると電池の消費が激しい・・・。

「WiFiまたは3Gで位置を特定」という設定もあり、これを有効にしておくと、そっちで得た位置情報を使い、GPSは起動せずに済ますみたい。
Google LatitudeではWiFiがOFFになっていると、わざわざ警告してくる。WiFiで位置推定した方が早いよ、って言いたいんだろう。
GoogleはWiFiでの位置情報にずいぶん自信あるようだが、しかし、「WiFiまたは3Gで位置を特定」を有効にしておくと、精度がすごく悪いんだよねえ・・・。数キロ~ひどいときは数10キロズレた地点になることがある。

iPhone 3GSでGoogle Latitudeを使っていたときと比べて、「GPSのみにしたときの記録頻度の粗さ」と、「WiFiまたは3G併用したときの精度の悪さ」には不満を感じている。同時に使い比べたわけではないのであくまでそんな気がする、程度だが。

位置情報取得にGPSのみ使用し、取得間隔はユーザが任意に決められるように設定できないのかな。

西沢渓谷

西沢渓谷に行った。
滝がいくつも見られてとても楽しい。
下界は猛暑日だったが、ここは沢沿いを登るし、道のりのほとんどを木陰を歩くので涼しい。

七ツ釜五段の滝

順路どおり歩くと左に登っていき、さらにこの滝の上部も見られる。

PENTAX Optio WG-1 GPS
(※GPS測位できてなかったのでEXIF内の位置情報は後付けしたもの。使えねーな、こいつのGPS…)

ただ、通路が狭いので、最大のみどころ七ツ釜五段の滝などでは、他の人の通行の迷惑になるのであまり落ち着いて滝を見ていることができない。

西沢渓谷ではほぼ全域でドコモが使える。
エリアマップを見ると、終点(七ツ釜五段の滝の先)はぎりぎりエリア外になっているみたいだけど、実際は終点でもなんとか使えました。
でも三重の滝あたりでTwitter&TwitPic投稿しようとしたら失敗してしまった。Twitter for Androidから、TwitPicへの画像投稿は成功していて、その後のTwitterへの投稿で失敗してる。どうも Twitter for Androidのせいみたいで、ほかのTwitterクライアントアプリなら大丈夫だったりする。

西沢渓谷は一周10キロほどの道を一方通行で歩く。行きは沢沿いを上り、終点まで行ったら、沢向かいのトロッコ軌道跡を今度はひたすら下る。
下りはほとんど沢を見ることは出来ず、その意味ではちょっとつまらないけど、緩い下り坂のトロッコ軌道跡を歩くのはなんか楽しい。レールは地面から顔を出してはいるがほぼ埋まっていて歩きにくくない。

9時頃歩き始めて、写真撮ったり水に触ってみたりして遊びながら登り、12時頃終点に着いて食事をし、12:30頃出発、13:30頃に入口に戻った。

私らが帰るとき、カップルが入っていき、女の子はサンダル履きだったが…。危ないな。ちょっとした山道だし濡れている所もあるし、崖から落ちて死ぬ人もときどきいるようだし。
行けるところまで行って引き返す気かもしれないけど、ここ基本一方通行だから、そういうことされると迷惑だし。

帰りに「みとみ笛吹の湯」に寄って汗を流した。こぢんまりした村営温泉。(いまは合併して山梨市だけど)
露天風呂がぬるくて涼しい感じで気持ちが良い。源泉が36℃なんぼとのことだったから、露天風呂は加熱してないということだろうか?
その点はよかったのだが、脱衣所に清潔感がイマイチ無いのが難点…。