Android 如何同时启动两个媒体播放器(并同步播放)?

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

例如:我有两种声音。两者都持续40秒。我需要同时启动它们。以下是我的方法:

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