java - MP3 媒体播放器上的加载对话框准备()

标签 java android

我是 Android 开发领域的新人。我有一个 mp3 音频播放器代码,可以从 url 播放 mp3。我想在媒体播放器准备缓冲时显示加载对话框

这是我的代码,我在准备时显示一个对话框,但它连续运行并且无法播放 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();

如果仍然无法播放,请检查直播地址。它可能已经死了。还可以尝试记录播放器的状态。还要检查堆栈跟踪是否有任何异常。

关于java - MP3 媒体播放器上的加载对话框准备(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755924/

相关文章:

java - 制作一个有光泽的 JFrame 和 JDialog

java - 使用基类实例化派生类有什么好处? java

javascript - 无法在 MacOS 上打开 Intellij

java - 从应用程序退出后,按用户定义重命名按钮不起作用

android - 针对单例 friend 的 Facebook AppRequest

java - 如何在 Activity 之间传递值

java - Maven改变不同配置文件的插件顺序

java - Traverson 的 Android spring HATEOAS REST API 客户端支持

android - 在 galaxy s2 上翻译后布局闪烁

android - 允许 TextView 在屏幕之外