每次单击按钮时都会调用此代码。单击按钮一段时间后,声音不再显示。我试图使用另一个音乐文件,我也尝试使用MediaPlayer而不是SoundPool,但问题仍然存在。
为了更具体地解决这个问题,它就像:我点击了10次并且它正在返回声音,当我再次点击它停止时
public void displaySound(Context context){
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
int soundId = sp.load(context, R.raw.bubble_nice, 1);
sp.play(soundId, 1, 1, 0, 0, 1);
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.bubble_nice);
mPlayer.start();
}
当声音停止时,它会出现在日志中:E/MediaPlayer: error (1, -19)
答案 0 :(得分:2)
我已经尝试过您的代码并找到了解决方案,您可以尝试如下:
首先声明媒体播放器对象,如
MediaPlayer mPlayer;
然后点击按钮使用以下方法。
public void displaySound(Context context) {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.stop();
mPlayer.reset();
}
mPlayer = MediaPlayer.create(context, R.raw.bubble_nice);
mPlayer.start();
}
答案 1 :(得分:1)
当活动暂停时,你必须暂停你的媒体播放器,并且活动的onStart()你可以再次调用它。下面的代码
@Override
protected void onStart() {
mPlayer.reset();
super.onStart();
}
@Override
protected void onPause() {
mPlayer.pause();
super.onPause();
}
@Override
protected void onDestroy() {
mPlayer.stop();
super.onDestroy();
}
答案 2 :(得分:1)
通过对BSavaliya代码进行少量修改,对我来说效果更好: 首先将mPlayer声明为全局变量。
if (mPlayer != null )
{
if(mPlayer .isPlaying())
{
mPlayer .stop();
}
mPlayer .reset();
}