android media player 网络歌曲,android – 同时使用MediaPlayer播放多首歌曲:只有一首真正在播放...

我使用CyclicBarrier实例和内部类实现实现了您正在寻找的东西.

例:

public enum MP_COMMAND {

START,

STOP,

PAUSE

}

/**

* Uses threads to execute synced commands for the current video media player and

* background music player in tandem.

*/

public void syncedCommand(MediaPlayer player1, MediaPlayer player2, MP_COMMAND command) {

final CyclicBarrier commandBarrier = new CyclicBarrier(2);

new Thread(new SyncedCommandService(commandBarrier, player1, command)).start();

new Thread(new SyncedCommandService(commandBarrier, player2, command)).start();

}

/**

* Inner class that starts a given media player synchronously

* with other threads utilizing SyncedStartService

*/

private class SyncedCommandService implements Runnable {

private final CyclicBarrier mCommandBarrier;

private MediaPlayerTest.MP_COMMAND mCommand;

private MediaPlayer mMediaPlayer;

public SyncedCommandService(CyclicBarrier barrier, MediaPlayer player, MediaPlayerTest.MP_COMMAND command) {

mCommandBarrier = barrier;

mMediaPlayer = player;

mCommand = command;

}

@Override public void run() {

try {

mCommandBarrier.await();

} catch (InterruptedException | BrokenBarrierException e) {

e.printStackTrace();

}

switch (mCommand) {

case START:

mMediaPlayer.start();

break;

case STOP:

mMediaPlayer.stop();

break;

case PAUSE:

mMediaPlayer.pause();

break;

default:

break;

}

}

}

你会像这样使用它:

syncedCommand(mCurrentVideoPlayer, mBackgroundMusic, MP_COMMAND.START);

如果您要求它可以用于任何数量的媒体播放器,您可以轻松实现它 – 我的要求只需要两个.

我意识到这个问题已经过时了,但这个页面是我在寻找解决方案时发现自己的地方,所以我希望这可以帮助任何人在未来坚持这个问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值