解锁屏幕后未调用onImageAvailable()函数

时间:2018-02-05 18:28:50

标签: java android android-camera2 image-reader

在测试Android Camera2 API的性能时,我注意到与ImageReader相关的错误。

启动应用程序时正在调用onImageAvailable()函数,但在锁定和解锁屏幕后,根本不会调用它。我的应用程序中涉及相机的部分基于Camera2Basic Google教程。

更重要的是,我已经安装了 Camera2Basic Android演示应用程序,该应用程序提供了Camera2 API,我发现即使是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()返回 false 并且SurfaceTextureListener上设置了mTextureView,那么onImageAvailable()会被正确调用,但如果函数openCamera(mTextureView.getWidth(), mTextureView.getHeight())是在onResume()中调用问题发生。

0 个答案:

没有答案