【问题标题】:Loading Dialog on MP3 Media player prepare()在 MP3 媒体播放器上加载对话框 prepare()
【发布时间】:2015-01-04 01:54:01
【问题描述】:

我是安卓开发的新手。我有一个 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();
     }
 });

【问题讨论】:

    标签: java android


    【解决方案1】:

    在 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。它可能已经死了。还可以尝试记录播放器的状态。检查堆栈跟踪是否有任何异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      相关资源
      最近更新 更多