Android CameraX застрял с двумя вариантами использования - PullRequest
0 голосов
/ 01 марта 2020

Я новичок в Android разработке (больше Python и инженер по ML), но хотел попробовать этот пример из TensorFlow: TF Lite Transfer Learning.

Я успешно запускаю это на Android Studio, но заметил, что я ничего не могу сделать с приложением, так как оно работает очень медленно. Я копался в коде, чтобы найти root причину, чтобы выяснить это.

В функции 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);

И вот здесь начинается проблема. Если мы сохраним их так, приложение станет непригодным для использования. Но если мы оставим только один (или один), мы можем использовать приложение до такой степени, что все нововведения работают нормально. Знаете ли вы, что вызывает такое поведение?

1 Ответ

1 голос
/ 02 марта 2020

Этот build.gradle использует довольно старую версию; перейти на версию 1.0.0-beta01.

...