码迷,mamicode.com
首页 > 移动开发 > 详细

官方Android Camera2 录像示例--停止录像时崩溃修正

时间:2019-10-20 12:55:16      阅读:740      评论:0      收藏:0      [点我收藏+]

标签:encode   ring   string   ttext   preview   blog   解决方法   access   发送   

官方Android 使用Camera2示例项目地址:https://github.com/android/camera-samples

视频录像示例:https://github.com/android/camera-samples/tree/master/Camera2VideoJava

技术图片

 

 官方Camera2VideoFragment.java停止录像代码,原来代码:会导致APP崩溃

    private void stopRecordingVideo() {
        // UI
        mIsRecordingVideo = false;
        mButtonVideo.setText(R.string.record);
        // Stop recording
        mMediaRecorder.stop();
        mMediaRecorder.reset();

        Activity activity = getActivity();
        if (null != activity) {
            Toast.makeText(activity, "Video saved: " + mNextVideoAbsolutePath,
                    Toast.LENGTH_SHORT).show();
            Log.d(TAG, "Video saved: " + mNextVideoAbsolutePath);
        }
        mNextVideoAbsolutePath = null;
        startPreview();
    }

 

解决方法如下:

    private void stopRecordingVideo() {
        // UI
        mIsRecordingVideo = false;
        mButtonVideo.setText(R.string.record);
        //必须将这一句放置到MediaRecorder停止释放的前面,
        //否则就会造成,接收数据方(Encoder)已经停止了,而发送数据的session还在运行。才会造成以上错误。
        startPreview();
        // Stop recording
        mMediaRecorder.stop();
        mMediaRecorder.reset();

        Activity activity = getActivity();
        if (null != activity) {
            Toast.makeText(activity, "Video saved: " + mNextVideoAbsolutePath,
                    Toast.LENGTH_SHORT).show();
            Log.d(TAG, "Video saved: " + mNextVideoAbsolutePath);
        }
        mNextVideoAbsolutePath = null;
        
    }

另外修改closePreviewSession()方法,增加红色字体代码:

private void closePreviewSession() {
        if (mPreviewSession != null) {
            try {
                mPreviewSession.stopRepeating();
                mPreviewSession.abortCaptures();
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
            mPreviewSession.close();
            mPreviewSession = null;
        }
    }

 

参考:https://blog.csdn.net/mengjiangyue/article/details/62435349

 

官方Android Camera2 录像示例--停止录像时崩溃修正

标签:encode   ring   string   ttext   preview   blog   解决方法   access   发送   

原文地址:https://www.cnblogs.com/tc310/p/11707200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!