ガーミンアプリ開発17日目(通算11時間)
前回はラップ数を得たいと書きながら、ちょっと寄り道して心拍数を表示することを試みた。寄り道の甲斐があって、2回目の今回でラップ数を得ることができた。
Instance Methodを使う
前回は、関数にてラップ数を取得できると考えていて、getActivityInfo()などの関数を探していたが結局見つけられなかった。で、心拍数の表示に寄り道したんですが、寄り道の過程にて、API Docsの中に、Instance Methodなるものがあるのを知る(下にスクショ)。
onTimerLap
詳細はリンク先を確認頂くとして、この中にonTimerLapというMethodがある。要は、ラップが増えたときに呼び出されるMethodで、このMethodを起点に必要な処理を書き加えてやればいい。
コードの修正
前回のコードからスクショ下線の箇所を追加した。スクショの下に箇条書きで説明を加える。
- ver selectの追加(変数selectを宣言する)
- initialize()にselect = 0を追加(値を0にセットし、初期化する)
- compute(info)にswitch構文を追加する。selectの値に応じて、時計に表示させたい値をreturnする。
- onTimerLapを追加し、イベントは発生時にselectを0~2の範囲でカウントする。
修正内容の解説
selectという変数を準備(初期値=0)し、ラップキーが押されたタイミングで値を増やす(但し、selectが3になったら0に戻す)。computeでは、selectの値に応じて、時計に表示させる値を選択する。
今回は試しということで、宮古島ワイドーの制限時間を入力した。
- 46.5km 8時間
- 80km 11時間15分
- 90km 13時間
90km地点で13時間だと残り10kmが1時間。走り切れないので、実際に目標とすべきタイムはこれとは別の時間になるべきだが、一先ずこれでラップキーを押すことで制限時間の表示を切り替えるプログラムにはなった。
プログラムのテスト
静止画だとお伝えが難しいが実際に動かしてみた結果。シュミレータでラップキーを押してやると、表示する制限時間を切り替えることができることが確認できた。



あ、でもラップキーじゃだめだな。。。
よくよく考えたら・・・ラップキーで表示切替だと、ラップキーが本来の目的で使えなくなってしまう( ̄▽ ̄;) 本番では5km毎の自動ラップを入れたいからね。
と言う訳で再度予定を変更
本番で使うプログラムには次の動作をさせた方が良さそうだ。
- ランの距離が関門地点(46.5km, 80km, 90km)を超えたら
- 時計に次の関門への到達目標タイムを表示させる
心拍数を表示させたり、ラップ数で表示を切り替えたり、ちょっと寄り道してしまったが、そのおかげで上の仕様は容易に実現可能だとわかるようになった!