背景
2025年2月
アウトドアでのトラッキング。アンドロイドのスマホを使って位置情報の記録と、ネットワークを通じての位置情報の通知をしたい。具体的にはLivetrack24のサービスを使っている。記録と通知はサービスに対応したアプリを使っている。android9のスマホで使えていた。たまに途切れることもあったが気にならなかった。
電池が持たなくなったのでandroid14のモデルを買った。使い方は同じなので従来使っていたアプリを入れたらトラブルが頻発した。
- 位置情報が途切れる
- 途切れてそのまま終わることが多い
- 途切れた後に復活することもある
- たまに途切れないこともある
- 複数のアプリで同様のトラブルが起こる
情報収集
ネット検索すると似たような話が出て来る。趣旨としてはandroidのバージョンが進んで管理が厳しくなったことでトラブルが頻発している。具体的には権限と電源管理の問題ではないかと思った。
位置情報の権限は「常に許可」、その項目が無いアプリは「使用中のみ許可」にした。
電源について。バッテリーセーバーは使わない。バッテリーマネージャーの自動管理は使わない。各アプリの設定で、「バッテリー使用量の制限なし」にした。
以上の設定はアプリの初期設定でそのようになっていたものもあり、そうではなくて改めて設定したものもある。この設定で使ってみたが芳しくない。原因は他にあるみたいだ。ここまでは新しいandroid14のスマホにおける不具合。
古いスマホに戻してみた
以前使っていたandroid9のスマホを再び使ってみた。電池の持ちは悪いが、不要なアプリを消してトラッキング専用にすれば使えるだろう。なんなら電池交換してもいいし。ところがダメだった。以前は使えていたのに上手くいかない。現象は新しいスマホと同様。困った。行き詰った。
いろいろやってみた
両方のスマホでいろいろやってみた。アプリの強制終了とキャッシュ消去をしたら上手く動いたので、これで行けると思ったら、次はまた動かなくなった。何か他の条件との兼ね合いがあるのかもしれない。
9と14どちらも総じてダメなんだけれども、ときどき上手く動くこともある。始めは片方づつ見ていたのだが、埒が明かないので両方同時に使うようにした。同時に使っても9と14で現象が違う。スマホの違い、アプリの違いを切り分けて考える必要があると思う。
android9
以前は調子よく動いていたのに、今は14より調子悪い。あるアプリは途中で止まってそのままのことが多い。別のアプリは止まっても復活するが、止まった後はとぎれとぎれで軌跡と呼ぶには程遠い。設定を一から見直してひとつ気づいた。位置情報と電源の設定が変わっている。全ての権限が「無し」でバッテリーは「最適化あり」になっていた。どうやら権限等の設定がしばらく(3ヶ月超か?)使わないと初期設定に変えられてしまうらしい。ちょっと不可解なのは、位置情報の権限が「無し」になっているのに、最初は位置情報を取っていること。あるいは設定は同じなのにアプリの違いで現象が違うこと。ネット検索したが明確な情報には行きつかなくて、「ブラックボックスなので解らない」というのが最もわかりやすい情報だった。
とりあえず必要な全ての権限を与えて、バッテリーも「使用量の制限なし」に設定した。それから権限の「自動削除オフ」という設定があったので、トラッキングに使うアプリをこの分類にしておいた。
バックグラウンドでの動作を制限する「パフォーマンス最適化」というのもあった。(設定/パフォーマンスの最適化) これを「ON」にするとバックグラウンド動作が「制限無し」になるが、全て「OFF」になっていた。トラッキング用のアプリをONにしておいた。
これらの設定を見直して使ってみた。何度か上手くいったので復活したかと思ったが、どうもおかしい。例えば4時間ほどの活動で、初めは記録が取れていたが3時間くらいで止まって復活しない。端末自体に残った記録も同じ。アプリの動作は(少なくとも見掛けは)正常だった。この状況からアプリは動作しているが、位置情報が止まって復活していないように見える。14の端末も位置情報が止まるが復活する。9は復活しないところが異なる。
「位置情報の精度」という設定を変えてみた。「位置情報の設定を改善」の項目がOFFになっていたのをONに変えた。→この設定の変更では、変化はなかった。
14では定期的に端末を動かしていれば位置情報は止まらなかった。同じようにして試したら、9でも止まらなかった。どうも、この9の端末の方がモーションセンサーの感度が高いようで、14と同じ場所に収納しても「止まりにくい」。過去の記録を調べると、この9の端末では概ね記録が取れているが、時どき止まっていることがあった。
9の端末は調子よく使えていたと思っていたが、それは間違いだったようだ。正しくは9の端末でも止まることがあったが、稀なので気にならなかった、という状況だろう。
android 14
9よりマシなんだけれど正常とは言い難い。総じてアプリは動いている(ように見える)が、軌跡の記録はは途中で止まって終わる。あるいは一度止まった後に再開する。再開して停止している部分がわずかで、使い物になる記録が残る。あるいは再開するがポイントがわずかでなんだか解らない。などなど、まれに正常に動くこともあるがトラブル頻発で使い物にならない。
9と同じように設定が違っていないか確認した。バックグラウンド動作の設定は(設定/システム/パフォーマンス/バックグラウンドアプリの管理)。位置情報/電源の設定も合っていた。たぶんインストール時は設定画面やメッセージが出て、正しく設定するのだろう。
設定は正しいと思うのだが上手く動かない。何度か使って、ひとつ面白い記録を見つけた。始めは正しく記録していて途切れる。再開するがポイントが少なくてなんだか解らない。しかし最後のところで正常に戻って終了している。この時は二つのアプリを同時に動かしていた。二つともアプリは正常に動いている(ように見える)が記録は途切れている。記録は二つのアプリで同じように途切れて、最後に同じように復活している。これはおそらく端末の位置情報またはアプリの動作が途中で止まっている、そして最後に復活しているのだろう。
位置情報の設定を確認してみたが正常に見える。アプリによる位置情報の使用は許可している。位置情報サービスの設定も正しいと思う。ネット検索したりいじくったりしたが、他にそれらしい設定は見当たらない。
ネット検索で可能性のある情報を見つけた。位置情報を送る業務用アプリを作っている会社のブログ。https://maps.multisoup.co.jp/blog/5331/ 位置情報が途切れる条件を調べてくれている。まさに私の目的にぴったり。それによると端末をスリープにして30分ほどすると位置情報が途切れる。そして端末を「振る」と再開する。これじゃないかな。スマホにある程度の動きがあれば止まらない。動きが無い(少ない)と途切れる。残念ながらブログには回避する方法は載っていなかった。
上に書いた事例では、最後のところで明確な動作があったと記憶している。それ以前の移動中も動作はあったが、最後の部分と比べて動作が少なく、スマホの動作と認めない範囲だったのだろうか。常に動いていればいいのか。私の活動はそういうものなので難しい。
端末の置き場所を吟味して、できるだけ動きのある部分に置いた。また余裕のある時に意識的に端末を動かした。このときは途切れずに記録が取れた。
意識して定期的に端末を動かすと止まらない。しかし面倒なので置き場所を吟味したが、良い場所が見つからない。手首とか足首に付ければいいとは思うが、それでは活動に支障をきたす。胸ポケットなら邪魔にならないが、ここではダメだった。モーションセンサーの感度を高くできないか、設定を探したが見つからなかった。
スリープしないアプリで解決
どうも問題は二つあるみたいだ。一つは位置記録を取るアプリが止まること。これはアプリがバックグラウンドでも動作するように設定すれば良さそう。アプリの初期設定ではバックグラウンドで動作するようになっているが、長く使わないと勝手に設定が変えられてバックグラウンド動作が禁止される。これが9のスマホで起こっていた。
もう一つは位置情報が止まらないようにすること。これはスマホを動かし続ければいい。おそらくモーションセンサーが動きを検出すればいいみたいだが、そういう状況を作ることができなかった。偶然だろうが、Android9のスマホはモーションセンサーの感度が高いのか、止まりにくかった。Android14のスマホは止まりやすくてトラブルが発覚したのだろう。
モーションセンサーが動きを検出するように動かし続けるのは難しい。スリープしてから一定時間(おそらく30分くらい)後に位置情報が止まるから、スリープしなければ止まらない。ということでスリープしないアプリを導入した。使ったのは「つけっぱ!」。
つけっぱが止まる
つけっぱを使って上手くいっていたが、それでも位置記録が止まることがある。どうも、つけっぱが止まっているみたいだ。正常なときは記録を止めるときにつけっぱも止めるが、止めるべきつけっぱが見当たらないことがある。そんなとき位置記録が止まっていることが多い。つけっぱすら止められてしまうことがあるらしい。