android tts 音量設定

s を 音量 volume で発話する 

private void speak(String s,float volume){
if (Build.VERSION.SDK_INT >= 21) {
Bundle params =
new Bundle();
params.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, volume);
textToSpeech.speak(s, TextToSpeech.QUEUE_FLUSH,params,null);
} else {
HashMap<String
, String> params = new HashMap<>();
params.put(TextToSpeech.Engine.KEY_PARAM_VOLUME, String.valueOf(volume));
textToSpeech.speak(s, TextToSpeech.QUEUE_FLUSH, params);
}
}

android8で正しく動作するタイマー系アプリを作るにはどうすればいいんだろう?

 

アプリがフォアグランドになっている場合とバックグランドになっている場合は問題ない。setAlarmClockを使えばいいだけ。
問題は画面オフ(電源オフでない)にしてるとき。setAlarmClockで時間になったらTTSで知らせるようにしたいのに画面オフ後3分以上経過すると遅れたり発話しなかったりする。一分以内なら想定通りの動作をしてくれる。だから一分ごとにアラームを発火、再設定して指定時刻になったら発話するようにしてみたがうまくいかなかった。ためしに毎分アラームを受け取ったときにTTSに何か適当に喋らせるようにした。そしたら指定時刻にちゃんと時刻を喋るようになった。しかし消費電力が過剰と言われてしまう。それから自分が所有してるp10lite、kindle fire hdx以外でも正常に動作するかわからない。

 

その後半日ほど放置してみたら喋らなくなった。

 

日記アプリにテンプレート機能を追加

機能を追加した理由2つ

1.スマホでテンプレ日記をつけようと思いテンプレートが使えるアプリを探したのだがなかなか見つからなかった。

 

2.コピペすればいいのになぜわざわざ作ったかというと、長期間続ける場合、毎回コピペするのは面倒だから。ステップを比較するとコピペの場合、コピー範囲選択→コピー→日記アプリを開く→記事作成ボタンを押す→長押し→ペースト(6ステップ)。記事作成画面にテンプレボタンがある場合、テンプレボタンを押す→テンプレ選択(2ステップ)。これだけステップ数を省略できるなら作る価値があると思った。

(keyclipというコピペツールもあるがこれもアプリを開閉する手間がかかる。貼り付け前に長押ししなければならないのも面倒。)

 

 

テンプレ機能の内容

好きなだけ名前付で登録できます。登録したテンプレを選択すると記事内のカーソル位置に貼り付けられます。

 

登録の仕方

テンプレボタンをタップ

開いたダイアログの+ボタンをタップ

テンプレ名、内容を入力

OKボタンをタップ。

 

 

使い方

テンプレボタンをタップ

使いたいテンプレを選択

 

https://play.google.com/store/apps/details?id=com.ototo.watasiha.diary

 

自作アプリに実装後に気づいたのだが10年日記というアプリにはテンプレート機能がある。ただしこのアプリは一日に1記事しか書けないしテンプレートも一つしか登録できない。長所は記事作成時にテンプレが自動的に記載されること。

 

テンプレートは 日記 テンプレート で検索すれば探せます。

【初心者向け】ジャーナリングを簡単に習慣付けられる7つのシンプルなテンプレート | ライフハッカー[日本版]

 

連続タイマー2をmp3プレイヤーとして使う

連続タイマー2は各タイマーに一曲設定できるのでmp3プレイヤーにもなります。(タイマーを作るときにBGMを設定してからBGM時間ボタンをタップすればタイマーの時間をBGMの長さと同じにできます。)

長所
任意区間の繰り返し回数を指定できる
無音を挟めるので耳を痛めにくい。

短所
ランダム再生ができない
リストを作るのが面倒

 

車のスピードメーターの問題点

フロントガラスの下についてるからスピードを確認するときに視線を前方から外さなければならず危ない。

この問題の解決策
1スピードを読み上げる機能をつける。5km/h刻みぐらいで。
2フロントガラスに表示する。位置は右端の真ん中辺り。

1を実現するスマホアプリ探したけど見つからなかった。設定スピードを超えると警告音が鳴るものはあったけど。

連続タイマー2 (プログラマブルタイマー)

このアプリはリストに並んでいるタイマーを上から順に実行していきます。パソコンのプログラミングと同じように任意の区間(タイマーaからタイマーb)をループさせたり条件分岐させたりできます(break,continueが使えます)。

各タイマーの開始時にそのラベルと設定時間を読み上げます。

 

実行できるタイマーの例

最も単純な使い方は一つのタイマーを繰り返すことです。

少し複雑にしてn個のタイマーを一つ一回ずつ実行するのをm周させることもできます。

さらに複雑にしてループを入れ子にしたりbreak文を使ったものも作れます。

 f:id:ototokunsan:20180329214538p:plain

このポモドーロタイマーは連続タイマー1にも入っていますがループとBREAK文を使うことで短くなっています。しかも最後のBREAKのおかげで最後の周に長い休憩を実行しなくてすみます。(このアプリを作った理由の一つは連続タイマー1ではポモドーロで最後の長い休憩を実行してしまうのが気に入らなかったから)

 

残り時間の読み上げタイミングのパターンも他のアプリより自由に作れます。=、<、>、倍数を使って条件を作成できます。さらにその条件に使う残り時間は特定の時間だけでなく%で指定することもできます。たとえば、残り時間が設定時間の10%の倍数のときに読み上げるという条件も作れます。

また、タイマーごとに違うパターンを適用できるので例えば作業と休憩を繰り返すタイマーにおいて作業中は残り時間を読み上げて休憩中はほとんど読み上げないようにできます。

 

勉強、インターバルトレーニング、料理、TODOリストの代わりなど用途はいろいろあります。

 

連続タイマー2 - Google Play の Android アプリ

連続タイマー2 プライバシーポリシー


プライバシーポリシーについて
privacy policy


android.permission.READ_PHONE_STATE

電話がかかってきたときに音を止めるためにのみ使用します。
It is used only to stop the sound when a call comes in.

 

android.permission.READ_EXTERNAL_STORAGE

BGM用のMP3ファイルアドレスを取得するためにのみ使用します。
It is used only for obtaining MP3 file address for BGM.

 

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE

広告表示のためにのみ使用します。
It is used only for advertisement display.

 

android.permission.RECORD_AUDIO

アプリの一時停止を解除するためにのみ使用します

it is used only for resuming paused timer