I am recording video with MediaRecorder. My code works fine on 2.3.3 but fails on 4.0.3.
The issue is following: the code mediaRecorder.stop() throws the RuntimeExep
I experienced the same issue on Samsung J4+, Android 9 Pie.
Fixed it by running mediaRecorder.start() and mediaRecorder.stop() in a Handler:
private val START = 0;
private val STOP = 1;
inner class CameraHandler(looper: Looper?): Handler(looper) {
override fun handleMessage(msg: Message?) {
super.handleMessage(msg)
try {
when (msg?.what) {
START -> mediaRecorder?.start()
STOP -> mediaRecorder?.stop()
}
} catch (e: Exception) {
Log.d("debug", e.message)
}
}
}
declare the Handler:
private lateinit var mCameraHandler: Handler
initialize in OnCreate with a HandlerThread Looper:
val handlerThread: HandlerThread = HandlerThread("Camera Handler Thread")
handlerThread.start()
mCameraHandler = CameraHandler(handlerThread.looper)
when record or stop button is clicked call:
mCameraHandler.sendEmptyMessage(START)
mCameraHandler.sendEmptyMessage(STOP)
link to my messy code xD