はじめに
ちょっと大っぴらに言えない類の音声と画像を使った自分だけの目覚ましを作りたいなーと思ったのが発端です。
どういう音声かと言えばリポジトリ/プロジェクト名である SummerIce から推理してもらえればいいです。
仕事でQtを始めたのでこれを活用してみることに。結果としてこの記事を書いている段階ではまだ目覚ましもどきでしかないですが。
Qtの日本語の記事ってあんまりないなーと思ったのがこの記事を書く動機でもありますが、こういう文章を書く経験もあまりないのでぎこちない内容になりますが暇なら適当に見てください。
突っ込みも適宜受け付けます。ただしソースファイルの名前については突っ込み禁止です。
今回は概略の話だけなので役に立つ内容はほぼないです。
ソースコードは下記です。
https://github.com/hakua-doublemoon/SummerIce
プログラム更新情報
2018/05/05 アラーム時の画面起動の制御を修正とか。構造も変わってます。記事にはあまり反映されてません……
開発環境
- プラットフォーム
- CentOS Linux release 7.4.1708 (Core) (64bit)
- Android 5.1.1 (Acerの安い端末)
- Windows 8.1 (64bit)
開発環境は基本Centosで行います。Windowsは単なるシンクライアントみたいなもん。
| 使用言語 | バージョン |
|---|---|
| Qt | 5.9.1 / 5.10.1 |
| Java | 1.8.0_131 / 1.8.0_172 |
| Android-Studio | 2.3.3 |
基本的に更新さぼってます。ごめんなさい。
(2018/05/05) QtとJavaは新しくしました
機能
- 目覚まし
- 定刻に画面を起動し、事前に設定した画像と音声を出力する
- 現状アプリから設定するのは音声のみ。画像は「音声リストJSON」に音声とセットで記述され読み込まれる。
- 定刻に画面を起動し、事前に設定した画像と音声を出力する
- 音声はアプリ内蔵ではなく端末上の適当な場所に置いたものを読む。
- 画像も同様
- 音声と画像のリストは「音声リストJSON」で管理する
- 「音声リストJSON」で次の目覚まし時に使用する音声および画像の設定も管理する
- とりあえず設定できる時間は1つとする
- 時間の設定は「時間設定ファイル」に持つ
- とりあえず繰り返し機能はなし。寝る前に必ず設定する
アプリケーション構成
概略
構想ではなく現状はこうなった。
+------------------------------------------+
| アプリ画面(QMLで作成) |
+------------------------------------------+
↑ ↓ 音声(画像)設定 ↑
| ↓ 音声リスト提供 ↑
| +-------------------------+
| | 音声設定機能(c++で作成) |
| +-------------------------+
|
+-------------------------+
│ 時間管理機能(c++で作成) | → +----------------------------+
+-------------------------+ ← | 時刻監視サービス(c++で作成)|
+----------------------------+
↓
+------------------------------+
| 画面・電源制御機能(Javaで作成)|
+------------------------------+
コンポーネント概要
アプリ画面
- 各種設定GUI
- 定刻に音声・画像を出力するのも画面が行う
音声設定機能
- 「音声リストJSON」から設定可能な音声リストを作成し画面に提供する
- 画面で選択された音声をJSONに記録する
時間管理機能
- 画面上で指定された時間を「時刻設定ファイル」に覚える
- さらに指定された時間を時刻監視サービスに伝える
- 時刻監視サービスの死活も一応見てる
- アプリ起動時にファイルから設定時間を読み出し画面に提供する
時刻監視サービス
- 時刻管理機能から目覚ましの時間を通達されてからその時間までを監視する
- 時間になったら画面・電源制御機能で端末の画面を起動する
画面・電源制御機能
- AndroidのAPIで画面の点灯とロック解除を行う
- (電源も常に握ってる。諸事情で)
次からはコンポを切り口に勉強の成果をまとめていきます。
そういえば言い忘れてましたが、書いている人はAndroidのアプリ開発はこれが初めてです。Javaもほとんど書けません。