非常愚蠢的问题。我以前常常使用php。
我声明了多个Android MediaPlayer对象。 基于按下按钮,我想在它们之间切换。我目前有3个相同的功能 - 像这样......
public void playSound3() throws IOException {
if(sound3.isPlaying()) {
sound3.stop();
sound3.reset();
}
}
使用playSound3()
调用此方法我希望将它组合成playSound(1),但是在MediaPlayer对象的情况下无法弄清楚如何做到这一点。
非常感谢任何帮助。
答案 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]);