Android 如何同时启动两个媒体播放器(并同步播放)?
例如:我有两种声音。两者都持续40秒。我需要同时启动它们。以下是我的方法:Android 如何同时启动两个媒体播放器(并同步播放)?,android,audio,android-mediaplayer,synchronous,Android,Audio,Android Mediaplayer,Synchronous,例如:我有两种声音。两者都持续40秒。我需要同时启动它们。以下是我的方法: private void startPlaying() { mPlayerDrums = MediaPlayer.create(this, mCurrentDrumResId); mPlayerDrums.setLooping(true); mPlayerTrack = MediaPlayer.create(this, mCurrentTrackResId);
private void startPlaying() {
mPlayerDrums = MediaPlayer.create(this, mCurrentDrumResId);
mPlayerDrums.setLooping(true);
mPlayerTrack = MediaPlayer.create(this, mCurrentTrackResId);
mPlayerTrack.setLooping(true);
if (STATE == STATE_PLAY) {
mPlayerDrums.start();
mPlayerTrack.start();
}
setPlayersVolume(mSeekbar.getProgress());
}
但有时它们并不同步播放。从日志中(每400ms显示一次玩家的位置):
您可以使用CyclingBarrier一次启动两名玩家。像这样的
CyclicBarrier cyclicBarrier = new CyclingBarrier(2);
public void onPrepared(MediaPlayer player) {
new StartThread(player).start();
}
public class StartThread extends Thread {
private MediaPlayer player;
public StartThread(MediaPlayer player) {
this.player = player;
}
@Override
public void run(){
cyclingBarrier.await();
player.start();
}
}
我想你必须在两个媒体播放器对象上都设置setOnPreparedListener,并将flag置于prepared()…在两个标志都为true之前不要调用play。尚未选中,但你应该尝试。谢谢你的回复!刚试过-还是没有。@Flash我已经检查过了,但有时问题会出现
CyclicBarrier cyclicBarrier = new CyclingBarrier(2);
public void onPrepared(MediaPlayer player) {
new StartThread(player).start();
}
public class StartThread extends Thread {
private MediaPlayer player;
public StartThread(MediaPlayer player) {
this.player = player;
}
@Override
public void run(){
cyclingBarrier.await();
player.start();
}
}