MediaPlayer 播放完毕后执行代码?

Executing code after MediaPlayer is done playing?

我想知道我正在开发一个 Android 应用程序,其中 MediaPlayer/TextToSpeech 用于告诉用户一些事情,然后在 MediaPlayer/TextToSpeech 完成后打开语音识别对象并在他们用识别回答问题后播放另一个。问题是我不是 100% 确定在 MediaPlayer 启动后立即延迟语音识别打开的方法或好方法,或者等到 mediaplayer 完成后再打开语音识别。我看到了一些基于我自己的选项 knowledge/Google -

使用 isPlaying(MediaPlayer)/isSpeaking(TextToSpeech) 方法并将它们置于某种循环中进行检查,直到它们不再为真,然后打开语音识别。

调用 Thread.sleep()。我看到的问题是我不确定用户到底要说多长时间,所以它仍然可能会被打断,除非我把它放在高时间,这只会减慢应用程序的速度。

我已经对 Handler class 进行了一些研究和尝试,但还没有完全理解如何做到这一点...有人帮忙吗?

如果您想在 MediaPlayer 完成时执行某些操作,可以设置 OnCompletionListener with setOnCompletionListener() 在媒体播放完成时接收回调。