一段时间后声音停止 - Android

Sound stopping after some time - Android

每次单击按钮时都会调用此代码。一段时间后,当我单击按钮时,声音不再显示。我尝试使用另一个音乐文件,也尝试使用 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)

我已经尝试了你的代码并找到了解决方案,你可以尝试如下:

首先像

一样全局声明一个媒体播放器对象
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();
}

当 activity 暂停时,您必须暂停您的媒体播放器,并且 activity 的 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();
}

我对 BSavaliya 的代码稍作修改后效果更好: 先声明mPlayer为全局变量

 if (mPlayer != null )
 {
     if(mPlayer .isPlaying())
     {   
       mPlayer .stop();
     }    
     mPlayer .reset();
 }