【发布时间】:2019-06-03 08:05:51
【问题描述】:
单击按钮时,我编写了一些代码来播放简单的声音。我希望这个声音甚至可以在以前使用相同按钮创建的声音上播放(例如,如果用户反复快速地单击按钮。
现在,在之前创建的声音完全完成之前,代码不会播放任何声音。
我尝试在单击按钮时执行 player.pause() 和 player.seekTo(0),但之前创建的声音被切断。这不是我想要的。我希望所有的声音都完整地完成。如果第一个声音仍在播放,我希望声音 2(第二个快速按钮按下)在顶部播放(声音 3、4 相同,(用户可能在第一个声音结束之前单击 5-6 次。)我应该制作 6 mediaPlayer 对象和 onclick 检查是否正在播放 1st,如果是则播放 2,如果正在播放,则播放 3 等等....?一定有更有效的方法。
在前一个声音完全播放完之前,这段代码不会播放声音:
button = findViewById(R.id.button);
player1 = MediaPlayer.create(this, R.raw.kick1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player1.start();
return;
}
});
这段代码切断了之前创建的声音:
button = findViewById(R.id.button);
player1 = MediaPlayer.create(this, R.raw.kick1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
player1.pause();
player1.seekTo(0);
player1.start();
return;
}
});
如何在每次点击时播放声音,并重叠之前创建的声音? (如果用户足够快地点击按钮到需要的地方)?
【问题讨论】:
-
想到了一些事情:我是否应该在每次点击时创建新的 MediaPlayer 对象,然后在它们播放声音后销毁它们?这样做安全吗/内存效率高?
标签: android button audio android-mediaplayer