2

我目前正在尝试使用 Android Jetpack 的新 cameraX livrary 开发 QRCode 扫描仪。我使用最新的可用版本:1.0.0-alpha06

在 CameraXBasic 示例(https://github.com/android/camera-samples/tree/master/CameraXBasic)中,将 cameraX 库版本从 1.0.0-alpha05 更新到 1.0.0-alpha06 后,我试图显示16:9 比例预览而不是全屏预览。

为了做到这一点,我更新了fragment_camera.xml布局以“强制”的比率方面TextureView

<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/camera_container"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@android:color/black"
  >
    <TextureView
      android:id="@+id/view_finder"
      android:layout_width="0dp"
      android:layout_height="0dp"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintDimensionRatio="16:9"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toTopOf="parent"
      />
</androidx.constraintlayout.widget.ConstraintLayout>

预览看起来不错:

在此处输入图像描述

现在,我已将代码更新到CameraFragment类中以使用新的AspectRatio枚举。

所以现在,相机预览配置看起来像:

val viewFinderConfig = PreviewConfig.Builder().apply {
  setLensFacing(lensFacing)
  // We request aspect ratio but no resolution to let CameraX optimize our use cases
  setTargetAspectRatio(AspectRatio.RATIO_16_9)
  // Set initial target rotation, we will have to call this again if rotation changes
  // during the lifecycle of this use case
  setTargetRotation(viewFinder.display.rotation)
}.build()

不幸的是,结果看起来像是 1:1 的比例,而不是 16:9 的比例:

在此处输入图像描述

如果我使用AspectRatio.RATIO_4_3值而不是AspectRatio.RATIO_16_9结果看起来不错:

在此处输入图像描述

这是库的问题还是我使用AspectRatio.RATIO_16_9value 的实现的问题?

预先感谢您的帮助!

4

1 回答 1

0

问题直接进入图书馆。最新的 alpha (alpha-08) 不再存在此问题。

于 2020-01-23T09:24:20.843 回答