使用camera2当我调用closeCamera时,显示最后看到的帧而不是黑屏

问题描述

我实现了具有3种状态的摄像头:自拍(前),后和关。

除“关闭”状态外,其他所有功能都起作用。

我正在使用camera2,它显示在TextureView上:

<TextureView
    android:id="@+id/texture_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

预期:“断开”状态。当被选择,我想以关闭照相机显示黑屏

实际:在“关闭”状态下,显示摄像机的最后一帧。

closeCamera方法

private void closeCamera() {
    try {
        mCameraOpenCloseLock.acquire();
        closePreviewSession();
        if (null != mCameraDevice) {
            mCameraDevice.close();
            mCameraDevice = null;
        }
        if (null != mMediaRecorder) {
            mMediaRecorder.release();
            mMediaRecorder = null;
        }
    } catch (InterruptedException e) {
        throw new RuntimeException("Interrupted while trying to lock camera closing.");
    } finally {
        mCameraOpenCloseLock.release();
    }
}


private void closePreviewSession() {
    if (mPreviewSession != null) {
        mPreviewSession.close();
        mPreviewSession = null;
    }
}

有什么主意如何使“ closeCamera”显示黑屏?

解决方法

最简单的选择可能是在关闭相机时用单独的黑色视图覆盖TextureView。

或在不使用时隐藏TextureView。