Upendra Singh Chauhan
Upendra Singh Chauhan

Reputation: 33

Android MediaPlayer OnCompletion NullPointerException

This is my first question. It is giving NullPointerException in media.release() line. Exact output is NullPointerException (@ProgressDetailRecyclerViewAdapter$5:onCompletion:308) {main}

 public void play(String fileURL) {

    try {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.setDataSource(fileURL);
        mediaPlayer.prepare();
        mediaPlayer.start();
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mediaPlayer.release(); //line 308
                mediaPlayer = null;
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Upvotes: 1

Views: 496

Answers (3)

Uma Achanta
Uma Achanta

Reputation: 3729

 @Override
            public void onCompletion(MediaPlayer **mp**) {
                **mediaPlayer**.release(); //line 308
                mediaPlayer = null;
            }

use the right object mp instead of mediaPlayer inside this method

Upvotes: 1

Jokab
Jokab

Reputation: 2936

The variable that gets passed to your onCompletion method is named mp, not mediaPlayer. It's possible your mediaPlayer variable has been nulled since it was initialized, causing the error. Change the code to:

@Override
public void onCompletion(MediaPlayer mp) {
    mp.release(); //line 308
    mp = null;
}

Upvotes: 0

Quick learner
Quick learner

Reputation: 11457

Try this

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mp.release(); //line 308
                mp= null;
            }
        });

Upvotes: 0

Related Questions