以前に比べて位置情報取得が止まってしまっていることが多くなった。 まだ、その詳細は掴んでいない。
位置情報取得サービス自体は動作しているが、位置情報取得が何らかの理由で行われなくなったように見えるが、 そうでないのかも知れない。
cvs形式のGPSログではチェックしきれないので、指定した日付のログを地図上に表示して、 位置情報取得状況をチェックしたい。
一般的な日付選択には DatePickerDialog が適しているかもしれないが、 今回は過去数日間のGPSログから一つ選択するだけでよいので、メニューあるいはポップアップウィンドウに ラジオボタンを並べる形の方がスリムでよいと思われる。いずれか実装が簡単な方を選びたい。
メニューをコードで表示している場合には、メニューに直近の数日分の日付をラジオボタンとして表示するのが 簡単であるが、メニューは xmlファイルで定義しているので、ポップアップウィンドウの方が楽であろう。
MapXでは、バス停アイコンをタップすると、そのバス停に止まるバス路線番号ボタンが画面下部にポップアップ され、路線番号ボタンをタップするとそのバス路線が地図上に強調表示されるようにしている。
これを流用する。路線番号はGPSログの日付に変更する。
上記のようなポップアップは MapX に実装済みであった。ただし、直近の GPSログには対応しておらず、 過去のGPSログを少し処理したものが対象であった。したがって、これを直近のGPSログにも対応できるように拡張すればよい。
生のGPSログのファイル名は日付であるが、これに境界ボックスを付け加えるように加工する。
変換プログラムを map3 に実装した。これにより、昨日(高尾山)のログを確認した。 タブレットについては途切れがほとんどなかったが、スマホでは何か所かで途切れがある。
昭和記念公園を歩いた記録でも、スマホでは何度も途切れがある。
おそらく、Android のサービスが止まったのではなく、位置情報取得が止まったものと思うが、 念のため、1分間隔で監視して、位置情報取得がなかった場合、エラーログを書き込んでみる。
MapXよりかなり簡単化できたので、別アプリとはしなかった。
就寝時の電池使用量が大きくなったような気がする。
現在は取得間隔を Home、Slow、Walk、Viecle に分けている。この切替にバグがあるかも知れない。 一旦は Home と Out の二つにしてみる。電池使用量が大差なければシンプルにしたい。
12秒か13秒間隔で20数回続いている。続く回数はもっと少ないこともある。
プログラムを下に示す。
if ((!atHome && interval > IntervalWalk) && !fPC) { Utils.writeLog("srvlogs", "外出により5秒間隔に変更する"); interval = IntervalWalk; high_accuracy = true; requestLocationUpdates(interval, high_accuracy); }
ここで変更しても、すぐ後で IntervalWalk(5秒)より遅い IntervalSlow(10秒) に変更している。
サービス自体は動き続けるが、GPS電源が切られるようだ。
位置情報取得が1分程度なかったときの位置情報取得停止&再開がうまく行くかどうかは未確認である。
今日はスーパーマーケットに入ってしばらくして位置情報取得がストップした。 また、その後、バス停で5分ほどバス待ちをしたが、そのときもストップした。
位置情報取得を一旦終了させ、再度、スタートさせてみよう。