Как правильно использовать setTargetAspectRatio? - PullRequest
0 голосов
/ 21 марта 2020

Я относительно новичок в разработке на android и пытаюсь реализовать функцию камеры. Я использую эту страницу в качестве руководства https://www.journaldev.com/30132/android-camerax-overview.

В следующем разделе кода у меня возникают проблемы.

Rational aspectRatio = new Rational(textureView.getWidth(), textureView.getHeight());
Size screen = new Size(textureView.getWidth(), textureView.getHeight()); //size of the screen

PreviewConfig pConfig = new PreviewConfig.Builder().setTargetAspectRatio(aspectRatio).setTargetResolution(screen).build();

Когда Rational передается в setTargetAspectRatio, Android Studio выдает ошибку: Rational не может быть преобразован в AspectRatio ,

Согласно android страница разработчика setTargetAspectRatio принимает объект AspectRatio, поэтому я попытался это сделать:

AspectRatio aspectRatio = new AspectRatio(textureView.getWidth(), textureView.getHeight());

Однако я получаю сообщение об ошибке в этой строке говоря «AspectRatio () имеет частный доступ в androidx.camera.core.AspectRatio». Я не уверен, что означает эта ошибка, поскольку я нормально импортировал androidx.camera.core.AspectRatio.

1 Ответ

0 голосов
/ 22 марта 2020

Похоже, что учебник, который вы читаете, использует довольно старую версию (alpha02) библиотеки camerax. Текущая версия - бета01, и между этими версиями многое изменилось.

'AspectRatio () имеет частный доступ в androidx.camera.core.AspectRatio'. Я не уверен, что означает эта ошибка, так как я импортировал androidx.camera.core.AspectRatio нормально.

AspectRatio действительно имеет частный конструктор в данный момент (и так как несколько версий go), это ограничение заключается в том, чтобы вы sh использовали только одну из поддерживаемых крыс ios RATIO_4_3 или RATIO_16_9, что означает, что настройка соотношения сторон предварительного просмотра выглядит следующим образом:

final Preview preview = new Preview.Builder()
        .setTargetAspectRatio(RATIO_16_9)
        .build()

Обратите внимание, что если вы хотите добавить в свое приложение только видоискатель basi c, рекомендуется использовать PreviewView cameraX, это упрощает настройку предварительного просмотра камеры, вы можете проверить, как это сделать. с официальная документация cameraX .

...