我试图制作一个Android音板。当我触摸任何按钮时它会产生声音但是当我再次触摸它时,不仅声音停止,而且其他按钮都没有工作。我希望它一次播放一个声音。这里。是我主要的活动,我在按钮上调用播放功能。
create unique index [name_unique] on [dbo].[Table]([Name], [SecondName], [Type])
where ( (AxisType & 8) > 0);
答案 0 :(得分:0)
此示例取自您的上一个方法:
public void playchup(View view) {
if (cry.isPlaying())
cry.stop();
if (whine.isPlaying())
whine.stop();
if (weed.isPlaying())
weed.stop();
chup.start();
}
如果查看最后三个if语句,可以看到停止声音。如果正在播放任何声音,则在按下按钮时会停止播放。
让我进一步解释一下:
可能的问题
理论上,当播放MediaPLayer时,您必须重新创建它。请参阅this question,了解如何循环播放声音,而不必每次都重新创建媒体播放器。
意味着您的代码应该如下所示:
whine = MediaPlayer.create(this, R.raw.gone);
cry = MediaPlayer.create(this, R.raw.mock);
weed = MediaPlayer.create(this, R.raw.phen);
chup = MediaPlayer.create(this, R.raw.rg);
whine.setLooping(true);
cry.setLooping(true);
weed.setLooping(true);
chup.setLooping(true);
如果您不想在按下一个按钮时停止其他所有声音,则必须删除if语句,以检查是否正在播放其他声音并停止播放。
替代MediaPlayer
如果您正在处理多种声音,可以使用SoundPool,因为它可以同时处理多个声音和重叠声音。
答案 1 :(得分:0)
因为您正在创建MusicPlayer
个对象,而不是发布它们
声明一个界面并覆盖 setOnCompletion
来调用release()
方法。
示例强>
private class musicCompletionListener implements MediaPlayer.OnCompletionListener {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
}
然后为每个 mediaPlayer 对象设置setOnCompletion侦听器。
public void playwhine(View view) {
if (cry.isPlaying())
cry.stop();
if (weed.isPlaying())
weed.stop();
if (chup.isPlaying())
chup.stop();
whine.setOnCompletionListener(new musicCompletionListener());
whine.start();
}
public void playcry(View view) {
if (whine.isPlaying())
whine.stop();
if (weed.isPlaying())
weed.stop();
if (chup.isPlaying())
chup.stop();
cry.setOnCompletionListener(new musicCompletionListener());
cry.start();
}
public void playweed(View view) {
if (cry.isPlaying())
cry.stop();
if (whine.isPlaying())
whine.stop();
if (chup.isPlaying())
chup.stop();
weed.setOnCompletionListener(new musicCompletionListener());
weed.start();
}
public void playchup(View view) {
if (cry.isPlaying())
cry.stop();
if (whine.isPlaying())
whine.stop();
if (weed.isPlaying())
weed.stop();
chup.setOnCompletionListener(new musicCompletionListener());
chup.start();
}