尝试在Android媒体播放器中没有有效Media Player的情况下调用getDuration [英] Attempt to call getDuration without a valid mediaplayer in media player on android
本文介绍了尝试在Android媒体播放器中没有有效Media Player的情况下调用getDuration的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在播放带有搜索栏的sd卡中的歌曲.在获取歌曲持续时间的同时,我尝试在没有有效的媒体播放器和非法状态异常的情况下调用getDuration .文件名和路径是有效的文件名.我尝试了很长时间,但没有找到解决方案.以及在播放歌曲时如何移动搜索栏.请帮助我.我的代码:
I am playing a song from sd card with seek bar. while getting the duration of the song I get Attempt to call getDuration without a valid mediaplayer and illegal state exception. the filename and path is valid one.I tried a long time I could not get a solution. and how to move seek bar while playing song.please help me. my code:
Button play,pause,stop;
SeekBar seek;
MediaPlayer mediaPlayer;
SurfaceView sv;
boolean isPlaying = false;
play.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
playsong(filename);
}
});
private void playsong(String filename2) {
try{
Log.e("filename2",filename2);
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(filename2);
seek.setMax(mediaPlayer.getDuration());
mediaPlayer.prepare();
mediaPlayer.start();
myHandler.post(runn);
isPlaying = true;
mediaPlayer.setOnCompletionListener(this);
}
catch(Exception ex){
Log.e("sdcard-err2:",""+ex);
}
}
private Handler myHandler = new Handler();
final Runnable runn = new Runnable()
{
public void run()
{
if (mediaPlayer != null)
{
if (isPlaying )
{
try
{
int currentPosition = mediaPlayer.getCurrentPosition();
seek.setProgress(currentPosition);
} catch (Exception e) {
e.printStackTrace();
}
sv.postDelayed(runn, 150);
}
}
}
};
我的日志猫错误:
05-17 09:46:43.578: ERROR/filename2(1670): /sdcard/The Dance Theme.mp3
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Attempt to call getDuration without a valid mediaplayer
05-17 09:46:43.594: ERROR/MediaPlayer(1670): error (-38, 0)
05-17 09:46:43.594: ERROR/MediaPlayer(1670): prepareAsync called in state 0
05-17 09:46:43.594: ERROR/sdcard-err2:(1670): java.lang.IllegalStateException
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Error (-38,0)
推荐答案
在文件完全加载之前,您可能正在调用getDuration.查看此问题的解决方案是否对您有用
You might be calling getDuration before the file is fully loaded. See if the solution to this question works for you.
这篇关于尝试在Android媒体播放器中没有有效Media Player的情况下调用getDuration的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文