相机取景器

  
适用于相机的独立可组合项和基于视图的取景器“

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

制品 稳定版 候选版 Beta 版 Alpha 版
viewfinder-compose 1.6.1 - - 1.7.0-alpha01
viewfinder-core 1.6.1 - - 1.7.0-alpha01
viewfinder-view 1.6.1 - - 1.7.0-alpha01
此库最新更新时间:2026 年 5 月 6 日

声明依赖项

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

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

Groovy

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

}

Kotlin

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


}

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

反馈

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

创建新问题

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

版本 1.7

版本 1.7.0-alpha01

2026 年 3 月 11 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.7.0-alpha01androidx.camera.viewfinder:viewfinder-core:1.7.0-alpha01androidx.camera.viewfinder:viewfinder-view:1.7.0-alpha01。版本 1.7.0-alpha01 中包含 这些提交内容

版本 1.6

版本 1.6.1

2026 年 5 月 6 日

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

版本 1.6.0

2026 年 3 月 25 日

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

自 1.5.0 以来的重要变更

  • 通过新的 ViewfinderDefaults.implementationMode 公共 API 公开了默认取景器 ImplementationMode。现在,它用作 ViewfinderViewViewfinder 可组合项的默认值。(Ic3f52)

版本 1.6.0-rc01

2026 年 2 月 25 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.6.0-rc01androidx.camera.viewfinder:viewfinder-core:1.6.0-rc01androidx.camera.viewfinder:viewfinder-view:1.6.0-rc01。版本 1.6.0-rc01 中包含 这些提交内容

版本 1.6.0-beta02

2026 年 2 月 11 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.6.0-beta02androidx.camera.viewfinder:viewfinder-core:1.6.0-beta02androidx.camera.viewfinder:viewfinder-view:1.6.0-beta02。版本 1.6.0-beta02 中包含 这些提交内容

版本 1.6.0-beta01

2026 年 1 月 28 日

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

版本 1.6.0-alpha02

2025 年 12 月 17 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.6.0-alpha02androidx.camera.viewfinder:viewfinder-core:1.6.0-alpha02androidx.camera.viewfinder:viewfinder-view:1.6.0-alpha02。版本 1.6.0-alpha02 中包含 这些提交内容

版本 1.6.0-alpha01

2025 年 10 月 22 日

发布了 androidx.camera.viewfinder:viewfinder-compose:1.6.0-alpha01androidx.camera.viewfinder:viewfinder-core:1.6.0-alpha01androidx.camera.viewfinder:viewfinder-view:1.6.0-alpha01。版本 1.6.0-alpha01 中包含 这些提交内容

API 变更

  • 通过新的 ViewfinderDefaults.implementationMode 公共 API 公开了默认取景器 ImplementationMode。现在,它用作 ViewfinderViewViewfinder 可组合项的默认值。(Ic3f52)

版本 1.5

版本 1.5.3

2026 年 1 月 28 日

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

版本 1.5.2

2025 年 12 月 4 日

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

版本 1.5.1

2025 年 10 月 8 日

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

版本 1.5.0

2025 年 9 月 10 日

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

自版本 1.4.0 以来的重要变更

这是 Camera Viewfinder 库的第一个稳定版本,提供了稳健、感知生命周期且易于使用的基于 View 和 Compose 的 API。这些组件旨在用作相机取景器,并且可以直接与 Camera2 集成。

此版本还为新的 androidx.camera:camera-compose 制品奠定了基础,该制品引入了 CameraXViewfinder,这是一个符合 Compose 惯例的取景器,可与 CameraX SurfaceRequest 无缝集成,类似于 PreviewView 对基于 View 的布局的作用。一些最重要的变更包括:

  • 制品重定位: 为了提高模块化程度,取景器制品已移至其自己的库组。之前使用 androidx.camera:camera-viewfinder* 依赖项的开发者应迁移到 androidx.camera.viewfinder:viewfinder-*
  • API 稳定和改进: 此稳定版本对 API Surface 进行了优化。这包括将 CameraViewfinder 重命名为 ViewfinderView 以更好地反映其多功能性,为清晰起见,重新组织软件包,以及将 ViewfinderSurfaceRequest 设为不可变的数据类型以实现更可预测的状态管理。
  • Compose API 更新: Compose Viewfinder API 现在支持 ContentScaleAlignment,以便对相机流在其容器中的显示方式进行精细控制,从而镜像标准 androidx.compose.foundation.Image 可组合项的行为。
  • Surface 生命周期管理: 现在,在 API 29 及更高版本上,ViewfinderSurfaceSession 在配置变更和生命周期事件中保持活动状态。此变更旨在减少丢帧并提供更流畅的用户体验。
  • 实现模式默认值Viewfinder 现在默认采用智能 ImplementationMode,该模式会自动选择最佳底层实现。它优先考虑高性能 SurfaceViewEXTERNAL 模式),并在旧版 API 级别或存在已知兼容性问题的设备上优雅地回退到更兼容的 TextureViewEMBEDDED 模式)。开发者仍然可以替换此行为以实现完全控制。

bug 修复

  • 可组合项 Viewfinder 现在可以在 Compose 的 Pager 中以及与 movableContentOf() 配合使用,确保在复杂的界面场景中正确重置和管理 Surface。(I0d9be, I79432)
  • 修复了 Android 10 和 11 上应用转换时,基于 SurfaceViewViewfinder 可能会拉伸的问题。(Icc77c)

版本 1.5.0-rc01

2025 年 8 月 13 日

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

bug 修复

版本 1.5.0-beta03

2025 年 7 月 16 日

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

bug 修复

  • Viewfinder(基于 Compose 和 View)的默认 ImplementationMode 现在可以在 EXTERNAL(用于性能)和 EMBEDDED(用于在旧版 API/异常设备上实现兼容性)之间智能选择。您仍然可以通过 ViewfinderSurfaceRequest 或 XML 属性(在基于 View 的 API 上)中的显式设置替换此行为。(Iecd3a)
  • 改进了 Surface 会话管理,允许在 API 29 及更高版本上使用 TextureView 或 SurfaceView 时,在 Surface 创建/销毁生命周期中保持 ViewfinderSurfaceSession 处于活动状态。(I112d9)
  • Viewfinder 现在可确保在适当的时间释放 Surface,仅当会话不再使用 Surface 时才释放,而不是在处置可组合项时始终释放。对于 EXTERNAL (SurfaceView),此行为目前仅在 API 29 及更高版本上可用。对于 EMBEDDED (TextureView),此行为存在于所有 API 级别。(I9a03f)
  • Viewfinder 现在可以正确处理 Surface 替换,例如当 API 级别 28 或更低级别上的 EXTERNAL 取景器移出屏幕时,或者当 Viewfinder(具有任何 ImplementationMode)是 moveableContentOf() 的一部分时。(I79432)
  • 可组合项 Viewfinder 现在可以与 Compose 的 Pager 正常配合使用。此变更可确保通过实现 AndroidViewonReset 回调成功重置可组合项,同时支持 EMBEDDEDEXTERNAL 实现。(I0d9be)
  • 修复了 Android 10/11 上由于过早应用转换操作(如缩放或平移)而导致 EXTERNAL Viewfinder 可能会拉伸或显示不正确的问题。系统现在会等待 Surface 创建完毕,然后在布局阶段应用这些转换,从而确保输出正确。(Icc77c)

版本 1.5.0-beta02

2025 年 6 月 4 日

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

版本 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

新功能

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

API 变更

  • TransformationInfo 现在具有所有实参的默认值。这样,您就可以在不使用任何 TransformationInfo 的情况下创建取景器,该取景器将默认采用 0 的源旋转、无源镜像和无裁剪矩形。(I2b1b2)
  • 可组合项取景器现在采用尾随 lambda 来接收 Surface 会话,类似于 AndroidExternalSurface。提供的 lambda 使用 ViewfinderInitScope 作为接收器,允许安装回调以接收新的 Surface 会话。当这些 Surface 会话超出范围时,它们会自动释放取景器所持有的资源。(Ib2b0d)
  • ViewfinderSurfaceRequest.Builder.populateFromCharacteristics 现已移除,并替换为一组等效的静态 API,这些 API 可用于生成 TransformationInfo,该 TransformationInfo 将生成与 populateFromCharacteristics 相同的转换。这些静态方法已添加到 Camera2TransformationInfo 类。(Idc6af)
  • ViewfinderSurfaceRequest 不再包含用于检索 Surface 的异步 API。它现在是不可变的数据类型。用于检索 Surface 的 API 现在已移至取景器。(I30127)
  • CameraViewfinder 已重命名为 ViewfinderView,以便命名与取景器可组合项的命名保持一致,并表明它不仅可以与相机来源配合使用。(Id9e6b)
  • 来自 viewfinder-view 的类已从 androidx.camera.viewfinder 软件包移至 androidx.camera.viewfinder.view 子软件包。(I6cb44)
  • 向基于 View 的取景器添加了新的 API,允许设置源旋转、镜像和裁剪矩形。此 TransformationInfo 类与基于 Compose 的取景器使用的类相同。(I907c3)
  • 基于 View 的取景器现在使用新的 ViewfinderSurfaceRequest API,这些 API 不再在内部处理 Surface 响应。requestSurfaceSession() API 现在返回 ListenableFuture<ViewfinderSurfaceSession>,而不是返回 ListenableFuture<Surface>,后者返回一个 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 注解,这些注解属于 type-use 类型。Kotlin 开发者应使用以下编译器实参来强制执行正确用法:-Xjspecify-annotations=strict(这是 Kotlin 编译器从 2.1.0 版开始的默认实参)。(I7bcd7, b/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

您无需进行任何代码更改即可完成此转换。旧的取景器 Maven 坐标将不再接收更新。

此外,如果您将 Compose 与 CameraX 结合使用,则现在有一个新的以 Compose 为先的库(Alpha 版):androidx.camera:camera-compose。这提供了 CameraXViewfinder 可组合项,这是一个符合 Compose 惯例的取景器,可将 CameraX 的 SurfaceRequest 适配到 Compose,类似于 PreviewView 对视图的作用。