E/MediaPlayer: 错误 (-19, 0) - 无缘无故

E/MediaPlayer: error (-19, 0) - for no reason

我已经阅读了无数关于此错误的主题,但是其中 none 遇到了与我相同的问题。

我得到

E/MediaPlayer: 错误 (-19, 0)

E/MediaPlayer: 错误 (-19,0)

错误,但是,音乐甚至不播放。在最初的几次尝试中,它运行完美,但有一次音乐完全播放,然后应用程序关闭,从那以后每次我打开应用程序时音乐 甚至没有开始,

我的代码非常简单,这是我用来测试的代码(在 main activity 的 onCreate 内部):

    mp1 = MediaPlayer.create(this,R.raw.shavingmirror_bgmusic);
    mp1.start();

原来的代码曾经可以工作,但现在由于某种原因不能工作(位于新的class的onCreate中,而不是在main activity中),它基本上只有一个SeekBar 和音乐的音量应根据 SeekBar 相应地上下移动:

public class settings extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener {

MediaPlayer mp;
SeekBar sb;
AudioManager am;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings);
    sb = (SeekBar)findViewById(R.id.volumesb);
    mp = MediaPlayer.create(this,R.raw.shavingmirror_bgmusic);
    mp.start();
    mp.setLooping(true);

    am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
    int max = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    sb.setMax(max);
    sb.setProgress(max/2);
    am.setStreamVolume(AudioManager.STREAM_MUSIC,max/2,0);
    sb.setOnSeekBarChangeListener(this);

}

@Override
protected void onPause() {
    super.onPause();
    mp.release();
}


@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    am.setStreamVolume(AudioManager.STREAM_MUSIC,progress,0);
}

看来问题是我没有释放mp,导致它崩溃,再也不能用了。为了解决这个问题:

  • 重启模拟器。
  • 向其中添加一些版本 ( mp.release(); )

希望这个问题不要重演,因为我现在每次都放出mp。如果重复出现,我会更新这个。