求助MediaPlayer的错误
展开全部
在调用mediaplayer.getDuration()这个方法的时候,报这样的错:
attempt to callgetDuration without a valid mediaplayer
error (-38, 0)
查了好长时间,引起这个异常的原因有几个:
一是如果mediaPlayer对象为null,那么在执行这个方法的时候会报异常
二是在mediaPlayer对象为不可用状态的时候也会报这个错
为此,我查了一下书,顺便学习了一下MediaPlayer的生命周期,书中是这样解释的:
1) 当一个MediaPlayer对象被新建或调用reset()方法之后,它处于空闲状态,在调用release方法之后,才会处于结束状态。
2) 一个新建的MediaPlayer对象在调用getCurrenProgress()、getDuration、
getVideoHeight()、getVideoWith()、setAudioStreamType(int)、
setLooping(boolean)、setVolume(float,float)、pause()、start()、stop()、
seekTo()、prepare()、prepareAsync()方法时,不会触发OnErrorListenerError()事件,但是
MediaPlayer对象如果调用了reset()方法后,再使用这些方法则会触发OnErrorListenerError()事件。
所以,当你调用了reset()方法后,又调用getDuration()时,就会报异常
attempt to callgetDuration without a valid mediaplayer
error (-38, 0)
查了好长时间,引起这个异常的原因有几个:
一是如果mediaPlayer对象为null,那么在执行这个方法的时候会报异常
二是在mediaPlayer对象为不可用状态的时候也会报这个错
为此,我查了一下书,顺便学习了一下MediaPlayer的生命周期,书中是这样解释的:
1) 当一个MediaPlayer对象被新建或调用reset()方法之后,它处于空闲状态,在调用release方法之后,才会处于结束状态。
2) 一个新建的MediaPlayer对象在调用getCurrenProgress()、getDuration、
getVideoHeight()、getVideoWith()、setAudioStreamType(int)、
setLooping(boolean)、setVolume(float,float)、pause()、start()、stop()、
seekTo()、prepare()、prepareAsync()方法时,不会触发OnErrorListenerError()事件,但是
MediaPlayer对象如果调用了reset()方法后,再使用这些方法则会触发OnErrorListenerError()事件。
所以,当你调用了reset()方法后,又调用getDuration()时,就会报异常
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询