LoginSignup
4
3

More than 5 years have passed since last update.

【Android】再生を繰り返していると「E/MediaPlayer: error (1, -19)」が出力されて再生がまったくできなくなる原因

Last updated at Posted at 2017-11-14

「E/MediaPlayer: error (1, -19)」みたいなエラーログやめて…

以下のようなアプリを作って、再生と停止を連続で繰り返していたら発生したエラー。

このエラー発生後は、何も再生できなくなる

プロセスを殺さないと復帰できないので、これはヤベェと慌てて調査する。

Screenshot_2017-11-14-02-24-37.png

原因

MediaPlayerは、再生が終了する毎に「release()」を呼ばなければならない

なんてことはない、単なる実装洩れだよ。。。

サンプルコード

例えば、終了の通知(コールバック)で、ちゃんと「release()」を呼べば、問題ない。

引数にわざわざ「MediaPlayer mediaPlayer」が設定されていたのは、意味があったんだね……!

気づいてあげられなくて、ゴメン。

        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();
            }
        });

こんな感じの、「stop()」的な関数を作ってみてもいい。

    /**
     * Stop the sound.
     */
    private void stop() {
        if (null == mMediaPlayer) {
            return;
        }
        if (mMediaPlayer.isPlaying()) {
            mMediaPlayer.stop();
        }
        mMediaPlayer.reset();
        mMediaPlayer.release();
        mMediaPlayer = null;
    }

サンプルアプリ

是非、容赦なく連打してみてほしい。

アプリの実動作・見栄えを自らの手で確認した方が、プロジェクト一式や操作動画を確認するよりも、多くを得られると思っているので、良ければ、以下のアプリ(=上記のスクショのアプリ)を参考にどうぞ。

ic_launcher.png
「自然の音」は、リラックス効果と良質な睡眠、仕事・勉強の集中力アップをもたらす :SOUNDBOSS

【動作環境】
Android OS 5.0以上

Made in Japan.
© CUTBOSS
Producer & Director, Boss of the Barber.
Lead Programmer & Designer, Boss of the Barber.

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3