Android CameraX 遇到了两个用例

Android CameraX stuck with two use cases

我是 Android 开发的新手(更多 Python 和 ML 工程师)但想尝试 TensorFlow 中的这个示例:TF Lite Transfer Learning.

我在 Android Studio 上成功 运行 它,但发现我无法使用该应用程序执行任何操作,因为它的运行速度非常慢。我正在研究代码以找到根本原因并发现了这一点。

在函数 CameraFragment::startCamera() 中创建了预览上下文

    PreviewConfig config = new PreviewConfig.Builder()
    .setLensFacing(LENS_FACING)
    .setTargetAspectRatio(screenAspectRatio)
    .setTargetRotation(viewFinder.getDisplay().getRotation())
    .build();

Preview preview = new Preview(config);

preview.setOnPreviewOutputUpdateListener(previewOutput -> {
  ViewGroup parent = (ViewGroup) viewFinder.getParent();
  parent.removeView(viewFinder);
  parent.addView(viewFinder, 0);

以及我们可以保留为空的其他用例:

    final ImageAnalysisConfig imageAnalysisConfig =
        new ImageAnalysisConfig.Builder()
                .setLensFacing(LENS_FACING)
                .setTargetResolution(new Size(224, 224))
                .setCallbackHandler(new Handler(inferenceThread.getLooper()))
                .setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
                .build();
final ImageAnalysis imageAnalysis2 = new ImageAnalysis(imageAnalysisConfig);
imageAnalysis2.setAnalyzer((image, rotationDegrees) -> { });

新的我们有一条线让他们栩栩如生:

CameraX.bindToLifecycle(this, preview, imageAnalysis2);

问题就在这里。如果我们这样保留它们,应用程序将无法使用。但是如果我们只保留一个(任何一个),我们可以使用该应用程序直到所有导航正常工作。你知道是什么导致了这种行为吗?

这个build.gradle使用的是相当旧的版本;迁移到版本 1.0.0-beta01.