Media Player到达终点,以及onCompletion()方法的不同命令集

时间:2012-10-29 19:46:26

标签: android methods android-mediaplayer

假设我有几个我创造的球员。 并且让我们说,对于他们中的每一个,我想要激活动作的不同集合。

我如何确定哪个玩家已经完成(案例句子的实现本身),以便为每个玩家采取不同的行动?

例如:为了处理单个玩家,我们所要做的就是像这样实现onCompletion()方法:

public void onCompletion(MediaPlayer mp){
    //DO SOMETHING HERE THAT FITS FOR ALL KINDS OF PLAYER'S TYPE OBJECTS
}

如何添加案例句子以扩展它以处理几个不同的玩家对象?

谢谢!

2 个答案:

答案 0 :(得分:4)

传递给此方法的MediaPlayer属性与刚刚完成的MediaPlayer相同,因此只要您保留指向每个媒体播放器的指针(例如通过全局变量),那么您需要做的就是检查您收到的媒体播放器:

public class MyClass implements OnClompleteListener 
{
    MediaPlayer player1, player2, player3;
    //initialize them
    player1.setOnCompleteListener(this);
    player2.setOnCompleteListener(this);
    player3.setOnCompleteListener(this);

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        if (mp == player1)
        {
            //TODO handle player 1 completion
        }
        else if (mp == player2)
        {
            //TODO handle player 2 completion
        }
        else if (mp == player3)
        {
            //TODO handle player 3 completion
        }
    }
}

您也可以在线处理此问题,而无需实施OnCompleteListener

player1.setOnCompleteListener(new OnCompleteListener() {

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        //mp IS ALWAYS EQUAL TO player1!
    }
});

答案 1 :(得分:0)

您可以创建一个扩展MediaPlayer的类,并为其提供一个类似数字的属性,以跟踪哪个玩家是哪个。然后你会用onCompletion()方法检查玩家的号码。否则,您可以创建不同的onCompletion侦听器并将它们设置为不同的播放器。