美文网首页
相机录制 MediaRecord stop

相机录制 MediaRecord stop

作者: 大象屁股 | 来源:发表于2018-03-21 14:34 被阅读9次

    关于相机录制视屏时,用户按返回键退出时,出现Stop faild 的错误;
    或者 相机在录制时被关闭,关闭时间很长,导致ui界面卡顿;

    是因为MediaRecorder 的Stop方法不会马上执行,导致的错误或者卡顿;

    我试过在 Activity 生命周期的 onStop 方法那里处理 MediaRecorder的Stop,但是无效;

    然后在Activity的返回键那里处理 MediaRecord的 stop逻辑;

    有效果了,MediaRecord停止得非常快,相机也不会卡顿;

    偶然解决,不知原理 ....

      @Override
        public void onBackPressed() {
            super.onBackPressed();
            if (mMediaRecorder != null) {
                try {
                    mMediaRecorder.setOnInfoListener(null);
                    mMediaRecorder.setPreviewDisplay(null);
                    mMediaRecorder.setOnErrorListener(null);
                    try {
                        mMediaRecorder.stop();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    mMediaRecorder.reset();
                    mMediaRecorder.release();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                mMediaRecorder = null;
            }
        }
    
    附上 停止Camera的处理
     if (mCamera != null) {
                try {
                    mCamera.setPreviewCallback(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                try {
                    mCamera.lock();
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                try {
                    mCamera.stopPreview();
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                try {
                    mCamera.release();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                mCamera = null;
            }
    

    相关文章

      网友评论

          本文标题:相机录制 MediaRecord stop

          本文链接:https://www.haomeiwen.com/subject/tzrgqftx.html