如何为两个同时播放的媒体播放器使用OnCompletionListener?
该应用程序允许用户播放两种媒体:录制的音轨和音乐曲目同时如果其中一个停止,另一个也应该停止。 我找到了关于如何在单个MediaPlayer的Completion Listener上应用的解决方案。
我的第一个方法是为每个媒体声明两个监听器:
mp0.setOnCompletionListener(cplmp0);
mp1.setOnCompletionListener(cplmp1);
private MediaPlayer.OnCompletionListener cplmp0 = new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer m) {
mButtonListenOriginal.setImageResource(R.drawable.player_button_listen);
mp1.stop();
mp1.reset();
}
}
private MediaPlayer.OnCompletionListener cplmp1 = new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer m) {
mp0.stop();
mp0.reset();
}
}
这是一个很好的做法吗?还有其他解决方案吗?
答案 0 :(得分:1)
无论如何你不需要检查哪个玩家已被停止,因为你希望玩家在任何一个玩家完成游戏后停止。 因此,只需向两个玩家添加常见的侦听器。
mp0.setOnCompletionListener(cplmp);
mp1.setOnCompletionListener(cplmp);
并阻止两名球员
private MediaPlayer.OnCompletionListener cplmp = new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer m) {
if (mp0 != null) {
mp0.stop();
mp0.reset();
}
if (mp1 != null) {
mp1.stop();
mp1.reset();
}
}
};
答案 1 :(得分:0)
为了更好的可读性,您可以为您的班级实施听众并设置两个玩家'听你的班级。然后在你的overCoided onCompletition方法中,你可以对你的两个玩家进行if控制,
if(m == mp0) {
..
..
}
else if(m == mp1){
..
..
}