2

我正在尝试使用相机 API 在 textureView 上显示相机的预览...在 java 中几乎没有任何与 cameraX api 相关的教程,因此很难理解 API 的工作原理...代码给了我一个运行时异常其中指出

“活动无法转换为 lifeCycleowner”

PreviewConfig config = new PreviewConfig.Builder().build();
Preview preview = new Preview(config);

preview.setOnPreviewOutputUpdateListener(
    new Preview.OnPreviewOutputUpdateListener() {
        @Override
        public void onUpdated(Preview.PreviewOutput previewOutput) {

            textureView.setSurfaceTexture(previewOutput.getSurfaceTexture());

        };
});

CameraX.bindToLifecycle((LifecycleOwner) this, preview);
4

3 回答 3

0

创建您的自定义生命周期

   //lifecycle for camera
        CustomLifecycle lifecycle=new CustomLifecycle();
        lifecycle.doOnResume();
        lifecycle.doOnStart();
        CameraX.bindToLifecycle(lifecycle, preview,imageCapture);


    public class CustomLifecycle implements LifecycleOwner {

        private LifecycleRegistry mLifecycleRegistry;
         CustomLifecycle() {
            mLifecycleRegistry = new LifecycleRegistry(this);
            mLifecycleRegistry.markState(Lifecycle.State.CREATED);
        }

        void doOnResume() {
            mLifecycleRegistry.markState(Lifecycle.State.RESUMED);
        }

        void doOnStart() {
            mLifecycleRegistry.markState(Lifecycle.State.STARTED);
        }

        @NonNull
        public Lifecycle getLifecycle() {
            return mLifecycleRegistry;
        }
    }
于 2019-09-02T08:07:26.130 回答
0

在 camerax 的官方代码实验室中已经建议您必须更新 appcompat 依赖项:

如果 Android Studio 抱怨“this”不是 LifecycleOwner,请尝试重建项目或将 appcompat 依赖项更新到 1.1.0 或更高版本。

检查以下链接: https ://codelabs.developers.google.com/codelabs/camerax-getting-started/#5

于 2019-09-10T09:09:02.113 回答
0

我发布的代码工作正常,现在我犯了在活动中实现它的错误。它必须在一个片段中实现:|

于 2019-09-10T15:09:08.327 回答