相机取景器

  
用于相机的独立 Composable 和基于 View 的取景器

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

工件 稳定版 发布候选版本 Beta 版 Alpha 版
viewfinder-compose - - 1.5.0-beta02 1.4.0-alpha13
viewfinder-core - - 1.5.0-beta02 1.4.0-alpha13
viewfinder-view - - 1.5.0-beta02 1.4.0-alpha13
此库上次更新时间:2025 年 6 月 4 日

声明依赖项

要添加对 camera-viewfinder 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。请阅读Google 的 Maven 代码库以获取更多信息。

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

Groovy

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

}

Kotlin

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


}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的建议,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以点击星形按钮为您已有的问题投票。

创建新问题

如需了解更多信息,请参阅问题跟踪器文档

版本 1.5

版本 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 包含这些提交

  • 这是基于视图和基于 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,从而产生与 populateFromCharacteristics 相同的转换。这些静态方法已添加到 Camera2TransformationInfo 类中。(Idc6af
  • ViewfinderSurfaceRequest 不再包含用于检索 Surface 的异步 API。它现在是一个不可变数据类型。用于检索 Surface 的 API 现已移至取景器。(I30127
  • CameraViewfinder 已重命名为 ViewfinderView,以便命名与 Viewfinder 可组合项的命名保持一致,并表明它可以与不仅仅是相机源一起使用。(Id9e6b
  • 来自 viewfinder-view 的类已从 androidx.camera.viewfinder 包移动到 androidx.camera.viewfinder.view 子包。(I6cb44
  • 新的 API 已添加到基于视图的取景器中,允许设置源旋转、镜像和裁剪矩形。此 TransformationInfo 类与基于 Compose 的取景器使用的类相同。(I907c3
  • 基于视图的取景器现在使用新的 ViewfinderSurfaceRequest API,这些 API 不再在内部处理 Surface 响应。API requestSurfaceSession() 不再返回 ListenableFuture<Surface>,而是返回 ListenableFuture<ViewfinderSurfaceSession>,后者返回一个 AutoCloseable 类,当其关闭时,其行为与调用旧版 API ViewfinderSurfaceRequest.markSurfaceSafeToRelease() 相同。这在 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 空值注解,它们是类型用途。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 Viewfinder 工件已移至其自己的库组。此更改对于提高 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 结合使用,现在有一个新的 Compose 优先库已进入 Alpha 版:androidx.camera:camera-compose。它提供了 CameraXViewfinder 可组合项,这是一个符合 Compose 习惯的 Viewfinder,可将 CameraX 的 SurfaceRequest 适应到 Compose,类似于 PreviewView 对视图的作用。