Функция onImageAvailable() не вызывается после разблокировки экрана

При тестировании производительности Android Camera2 API я заметил ошибку, связанную с ImageReader,

Когда приложение запущено onImageAvailable() Функция вызывается правильно, но после блокировки и разблокировки экрана она вообще не вызывается. Часть моего приложения, которая работает с камерой, основана на руководстве Google Camera2Basic.

Более того, я установил демо-приложение Camera2Basic для Android, которое представляет API-интерфейс Camera2, и я обнаружил, что даже у этого приложения, созданного Google, есть та же проблема.

Есть ли какое-то решение этой проблемы?

Через некоторое время, потраченное во время использования средства отладки в Android Studio, я обнаружил, что проблема с onImageAvailable() вызываемая функция происходит только в том случае, если TextureView который используется для предварительного просмотра доступен в onResume() функция.

@Override
public void onResume() {
    super.onResume();
    startBackgroundThread();

    // When the screen is turned off and turned back on, the SurfaceTexture is already
    // available, and "onSurfaceTextureAvailable" will not be called. In that case, we can open
    // a camera and start preview from here (otherwise, we wait until the surface is ready in
    // the SurfaceTextureListener).
    if (mTextureView.isAvailable()) {
        openCamera(mTextureView.getWidth(), mTextureView.getHeight());
    } else {
        mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
    }
}

Если mTextureView.isAvailable() возвращает ложь и SurfaceTextureListener установлен на mTextureView затем onImageAvailable() вызывается правильно, но если функция openCamera(mTextureView.getWidth(), mTextureView.getHeight()) вызывается в onResume() проблема возникает.

0 ответов

Другие вопросы по тегам