结合多个相同的java函数

时间:2014-04-30 18:24:16

标签: java android function

非常愚蠢的问题。我以前常常使用php。

我声明了多个Android MediaPlayer对象。 基于按下按钮,我想在它们之间切换。我目前有3个相同的功能 - 像这样......

public void playSound3() throws IOException {
     if(sound3.isPlaying()) {
        sound3.stop();
        sound3.reset();
     }
}

使用playSound3()

调用此方法

我希望将它组合成playSound(1),但是在MediaPlayer对象的情况下无法弄清楚如何做到这一点。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:0)

将声音作为参数传递。

 // Not sure what type your sound is.
public void playSound(MediaPlayer sound) throws IOException {
     if(sound.isPlaying()) {
        sound.stop();
        sound.reset();
     }
}

答案 1 :(得分:0)

试试这个:

public void playSound(MediaPlayer sound) throws IOException
{
    if(sound.isPlaying())
    {
        sound.stop();
        sound.reset();
    }
}

然后

playSound(sound1);
playSound(sound2);
&c

答案 2 :(得分:0)

如果确实需要将参数设置为int,则可以将MediaPlayer对象放入数组中:

public void playSound(int n) throws IOException {
    static MediaPlayer[] mediaPlayers = {sound0,sound1,sound2,sound3};

    if (n >= 0 && n < mediaPlayers.length) {
        MediaPlayer mp = mediaPlayers[n];
        if(mp.isPlaying()) {
            mp.stop();
            mp.reset();
        }
    }
}

答案 3 :(得分:0)

创建一个类似

的界面
public Interface IMySoundPlayer {
    void playSound() throws IOException;
}

创建一个所述Interface对象的数组并填充它

IMySoundPlayer[] soundPlayers = new IMySoundPlayer[] { new SoundPlayer(sound1), new SoundPlayer(sound2), new SoundPlayer(sound3) };

SoundPlayer与

有关
public class SoundPlayer implements IMySoundPlayer {
    private MediaPlayer mBackend;

    public SoundPlayer(MediaPlayer backend) {
        mBackend = backend;
    }

    public void playSound() throws IOException {
        if(mBackend.isPlaying()) {
            mBackend.stop();
            mBackend.reset();
        }
    }
}

使用整数或其他方案在3个实例之间轮换,并在每个实例上调用playSound

评论是否需要更多指导。

<强>声明

这已经完成了我的头脑,没有测试(甚至没有语法)。

答案 4 :(得分:0)

使用某种列表或数组来存储MediaPlayer对象,然后让您的方法将MediaPlayer作为其参数。然后,您可以将所需的数组元素传递给单个方法。

MediaPlayer[] players = {sound1, sound2, sound3};

public void playSound(MediaPlayer sound) throws IOException {
     if(sound.isPlaying()) {
         sound.stop();
         sound.reset();
     }
}

// Call method using sound1
playSound(players[0]);