膝の痛み改善からウォーキングを始めて、今では毎食後のウォーキングが日課になっています。ある時ウォーキングの記録を把握したいと思って、Google Play から歩数計アプリケーションをダウンロードして使ってみましたが自分の使い勝手には合わないところがありました。
普段から Android アプリケーションを開発してみたいと考えていたこともあり、思い切って Android アプリケーションを自分で開発することにしました。
ウォーキングのスタイル:
普段のウォーキングは、朝、昼、夜の食事後に15分から30分、一日の合計が7~8千歩程度になります。 毎日同じところをウォーキングするのは変化が無いので家の周辺でコースを曜日ごとに変えています。朝、夜は右回り、昼は左回りというふうにも変化を持たせています。
回数が多いので他の事に影響を与えないようにできるだけ時間は過不足なく合わせたいです。7分30秒を単位にすると1回で折り返して戻ってくると15分、7分30秒を2回で折り返して戻ってくると30分になりちょうどいい具合です。
やりたいこと:
(1)歩数の管理
(2)時間の管理
(3)データを外部で取得して集計
Google Play でダウンロードできるアプリケーションは(1)の歩数の管理はできるのですが、(3)のデータを外部で取得できなかったり、同時に(2)時間の管理ができるものはありませんでした。
WalkingLog_350
自作した Android アプリケーションの名称です。図1 が画面の例になります。

機能:
図1 に割り振られた番号に沿ってそれぞれの機能を説明していきます。
① アプリケーション名
WalkingLog
② バージョン
3.50
③ 設定アイコン
情報表示窓に 「settings icon」と表示するだけで何も割り当てていません。
④ メニュー
・ログ表示消去
情報表示窓の表示を消去します。
・最大音量
音量を最大100%に設定して「最大音量に設定しました。」と音声案内が出力されます。
・中間音量
音量を中間 60% に設定して「中間音量に設定しました。」と音声案内が出力されます。
・ログファイル削除
ログファイルを削除します。
⑤ 現在時刻
ディジタルクロック表示。スマートフォン自体のステータスバーに時計は表示されているのですがフォントサイズが小さくて見にくいのでフォントサイズを大きくしてみました。
⑥ 歩数
Start ボタンを押してからの歩数が表示されます。
⑦ 1分当たり歩数
最近追加した機能で、Start ボタンを押してからの1分当たりの歩数が表示されます。
⑧ 減算タイマー
Start ボタンを押すとウォーキングスタイルに合わせて初期値 07:30 を設定して減算するタイマーで 00:00 まで減算すると、また 07:30 から減算を繰り返します。
⑨ 経過時間
Start ボタンを押してから Pause 期間を除いた経過時間が表示されます。「7分30秒」、「15分00秒」、「22分30秒」、「30分00秒」のとき声案内が出力されるように設定しているため、いちいちスマートフォンを取り出さなくても経過時間や折り返す時間が分かります。
⑩ 情報表示窓
Finish ボタンを押したときは当該ウォーキングの Start 時刻、Finish 時刻、経過時間、歩数の情報が表示されます。 Report ボタンを押したときはは WalkingLog.txt ファイルから Start 時刻、Finish 時刻、経過時間、歩数の情報が読み出されて最新の4行が表示されます。
⑪ Start ボタン
ウォーキングを開始する時に Start ボタンを押すと、「開始します」の音声案内が出力されて歩数計とタイマーが動作を開始します。
⑫ Finish ボタン
ウォーキングを終了する時に Finish ボタンを押すと、「終了します」の音声案内が出力されて歩数計とタイマーが動作を停止します。同時に「開始時刻、終了時刻、 経過時間、 歩数」 を WalkingLog.txt ファイルに書き込みます。
⑬ Pause ボタン
ウォーキング途中で何らかの要因で一時停止したいときに Pause ボタンを押すと、「一時停止します」の音声案内が出力されて歩数計とタイマーが一時停止します。 このとき歩数計とタイマーの表示が点滅して一時停止状態であることを視認できます。
もう一度 Pause ボタンを押すと「再開します」の音声案内が出力されて一時停止が解除されて歩数計とタイマーが動作を再開します。
⑭ Report ボタン
歩数計とタイマーが動作を停止しているときに Report ボタンを押すと、WalkingLog.txt ファイルに保存されていたログが読み出されて情報表示窓に表示さます。
状態遷移図:
ボタン操作による動作状態を状態遷移図で表現してみました。

データ集計:
8月14日から8月16日の WalkingLog.txt ファイルを読み出してみました。
2024/08/14 07:47:27 3.50 Started
2024/08/14 08:17:45 3.50 Finished
2024/08/14 08:17:45 Elapsed 30:17
2024/08/14 08:17:45 Step count=3633
2024/08/14 13:18:42 3.50 Started
2024/08/14 13:34:44 3.50 Finished
2024/08/14 13:34:44 Elapsed 16:00
2024/08/14 13:34:44 Step count=1775
2024/08/14 19:52:58 3.50 Started
2024/08/14 19:54:59 3.50 Finished
2024/08/14 19:54:59 Elapsed 01:59
2024/08/14 19:54:59 Step count=205
2024/08/15 07:43:10 3.50 Started
2024/08/15 08:13:15 3.50 Finished
2024/08/15 08:13:15 Elapsed 30:04
2024/08/15 08:13:15 Step count=3627
2024/08/15 19:38:36 3.50 Started
2024/08/15 19:53:43 3.50 Finished
2024/08/15 19:53:43 Elapsed 15:05
2024/08/15 19:53:43 Step count=1760
2024/08/16 06:57:39 3.50 Started
2024/08/16 07:29:19 3.50 Finished
2024/08/16 07:29:19 Elapsed 31:39
2024/08/16 07:29:19 Step count=3775
2024/08/16 13:08:23 3.50 Started
2024/08/16 13:24:08 3.50 Finished
2024/08/16 13:24:08 Elapsed 15:04
2024/08/16 13:24:08 Step count=1855
2024/08/16 19:39:36 3.50 Started
2024/08/16 19:55:38 3.50 Finished
2024/08/16 19:55:38 Elapsed 16:00
2024/08/16 19:55:38 Step count=1885
8月14日夜は降雨で切り上げ、8月15日昼も降雨でスキップしています。
図3 WalkingLog.txt ファイル読出し例
図4 は2023年40週から2024年33週までの歩数集計の例です。

図5 は2023年40週から2024年33週までの1分当たりの歩数集計の例です。

このように集計してみると体の調子との相関がわかったり、健康を維持するための目標設定ができるようになって重宝しています。
具体的な動作アルゴリズムやソースコードについても記載していく予定です。
(YI)
コメント