используется камера2. Когда я вызываю closeCamera, вместо черного экрана отображается последний увиденный кадр.

Я реализовал камеру с тремя состояниями: селфи (спереди), сзади и выключено.

Все работает, кроме выключенного состояния.

Я использую 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 показывать черный экран?


person Erez git    schedule 10.09.2020    source источник
comment
У вас есть работающий CaptureSession? Поскольку вы используете MediaRecorder, я предполагаю, что вы запустили сеанс захвата, который необходимо закрыть при закрытии камеры.   -  person Alexandru    schedule 10.09.2020


Ответы (1)


Самый простой вариант, вероятно, состоит в том, чтобы наложить свой TextureView на отдельный черный вид, когда вы закроете камеру.

Или скройте TextureView, когда он не используется.

person Eddy Talvala    schedule 10.09.2020