Функция 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()
проблема возникает.