happasukeの覚書

私がググらなくてもいいよう記事にします。またそのほかにも感じたことも書き綴りたいと思います。

androidで一定時間後にTTSで何かをしゃべらせる

 手順はこうです

  1. ActivityからAlarmManagerでreceiverをセットする
  2. 指定時間後にreceiverからserviceを呼び出す
  3. serviceのなかからTTSを呼び出す

 順を追って説明します。その前にManifestで以下のように追記します

this is used in newsgetter and for explain code

 

 application内にreciverとserviceを使うことと、パーミッションにSET_ALARMを追加します。指定のしかたは書いてあるような感じです。

 

 次にActivity内でのAlarmManagerのセットのしかたです。これはすでにネットにたくさんありますね。ざっくりいきます。

gist8f2ede46abd9154109d8

 こんな関数をActivity内から呼び出すことでアラームをセットします。10秒後にRTC_WAKEUPでよびだすAlarmManagerです。

 次にAlarmManagerで使われているレシーバです。

gist13001483bec606e79f40

 16行目のcontext.startServiceが重要です。TTSクラスを入れて呼び出します。ここで直接TTSを呼び出そうとすると事故ります。それでserviceがこちらです。

gist26bdcb5964e837597ca6