[英]Mediaplayer looping stops with an error Android
// Will need this in the callbacks
final AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.sample);
// Build and start first player
final MediaPlayer player1 = MediaPlayer.create(this, R.raw.sample);
player1.start();
// Ready second player
final MediaPlayer player2 = MediaPlayer.create(this, R.raw.sample);
player1.setNextMediaPlayer(player2);
player1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
// When player1 completes, we reset it, and set up player2 to go back to player1 when it's done
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
player2.setNextMediaPlayer(player1);
}
});
player2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
// Likewise, when player2 completes, we reset it and tell it player1 to user player2 after it's finished again
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
player1.setNextMediaPlayer(player2);
}
});
// This loop repeats itself endlessly in this fashion without gaps
這是我發現循環播放音頻文件而沒有任何間隙的唯一方法,並且一切正常。 但是在隨機完成10-15個循環后,Mediaplayer每次都會顯示不同的錯誤並停止播放音頻。 嘗試用不同的音頻,不同的編碼類型,不同的文件格式,但我隨機得到不同的相同錯誤。 提前致謝。
E / MediaPlayer(24311):錯誤(1,-38)
E / MediaPlayer(23256):錯誤(1,-1007)
E / MediaPlayer(23546):錯誤(1,-2147483648)
這很可能是垃圾回收問題,因為您已經多次重置媒體播放器。 您重復聲音的方式是一種很怪誕的方式。 盡管我聽說set循環在使用某些文件類型循環時確實會引起間隙,但我實際上並不建議這樣做。 您是否嘗試過將文件格式設置為ogg?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.