簡體   English   中英

MP3 Media Player上的“加載”對話框prepare()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM