三星Android15设备SpeechRecognizer后TTS onDone回调未触发问题
语音助手设置流程:SpeechRecognizer会话结束后TextToSpeech引擎挂起故障
环境信息
- 设备:Samsung SM-A736B
- 系统:Android 15(One UI 7)
- STT组件:系统原生
android.speech.SpeechRecognizer - TTS组件:显式绑定的Google TTS Engine(
com.google.android.tts)
故障触发流程(经Logcat确认)
- 前台服务
VoiceSessionService中创建SpeechRecognizer实例并启动监听 - 用户语音输入后,
onResults回调正常触发,返回转录文本 - 立即调用
stopListening()和destroy()销毁SpeechRecognizer实例,服务自行停止 - 主线程通过
Handler.postDelayed设置500ms延迟 - 延迟结束后,通过
AudioFocusRequest.Builder成功获取音频焦点(返回AUDIOFOCUS_REQUEST_GRANTED) - 调用
TextToSpeech.speak()播放确认语句 - 故障点:
TextToSpeech无报错接受请求,但无声音输出,且UtteranceProgressListener的onDone/onError回调完全不触发,导致应用逻辑因等待回调永久阻塞
已尝试的解决方案(均无效)
- 显式绑定Google TTS Engine,问题依旧
- 完全销毁
SpeechRecognizer实例,未解决资源占用问题 - 在销毁
SpeechRecognizer与调用TTS之间增加500ms延迟,无效 - 使用
AudioFocusRequest.Builder请求音频焦点,虽成功获取但TTS仍挂起 - 强制重启TTS引擎,故障未消除
核心疑问
遵循官方文档最佳实践且已成功获取音频焦点的前提下,为什么SpeechRecognizer会话结束后,TextToSpeech会出现挂起且不触发回调的情况?
内容的提问来源于stack exchange,提问作者Andrei Babenko
相关产品推荐
相关产品推荐

