mediaplayer android8,android – 如何使用MediaPlayer同时播放多首曲...

博主遇到一个挑战,尝试同时播放8个MP3文件并保持同步,使用AudaCity进行控制。初始播放时存在30~90ms的异步问题,但在暂停和恢复后播放变得准确。代码中展示了如何在暂停、恢复时调整播放位置以实现同步,但首次启动时的同步问题依然存在。
摘要由CSDN通过智能技术生成

我有8个mp3文件.我必须同时播放它(不是很接近.肯定会).

我使用’AudaCity‘来控制精度.但我的代码没有给我想要的结果……(异步= 30~90 ms)

所以,这是我的代码:

(首次开始玩)

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();

}

}

}

如果我在第一次开始播放它会给我异步~30ms

然后在暂停/恢复后它会发挥完美.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值