簡體   English   中英

MediaPlayer錯誤

[英]Error with MediaPlayer

我正在嘗試在我的應用中播放音樂,並在第一個播放完成后播放歌曲,但是出現一些我無法解決任何幫助的錯誤?

public class Music {
    int count;
    String[] titles = new String[] { "title1.mp3", "title2.mp3", "title3.mp3", "title4.mp3" };

    public void GameMusic(){
        count = 0;
        MediaPlayer mp = MediaPlayer.create(this, R.raw.title1);
        mp.start();
    }

    void onCompletion(MediaPlayer mp){
        mp.stop();
        if (count == titles.length -1) {
            count = 0;
        }
        mp.setDataSource(titles[count]);
        count++;
        mp.prepare(); 
        mp.start();
    }
}

錯誤發生在:

    MediaPlayer mp = MediaPlayer.create(this, R.raw.music); 

(MediaPlayer類型的create(Context,int)方法不適用於參數(Music,int)

    mp.setDataSource(titles[count]);

(未處理的異常類型IOException)

    mp.prepare();

(未處理的異常類型IOException)

任何幫助,將不勝感激。

好吧,這些錯誤可能有點神秘,但它們是不言而喻的。

您需要將Context傳遞給GameMusic()並使用它來初始化MediaPlayer:

public void GameMusic(Context context){
    count = 0;
    MediaPlayer mp = MediaPlayer.create(context, R.raw.title1);
    mp.start();
}

this僅在類(在本例中為Music)擴展了Context的情況下有效,因此您需要以其他方式提供Context。

在onCompletion()中,使用try-catch塊來處理IOException:

try {
    mp.setDataSource(titles[count]);
    count++;
    mp.prepare(); 
    mp.start();
}
catch(IOException e) {
    // Do something when MediaPlayer fails
}

您的音樂課只是一堂課,而不是一項活動,因此, this通過一個對象而不是context 如果這是您唯一的音樂播放器類,則需要它來擴展Activity否則您需要向其傳遞上下文。

public void GameMusic(Context context){
count = 0;
MediaPlayer mp = MediaPlayer.create(context, R.raw.title1);
mp.start();
}

對於其他兩個異常,它指出未處理的異常。 因此,您需要使用Try-Catch塊來處理未捕獲的IOException

那應該可以解決您現在遇到的所有錯誤。

將數據源設置為Mediaplayer時,嘗試使用音樂文件的絕對路徑

如果存儲在SD卡中..嘗試

 String ExternalStorageDirectoryPath = Environment.getExternalStorageDirectory()
                                      .getAbsolutePath();

 mp.setDataSource(ExternalStorageDirectoryPath +"/"+titles[count]);

調用mp.prepare()之后;

實現onpreparedlistner,在獲得通知后,然后啟動mediaplayer

 @Override
 public void onPrepared(MediaPlayer mp) {
   mp.start();
 }

並處理所有異常,以便您可以輕松跟蹤問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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