android java mediaplayer服务-如何知道mediaplayer是否已准备就绪?

android java mediaplayer服务-如何知道mediaplayer是否已准备就绪?,java,android,service,prepare,Java,Android,Service,Prepare,我用MediaPlayer控件制作了一个绑定服务,用于加载和播放音频。但是,有时,mediaPlayer.prepare()速度不够快,并且不总是准备好播放 那么,我如何制作这样的方法,比如myService.prepare()在哪里可以让MediaPlayer准备并等待它呢 您可以等待MediaPlayer触发OnPrepared事件 编辑:prepare()只对文件进行阻塞,因此如果您正在处理其他内容,这可能是原因。prepare()应该是同步的,并在完成之前一直阻塞,prepareAsy

我用
MediaPlayer
控件制作了一个绑定服务,用于加载和播放音频。但是,有时,
mediaPlayer.prepare()
速度不够快,并且不总是准备好播放


那么,我如何制作这样的方法,比如
myService.prepare()
在哪里可以让MediaPlayer准备并等待它呢

您可以等待MediaPlayer触发OnPrepared事件


编辑:prepare()只对文件进行阻塞,因此如果您正在处理其他内容,这可能是原因。

prepare()
应该是同步的,并在完成之前一直阻塞,
prepareAsync()
是导致问题的原因。我只是使用prepare(),但经常会遇到非法的异常。我不使用prepareAsync。。。如果它阻止-为什么我会不时收到这个非法异常?是的,我知道,但我如何从活动中知道mediaPlayer是否已经准备好?我的MediaPlayer正在使用中,我必须用一种方法(在活动中)来准备它,我正在使用SD卡上的文件—MediaPlayer.setDataSource()方法。我想这算文件吗?奇怪的是,同一个文件可能会使用prepare()获得非法异常。我不确定是否理解您的问题:我想您可以使用一个初始化为false的布尔值,并在回调中将其设置为true。当您需要询问MediaPlayer的状态时,只需将布尔值发送到您的活动?可能。。但我有类似音频服务的东西;audioService.start();如果我把一些东西放在中间等待布尔值为真-我会阻止我的活动,我知道这是一件糟糕的事情如果服务持有MediaPlayer,那么只有您的服务才能判断MediaPlayer是否准备好播放。如果情况允许,您可以向活动发送消息。有很多方法可以做到这一点,一个简单的方法是使用广播消息