MediaRecorder.stop() stop failed: -1007

后端 未结 5 1772
情书的邮戳
情书的邮戳 2020-12-05 10:09

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

5条回答
  •  不思量自难忘°
    2020-12-05 10:38

    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

提交回复
热议问题