具有两个MediaPlayer的OnCompletion侦听器

时间:2014-03-17 12:35:28

标签: android media-player listener

如何为两个同时播放的媒体播放器使用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();
    }
}

这是一个很好的做法吗?还有其他解决方案吗?

2 个答案:

答案 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){
..
..
}