adrielcafe / AndroidAudioRecorder

A fancy audio recorder lib for Android. Supports WAV format at 48kHz.
1.63k stars 380 forks source link

MediaPlayer.release()' on a null object reference #39

Closed Hitexroid closed 6 years ago

Hitexroid commented 6 years ago
    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
        stopPlaying();
    }
    private void stopPlaying() {
        statusView.setText("");
        statusView.setVisibility(View.INVISIBLE);
        playView.setImageResource(R.drawable.aar_ic_play);

        visualizerView.release();
        if (visualizerHandler != null) {
            visualizerHandler.stop();
        }

        if (player != null) {
            try {
                player.stop();
                player.reset();
            } catch (Exception e) {
            }
        }

        stopTimer();
    }

Error :

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.release()' on a null object reference
    at com.cleveroad.audiovisualization.VisualizerWrapper.release(VisualizerWrapper.java:57)
    at com.cleveroad.audiovisualization.VisualizerDbmHandler.release(VisualizerDbmHandler.java:91)
    at com.cleveroad.audiovisualization.GLAudioVisualizationView.release(GLAudioVisualizationView.java:83)
    at cafe.adriel.androidaudiorecorder2.AudioRecorderActivity.stopPlaying(AudioRecorderActivity.java:368)
    at cafe.adriel.androidaudiorecorder2.AudioRecorderActivity.onCompletion(AudioRecorderActivity.java:211)
    at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:2873)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:234)
    at android.app.ActivityThread.main(ActivityThread.java:5526)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Hitexroid commented 6 years ago

Problem solved

Error occurred in this line : visualizerView.release();

    public void release() {
        visualizer.setEnabled(false);
        visualizer.release();
        visualizer = null;
          mediaPlayer.release();
          mediaPlayer = null;
    }

Just check if the MediaPlayer is not null :

    public void release() {
        visualizer.setEnabled(false);
        visualizer.release();
        visualizer = null;

        if (mediaPlayer != null) {
            mediaPlayer.release();
            mediaPlayer = null;
        }
    }