なんとなくAndroidアプリを作ってみたくなったので、今、とてもほしいと思っていたタイマーアプリを作ってみた。
ソフトは一応完了しているのだけど、その過程や、手こずったところなどを記述していきたい。
GitHub - take4blue/stacktimers
Contribute to take4blue/stacktimers development by creating an account on GitHub.
まずは仕様みたいなもの。
タイマーアプリ要望内容
料理をするのにキッチンタイマー・もしくはスマホのタイマーを利用しているんだけど、以下の点に不満を持ってる。
- 「停止」を押さないとアラームが止まらない。
音が鳴れば時間が来たと分かるので、わざわざ止めるなんて面倒なんだよな。
あと使ってるキッチンタイマー、微妙にボタンの反応が鈍いので。 - 連続したタイマーアラームを設定したい。
料理をするのに、沸騰してから何分、中火で何分、止めてから何分、というようにタイマーを連続して使うのが多いのだけど、手持ちのだとそういう機能のがない。 - タイマーを用途ごとに覚えておきたい。
こんな希望を叶えるものを作ってみようと思った。
仕様みたいなもの
画面構成
とりあえず、フリーハンドでポンチ絵をかいてみた。
トップがトップ画面、左がタイマー実行画面、右がタイマー編集画面。
トップ画面で「連続タイマー」を複数管理できるようにしている。
そこはList Tileあたりを使うのかな。そこからタイマー開始、タイマー編集などを選択できるようにする。
展開する画面としては、タイマー実行画面(左下)と、タイマー編集画面(右下)。
タイマー実行画面は、登録されている連続タイマーを実行し、経過時間を表示できるようにするのと、タイマー操作をできるようにしている。
タイマー編集画面では、連続したタイマー時間の設定を行う。タイマー時間で設定可能な属性としては、時間、アラーム音→発音時間、色(タイマー実行画面で使用)。このタイマー属性を複数設定できるようにする。
属性の削除はスワイプ+削除ボタン、属性の上下移動はリオーダーで可能とする。
時間の設定とアラームの設定はドラムダイアログで、色は色選択ダイアログで行う。
- 初期段階の構想は上のような感じだったのけど、途中で音のユーザー選択が面倒だということが分かり、アラーム音からアラームを出している時間(発音時間)に変更している。
こういうのは、利用可能な機能などを知っていないと、設計初期段階で機能を盛り込めないんで、後での設計変更が大変になる。
実際、今回大変だった。
DB
格納するデータはsqliteに保存するようにする。
画面から見て取れるデータをもとにDBをとりあえず以下の様に考えてみた。
TitleTable
タイマーにつけるタイトル名を格納するテーブル。
名前 | 型 | 説明 |
id | INTEGER | 一意な番号(自動採番) |
sTitle | TEXT | タイトル名 |
TimeTable
sTitileに紐づけるタイマー(複数)の情報
名前 | 型 | 説明 |
id | INTEGER | 一意な番号(自動採番) |
titleid | INTEGER | TitleTable-idを示す |
iNo | INTEGER | 同一titleid内での順序(0オリジン) |
iTime | INTEGER | タイマー時間(単位:秒) |
iAlarm | INTEGER | 警告音の種類 |
iDuration | INTEGER | 警告音の発音時間(単位:ミリ秒) |
iColor | INTEGER | 色(RGB) |
- iAlarmは初期段階では入れてたんだけど、仕様変更で外したもの。
コメント