3
我有8個mp3文件。我必須同時播放它(不會,肯定會)。
我使用'AudaCity'來控制精度。但我的代碼我以前不給我想要的結果...
(異步= 30〜90毫秒)
所以,這是我的代碼:
(用於第一個開始玩)如何使用MediaPlayer同時播放多個音軌?
public void start() {
//songInfo.getMediaPlayer() - it's array of MediaPlayers, source already setted
for (MediaPlayer player : songInfo.getMediaPlayer()) {
try {
if (player != null) {
player.prepare();
player.seekTo(0);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
songInfo.getMediaPlayer()[0]
.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
//code for play next setlist
}
});
resume();
}
(對於暫停)
public void pause() {
for (MediaPlayer player : songInfo.getMediaPlayer()) {
if (player != null)
player.pause();
}
}
(用於恢復暫停後,以及用於開始播放(在第一種方法中使用的))
public void resume() {
int pos = songInfo.getMediaPlayer()[0].getCurrentPosition();
long iTime = System.currentTimeMillis();
for (MediaPlayer player : songInfo.getMediaPlayer()) {
if (player != null) {
player.seekTo(pos + (int)(System.currentTimeMillis()-iTime));
player.start();
}
}
}
如果我在第一時間開始播放它給了我異步〜30毫秒+
停頓後接着/恢復它起着完美。
你有沒有試過[SoundPool根據谷歌的開發人員](http://developer.android.com/reference/android/media/SoundPool.html)文件它應該用於播放各種曲目simulatenously,但我在設置時遇到問題。 – commonSenseCode
@cooervo是的,但SoundPool不是一個好的選擇。它只能播放小音頻文件(http://stackoverflow.com/questions/13377604/soundpool-plays-only-first-5-secs-of-file-why) –
@cooervo在我的情況下,我用NDK混音8個解碼mp3文件的緩衝區。 –