2011年3月24日木曜日

LocationSensorの弱点 Part2

Googleマップや他のGPS系アプリ、たとえばスピードメーターアプリなどでは、しっかり1秒毎にデータが更新されているのに、App Inventorで私が作ったものは、何回試してみてもなかなか位置情報が更新されません。

忘れた頃に、ピロッと更新されるので、まったく検討違いなことをやっているのではなさそうですが、そんなに難しい仕組みでもないはずなため、まったくもって原因不明でした。

ちなみに(ちなんでばかりですが・・)、App Inventorは、世の中に登場してまだ1年未満のツールで、しかもAndroidがまだ普及していない国内にいたっては、App Inventorを使っている方というのも昨年末の段階では殆ど稀だったような気がします。試しに使ったという情報は見つかりますが、詳しく解説しているのは2~3箇所くらいだったかな?と。

そんな状態のため、LocationSensorのことについて解説している国内のサイトも無く、情報やフォーラムはすべて海外サイトを参照するしかありません。

つたない語学力を駆使して、いろいろ調べていくうちに、ようやく答えが見つかりました。

それは、

「App Inventorに備わるLocationSensorは、位置情報取得後、次の取得まで60秒お休みする」

というものです。

まさに想定外の理由でした。これで今までの事象がすべて納得できました。そりゃぁ、元からそういう仕様だったら、いくら駆使してもできないはずだよなぁ・・・と。

さて、原因は分かったものの、引き続き海外サイトで対策などを調べていくうちに、ある対策を見つけました。それは、

「他の1秒毎に位置情報を取得するアプリを起動しておくと、App InventorのLocationSensorが休まず働く」

というものです。ホントか?と半信半疑でしたが、とりあえず適当なアプリは無いかな?ということで、とりあえずGoogleのオープンソースGPSロガーである

MyTracks

をインストールして起動。ログ取得をスタートします。

当然ですが、MyTracksはしっかりとログを取得し、軌跡をGoogleマップ上にトレースしていきます。

この状態のまま、MyTracksはバックグラウンドで動かしておき、いよいよ我がラリコンアプリもどきを起動。すると・・・・

なんと、しっかりと位置情報を数秒単位で更新するではないですか。今までの悩みがあったため、かなりこのときは感激した記憶があります。

しかし、間もなくまた壁にぶつかります。それは、

”位置情報が取得できずにアプリが強制終了”

次から次へと参ったものです。

どうするか?それはまた次回。

0 件のコメント:

コメントを投稿