[英]Loading Dialog on MP3 Media player prepare()
我是android开发的新手。 我有一个可从网址播放mp3的mp3音频播放器代码。 我想在媒体播放器准备缓冲时显示加载对话框
这是我的代码,我在prepare上显示一个对话框,但该对话框可连续运行并且无法播放mp3。 我不知道在哪里定义smp.setOnPreparedListener。 请告诉我,我可以在播放功能还是外部播放功能中定义它。 请帮助我,这是我的代码。 在此先感谢
//播放MP3功能
public void playSong(int naatindex){
// Play song
try {
mp.reset();
mp.setDataSource(naatpaths[naatindex]);
tv = (TextView) this.findViewById(R.id.mywidget);
tv.setSelected(true); // Set focus to the textview
tv.setText(naattitles[naatindex]);
mp.prepare();
mp.start();
// Changing Button Image to pause image
btnPlay.setImageResource(R.drawable.btn_pause);
// set Progress bar values
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
// Updating progress bar
updateProgressBar();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的mp.setOnPreparedListener代码
ProgressDialog progressDialog = ProgressDialog.show(this,
"Loading Title", "Loading Message");
mp.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss();
}
mp.start();
}
});
在playSong()中,您调用:
mp.prepare();
mp.start();
如果直接启动播放器,它将崩溃,因为它可能尚未准备好播放。 尝试这个:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(naatpaths[naatindex]);
mp.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
if (progressDialog != null && progressDialog.isShowing())
progressDialog.dismiss();
}
});
mp.prepareAsync(); //this will prepare file a.k.a buffering
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
// Updating progress bar
updateProgressBar();
如果仍然无法播放,请检查流URL。 可能已经死了。 另外,请尝试记录播放器的状态。 还要检查stacktrace是否有任何异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.