ユーザーとコミュニケーションをとる方法の 1 つに、テキスト読み上げ(TTS)技術があります。TTS は Android に組み込まれており(追加のライブラリは不要)、オフラインでも動作します。このような特性により、TTS はディスプレイレス モードでのエラー条件の処理に最適です。TextToSpeech クラスを使用して、TTS 機能を参照できます。
TextToSpeech をインスタンス化する
Activity のライフタイムの間利用できるように、AI グラス アクティビティの onCreate() メソッドで TextToSpeech クラスをインスタンス化することをおすすめします。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
tts = TextToSpeech(this) { status ->
if(status == TextToSpeech.SUCCESS) {
// Initialization successful
}else {
// Initialization failed
}
}
...
}
TTS の開始時にユーザーに通知する
ディスプレイのない(音声のみの)エクスペリエンスでは、onStart() メソッドでユーザーに通知して、アプリが正常に起動したことを知らせます。
override fun onStart() {
super.onStart()
tts?.speak("Welcome to Android XR Glasses!",
TextToSpeech.QUEUE_FLUSH,
null,
"welcome_utterance")
...
}
コードに関する主なポイント
TextToSpeech.QUEUE_FLUSHは、テキストをすぐに読み上げ、他の TTS 発話は中断する必要があることを示します。- この場合、
utteranceId("welcome_utterance")は、このテキストの読み上げが終了したタイミングを特定するために使用されます。詳細については、UtteranceProgressListenerをご覧ください。
TTS を中断する
アプリで TTS を中断する必要がある場合は、stop() メソッドを呼び出します。
// This interrupts the current utterance and discards other utterances in the queue.
tts?.stop()
...
TTS リソースをクリーンアップする
アクティビティが破棄されるときにリソースをクリーンアップするには、アクティビティの onDestroy() メソッド内で shutdown() メソッドを呼び出します。
override fun onDestroy() {
super.onDestroy()
tts?.shutdown()
}