您可以使用文字转语音 (TTS) 技术与用户进行沟通。TTS 内置于 Android 中(无需额外的库),即使在离线状态下也能正常运行。这些特性使 TTS 非常适合在无显示模式下处理错误情况。您可以使用 TextToSpeech 类引用 TTS 功能。
实例化 TextToSpeech
我们建议在投影 activity 的 onCreate 方法中实例化 TextToSpeech 类,以便在 Activity 的生命周期内可用:
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 资源
当您的 activity 被销毁时,您应在 activity 的 onDestroy 方法中调用 shutdown 方法来清理资源:
override fun onDestroy() {
super.onDestroy()
tts?.shutdown()
}