相机取景器

  
适用于相机的独立可组合项和基于 View 的取景器”

下表列出了 androidx.camera-viewfinder 组中的所有工件。

制品 稳定版 候选版 Beta 版 Alpha 版
viewfinder-compose - - 1.5.0-beta01 1.4.0-alpha13
viewfinder-core - - 1.5.0-beta01 1.4.0-alpha13
viewfinder-view - - 1.5.0-beta01 1.4.0-alpha13
此库的最后更新时间:2025 年 5 月 7 日

声明依赖项

如需添加 camera-viewfinder 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    // Use to implement camera viewfinders
    
    implementation "androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01"
    implementation "androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01"
    implementation "androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01"

}

Kotlin

dependencies {
    // Use to implement camera viewfinders
    implementation("androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01")
    implementation("androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01")
    implementation("androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01")


}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.5

版本 1.5.0-beta01

2025 年 5 月 7 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01。版本 1.5.0-beta01 包含这些提交内容

  • 这是基于 View 和 Compose 的取景器的第一个官方 Beta 版,可灵活地与 Camera2 搭配使用。如果您正在寻找可与 CameraX 搭配使用的 View 或可组合项,请参阅 PreviewViewCameraXViewfinder

新功能

  • ContentScaleAlignment 现在可以在基于 Compose 的取景器中使用,以缩放和放置显示的 Surface 在其容器中,类似于 androidx.compose.foundation.Image 的行为。(Ibcea3)

API 变更

  • TransformationInfo 现在为所有参数提供了默认值。这样,您就可以在不使用任何 TransformationInfo 的情况下创建取景器,默认情况下,源代码旋转角度为 0,没有源代码镜像,也没有剪裁矩形。(I2b1b2)
  • 可组合 Viewfinder 现在接受尾随 lambda 来接收 Surface 会话,与 AndroidExternalSurface 类似。提供的 lambda 使用 ViewfinderInitScope 作为接收器,这允许安装回调以接收新的 Surface 会话。当这些 Surface 会话超出范围时,会自动释放 Viewfinder 持有的资源。(Ib2b0d)
  • ViewfinderSurfaceRequest.Builder.populateFromCharacteristics 现已移除,取而代之的是可用于生成 TransformationInfo 的一组等效静态 API,该 API 将产生与 populateFromCharacteristics 相同的转换。这些静态方法会添加到 Camera2TransformationInfo 类中。(Idc6af)
  • ViewfinderSurfaceRequest 不再包含用于检索 Surface 的异步 API。现在,它已成为不可变的数据类型。用于检索 Surface 的 API 现已移至取景器。(I30127)
  • CameraViewfinder 已重命名为 ViewfinderView,以便与取景器可组合项的命名保持一致,并表明它不仅可与相机源搭配使用。(Id9e6b)
  • viewfinder-view 中的类已从 androidx.camera.viewfinder 软件包移至 androidx.camera.viewfinder.view 子软件包。(I6cb44)
  • 我们在基于视图的取景器中添加了新 API,以便设置源旋转、镜像和剪裁矩形。此 TransformationInfo 类与基于 Compose 的取景器使用的类相同。(I907c3)
  • 基于视图的取景器现在使用新的 ViewfinderSurfaceRequest API,这些 API 不再在内部处理 Surface 响应。requestSurfaceSession() API 现在会返回 ListenableFuture<ViewfinderSurfaceSession>,而不是返回 ListenableFuture<Surface>ListenableFuture<ViewfinderSurfaceSession> 会返回一个 AutoCloseable 类,该类在关闭时与调用 ViewfinderSurfaceRequest.markSurfaceSafeToRelease() 的旧 API 的行为相同。这样可以更明确地划分 Surface 请求和 Surface 响应之间的职责。(I19041)

版本 1.4

版本 1.4.0-alpha13

2025 年 2 月 26 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13。版本 1.4.0-alpha13 包含这些提交内容

版本 1.4.0-alpha12

2025 年 1 月 15 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12。版本 1.4.0-alpha12 包含这些提交内容

新功能

  • compileSdk 升级为 35,以使用 Android 15 相关 API。使用 CameraX 库的应用也需要升级其 compileSdk 配置设置。(Ic80cd)
  • 此库现在使用 JSpecify nullness annotations,即类型使用。Kotlin 开发者应使用以下编译器参数来强制执行正确的用法:-Xjspecify-annotations=strict(从 Kotlin 编译器 2.1.0 版开始,这是默认值)。(I7bcd7b/326456246

版本 1.4.0-alpha11

2024 年 12 月 11 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11。版本 1.4.0-alpha11 包含这些提交内容

API 变更

  • viewfinder-core 类已移至与其所属库一致的软件包中。(I431c6)
  • CameraViewfinder.ScaleType 已移至 viewfinder-core,因此可以与 Compose 一起重复使用 (I87ef1)
  • 移除了已废弃的 CameraViewfinder 类。请使用提供等效功能的新 API。(I6e59a)

版本 1.4.0-alpha10

2024 年 10 月 30 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha10androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha10androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha10。版本 1.4.0-alpha10 包含这些提交内容

版本 1.4.0-alpha09

2024 年 10 月 2 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha09androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha09androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha09。版本 1.4.0-alpha09 包含这些提交内容

版本 1.4.0-alpha08

2024 年 9 月 4 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha08androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha08androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha08。版本 1.4.0-alpha08 包含这些提交内容

新功能

更新到 1.4.0-alpha08 后,CameraX 取景器工件已移至自己的库组。这项更改对于提高 CameraX 库的模块化程度和可维护性至关重要。

如果您之前依赖于 androidx.camera:camera-viewfinderandroidx.camera:camera-viewfinder-composeandroidx.camera:camera-viewfinder-core,则需要将依赖项转换为以下依赖项:

  • androidx.camera:camera-viewfinder -> androidx.camera.viewfinder:viewfinder-view
  • androidx.camera:camera-viewfinder-compose -> androidx.camera.viewfinder:viewfinder-compose
  • androidx.camera:camera-viewfinder-core -> androidx.camera.viewfinder:viewfinder-core

进行此转换应该不需要进行任何代码更改。旧版 Viewfinder Maven 坐标将不再收到更新。

此外,如果您将 Compose 与 CameraX 搭配使用,现在可以使用一个处于 Alpha 版阶段的全新 Compose 优先库:androidx.camera:camera-compose。这提供了 CameraXViewfinder 可组合项,这是一个 Compose 惯用取景器,用于将 CameraX 的 SurfaceRequest 适应 Compose,类似于 PreviewView 对 View 的运作方式。