一段时间后声音停止 - Android

时间:2017-06-01 02:45:00

标签: java android android-mediaplayer android-audiomanager

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

3 个答案:

答案 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();
 }