From c6c3bbfd811b69a20053546f6d7345527206621f Mon Sep 17 00:00:00 2001 From: Jindong Date: Tue, 17 Jan 2017 14:53:58 +0800 Subject: SoundRecorder crash if click start/stop button quickly The stop API: android.media.MediaRecorder.stop will throw IllegalStateException if it is called immediately after start(). The native method stop() will throw RuntimeException before IllegalStateException. So try to catch RuntimeException. Change-Id: Ib32baf16e6fd693af4093365d487a05dab6f104e Signed-off-by: Jindong --- src/com/android/soundrecorder/Recorder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/soundrecorder/Recorder.java b/src/com/android/soundrecorder/Recorder.java index b9654cd..9d906c2 100644 --- a/src/com/android/soundrecorder/Recorder.java +++ b/src/com/android/soundrecorder/Recorder.java @@ -200,7 +200,12 @@ public class Recorder implements OnCompletionListener, OnErrorListener { if (mRecorder == null) return; - mRecorder.stop(); + try { + mRecorder.stop(); + } catch (RuntimeException e) { + Log.w("Recorder", "Catch RuntimeException on MediaRecorder.stop() due to a call " + + "immediately after MediaRecorder.start()."); + } mRecorder.release(); mRecorder = null; -- cgit v1.2.3