久々にSmartTrainingアップデート

久々にSmartTrainingアップデートしました。
Ver.1.5.0です。

今回は、、、苦労しました。
年末年始の時間を使ってアップデートできるかと思ったら、実家の挨拶回りで終わってしまうし。。。

それは置いといて。

画面を消しても計測を継続する。
サービス使えばかんたーんじゃーんとか思ってましたが、当初そんなことは微妙に30%くらいしか意識した設計になっていなかったため、やり出したらあちらこちらでうまく動かないことが判明しました。データの持ち方とか、画面が落ちている間に起きた出来事の整理とか。
なので、結局内部構造はほぼ全て作り直し。見た目は全く変わっていないのが悲しいですが。

ついでに前から実験していた地図のヘッドアップ機能も突っ込んでみました。
本当は、ヘッドアップ中でも地図をスクロールさせたかったのだけど、地図が回転すると画面上のスクロール方向とずれが生じるのでsinだのcosだの使って回転計算して云々。。。
ま、結局スクロールの回転方向はある程度うまく補正できるようになったんだけど、スクロールする指を離した後の惰性で動くスクロールがどうしてもうまく補正できず断念。
せっかくなので、Android-Users-Groupにでも質問してみようかな。
でも、個人的にはナビはノースアップ派です。

そしてGPSの電源制御。
LocationManagerにリスナ登録する際に最低限更新情報を受け取る更新間隔を指定できるんですが(requestLocationUpdates()のminTimeですね)、どんな値を指定してもうまくいくってわけじゃないんですね。あまりに長い時間を指定するとどうしてもうまく情報がとれず。
予想としては、
・minTimeに長い時間間隔を設定する。
・計測のためGPS電源をONにする。
・実際に位置情報が取れるまでタイムラグがある(衛星電波をつかむまで)
・タイムラグ中にOS側が次の計測のためGPS電源をOFFにする。
・しばらく時間経過後GPS電源がONされる。
・実際に位置情報が取れるまでタイムラグがある(衛星電波をつかむまで)
・タイムラグ中にOS側が次の計測のためGPS電源をOFFにする。
・・・
というわけで延々位置情報がとれていないのではないかと。
結局、位置情報とれたら自分でGPSリスナ登録解除して一定時間後に再登録するようにしました。
この辺AndroidのAPIが期待する動作をGPSハード側ができていないってことなんですかね?
もしくは、これを実験していたのが1.5の時だったので、1.6では改善されているとか?
一応、リファレンスのrequestLocationUpdates()の説明には、
Background services should be careful about setting a sufficiently high minTime so that the device doesn't consume too much power by keeping the GPS or wireless radios on all the time. In particular, values under 60000ms are not recommended.
とあるけどねぇ。HT-03Aの動作はちょっと違ったみたい。(私の勘違いかもしれませんがね)
ま、いっか。

後は落ちないサービスについての調整。
サービスっても何もしていないと落とされちゃうんですよね。
結局これについては、根本的な解決はやってません。
いずれやってみよー。

コメント

このブログの人気の投稿

Joinノードを使う(その1)

Execノードを使う

Joinノードを使う(その4)