CameraX

CameraX 是 Jetpack 的一个补充,它让为应用添加相机功能变得更容易。该库提供了许多兼容性修复和变通方法,以帮助在许多设备上保持一致的开发者体验。

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

工件 稳定版 发布候选版本 Beta 版 Alpha 版
camera-camera2 1.4.2 - 1.5.0-beta01 -
camera-core 1.4.2 - 1.5.0-beta01 -
camera-compose - - 1.5.0-beta01 -
camera-effects 1.4.2 - 1.5.0-beta01 -
camera-extensions 1.4.2 - 1.5.0-beta01 -
camera-feature-combination-query - - - 1.5.0-alpha06
camera-feature-combination-query-play-services - - - 1.5.0-alpha06
camera-lifecycle 1.4.2 - 1.5.0-beta01 -
camera-mlkit-vision 1.4.2 - 1.5.0-beta01 -
camera-view 1.4.2 - 1.5.0-beta01 -
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.4.2 - 1.5.0-beta01 -
此库最后更新于:2025 年 5 月 7 日

设备测试

CameraX 已在我们的实验室中的许多设备上进行测试。要查看实验室中当前设备的列表,请参阅CameraX 实验室测试设备

声明依赖项

要添加对 CameraX 的依赖项,您必须将 Google Maven 仓库添加到您的项目中。阅读Google 的 Maven 仓库以获取更多信息。

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

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.5.0-beta01"
  // The following line is optional, as the core library is included indirectly by camera-camera2
  implementation "androidx.camera:camera-core:${camerax_version}"
  implementation "androidx.camera:camera-camera2:${camerax_version}"
  // If you want to additionally use the CameraX Lifecycle library
  implementation "androidx.camera:camera-lifecycle:${camerax_version}"
  // If you want to additionally use the CameraX VideoCapture library
  implementation "androidx.camera:camera-video:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:${camerax_version}"
  // If you want to additionally add CameraX ML Kit Vision Integration
  implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:${camerax_version}"
}

Kotlin

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.5.0-beta01"
    // The following line is optional, as the core library is included indirectly by camera-camera2
    implementation("androidx.camera:camera-core:${camerax_version}")
    implementation("androidx.camera:camera-camera2:${camerax_version}")
    // If you want to additionally use the CameraX Lifecycle library
    implementation("androidx.camera:camera-lifecycle:${camerax_version}")
    // If you want to additionally use the CameraX VideoCapture library
    implementation("androidx.camera:camera-video:${camerax_version}")
    // If you want to additionally use the CameraX View class
    implementation("androidx.camera:camera-view:${camerax_version}")
    // If you want to additionally add CameraX ML Kit Vision Integration
    implementation("androidx.camera:camera-mlkit-vision:${camerax_version}")
    // If you want to additionally use the CameraX Extensions library
    implementation("androidx.camera:camera-extensions:${camerax_version}")
}

反馈

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

创建新问题

有关详细信息,请参阅问题跟踪器文档

Camera Viewfinder Compose 1.0 版

1.0.0-alpha02 版

2024 年 6 月 12 日

androidx.camera:camera-viewfinder-compose:1.0.0-alpha02 已发布。1.0.0-alpha02 版包含这些提交

1.0.0-alpha01 版

2024 年 5 月 14 日

androidx.camera:camera-viewfinder-compose:1.0.0-alpha01 已发布。1.0.0-alpha01 版包含这些提交

新功能

  • 新库。此库引入了一个 Compose 原生 Viewfinder 可组合项,可与 CameraX 和 Camera2 配合使用。可组合的 Viewfinder 支持不同的宽高比和触摸事件处理。

Camera Viewfinder 1.4 版

1.4.0-alpha07 版

2024 年 6 月 12 日

androidx.camera:camera-viewfinder:1.4.0-alpha07androidx.camera:camera-viewfinder-core:1.4.0-alpha07 已发布。1.4.0-alpha07 版包含这些提交

1.4.0-alpha06 版

2024 年 5 月 14 日

androidx.camera:camera-viewfinder:1.4.0-alpha06androidx.camera:camera-viewfinder-core:1.4.0-alpha06 已发布。1.4.0-alpha06 版包含这些提交

API 变更

  • ViewfinderImplementationMode 枚举重命名为更好地反映底层实现,并为 TransformationInfo.sourceRotation 添加固定常量。(Ic6149
  • 添加了 ZoomGestureDetector.ZoomEvent,用于封装缩放手势的状态。(I84cdf

Camera 1.5 版

1.5.0-beta01 版

2025 年 5 月 7 日

androidx.camera:camera-*:1.5.0-beta01 已发布。1.5.0-beta01 版包含这些提交

API 变更

  • 使用 Kotlin 2.0 发布的项目需要 KGP 2.0.0 或更高版本才能使用(Idb6b5
  • ContentScale 和 Alignment 现在可在取景器中使用,以缩放和放置其容器中显示的表面,类似于 androidx.compose.foundation.Image 的行为。(Ibcea3
  • TransformationInfo 现在为所有参数都有默认值。这将允许在没有任何 TransformationInfo 的情况下创建取景器,默认情况下,源旋转为 0,没有源镜像,也没有裁剪矩形。(I2b1b2
  • 添加了 LifecycleCameraProvider,这是一个相机提供程序,可以通过配置自定义上下文来实例化,以实现访问虚拟设备的相机等功能。(Ia2992

Bug 修复

  • 修复了在三星 SM-E556B 设备上使用 ImageAnalysis 和另一个使用 TEMPLATE_RECORD 的流时预览冻结的问题。(Ic0e62, b/409478042
  • 修复了在三星 SM-M556B 设备上使用 ImageAnalysis 和另一个使用 TEMPLATE_RECORD 的流时预览冻结的问题。(Ic1a6a, b/395822788
  • 修复了 Android 15 Pixel 设备上在执行缩放相关操作时 Extensions 夜间模式 AssertError 问题。(I27a5d, b/401460276
  • 修复了使用 CameraController 时 ML Kit Analyzer 边界框坐标不正确的问题。(Iae91b, b/409808510

1.5.0-alpha06 版

2025 年 2 月 26 日

androidx.camera:camera-*:1.5.0-alpha06 已发布。1.5.0-alpha06 版包含这些提交

API 变更

  • 添加了 CameraInfo.getTorchStrengthLevelCameraInfo.getMaxTorchStrengthLevelCameraControl.setTorchStrengthLevel,允许自定义闪光灯亮度(I00878
  • 添加了一个新的 API CameraController#setTapToFocusAutoCancelDuration,以便用户可以控制 PreviewView 点击对焦事件的自动取消行为。默认情况下,CameraX 会在 5 秒后取消对焦事件(即相机对焦重置),此 API 允许修改持续时间或完全禁用自动取消。(Icf59a
  • FLASH_STATE_READY 已重命名为 NOT_FIRED,其他 FlashState 常量名称已简化,以提高可读性。(I8771d
  • 曝光了低光增强 API。运行 Android 15 或更高版本的设备可以提供对低光增强的支持。此功能可以在低光条件下自动调整预览、视频或图像分析流的亮度。应用可以使用新 API:1. 使用 CameraInfo#isLowLightBoostSupported 检查功能可用性。2. 当设备支持时,使用 CameraControl#enableLowLightBoostAsync 启用该模式。3. 使用 CameraInfo#getLowLightBoostState 监控低光增强状态。(I937ed
  • 添加了兼容类,以便在 camera-feature-combination-query 中进行更快的非 camera2 查询。(Ie97ee
  • 对于 CameraController 的点击对焦事件,新的 API getTapToFocusInfoState() 现在通过返回 TapToFocusInfo 类的 LiveData 来公开相应的点击位置,而之前的返回 LiveData<Integer>getTapToFocusState() API 已被弃用,转而使用新 API。(I238d2

Bug 修复

  • 修复了在启用 Extensions 后预览防抖未生效的问题。(I24ad7
  • 修复了当 CameraX 自动取消对焦事件(默认 5 秒后发生)时,CameraController 对焦状态事件不会重置为 TAP_TO_FOCUS_NOT_STARTED 的问题。(I31954
  • 修复了由于未释放的图像资源,在使用零快门延迟 (ZSL) 多次捕获后预览冻结的问题。(Ic3c2a
  • 修复了在某些设备上,当管道涉及 OpenGL 时,UHD 视频出现红色色调的问题。(Idcedc

1.5.0-alpha05 版

2025 年 1 月 15 日

androidx.camera:camera-*:1.5.0-alpha05 已发布。1.5.0-alpha05 版包含这些提交

API 变更

  • 添加 VideoCapture.getSelectedQuality() 以根据 QualitySelector 获取选定的质量。(I70508, b/204288986
  • 当使用 ImageCapture.OnImageCapturedCallback API 调用图像捕获时,返回的 ImageProxy 中的 ImageInfo 现在可以通过新的 ImageInfo.getFlashState() API 来判断闪光灯是否已闪光。(Id2c61, b/380527406
  • 添加了 OUTPUT_IMAGE_FORMAT_NV21 输出格式支持,适用于 ImageAnalysis。(I484ab
  • 移除 featurecombinationquery 工件的实验性注解(I4427f
  • 在启用扩展模式时,调整 CameraControl 允许的缩放比例范围,通过扩展特定特性进行调整。(I85af1

Bug 修复

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

1.5.0-alpha04 版

2024 年 12 月 11 日

androidx.camera:camera-*:1.5.0-alpha04 已发布。1.5.0-alpha04 版包含这些提交

API 变更

  • ImageCapture.Builder#setOutputFormatImageCaptureCapabilities#getSupportedOutputFormats 作为稳定 API 公开。(Ieb04a
  • 添加 VideoCapture.getResolutionInfo(),以在 VideoCapture 绑定到生命周期时获取分辨率信息。(Icb478
  • PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor 作为稳定 API 公开。(I74fee

Bug 修复

  • 修复了 Vivo 1610 设备在黑暗中闪光灯拍照时捕获失败的问题。(I366f4
  • 修复了 Redmi Note 6 Pro 在图像捕获后手电筒意外关闭的问题。(I2e0e8, b/377144569
  • 修复了 Pixel Android 15 设备上 Extensions 夜间模式无法捕获静止图像的问题,直到相机对焦到附近物体。(I228d4
  • 修复了当启用扩展且 VideoCapture 同时绑定时,静止图像捕获功能异常的问题。(I5c745
  • 如果设备支持,则为 Extensions 启用 UltraHDR 静止图像捕获支持。(I48300
  • 修复了 TCL 设备上使用 CameraEffect 针对图像捕获的闪光灯捕获时间问题。(I7698c

1.5.0-alpha03 版

2024 年 10 月 30 日

androidx.camera:camera-*:1.5.0-alpha03 已发布。1.5.0-alpha03 版包含这些提交

API 变更

  • 添加了适用于 RAW 和 RAW + JPEG ImageCapture 的输出格式 API,设备功能检查通过 ImageCaptureCapabilities#getSupportedOutputFormats 公开。OUTPUT_FORMAT_RAW 用于捕获 RAW 图像,即 Adobe DNG 格式,OUTPUT_FORMAT_RAW_JPEG 用于同时捕获 RAW 和 JPEG 图像。新的 ImageCapture#takePicture API 用于同时捕获图像,它需要提供两个 OutputFileOptions,第一个用于 RAW 图像,第二个用于 JPEG 图像。(Ib0f3d

Bug 修复

  • 修复了 TCL 设备在启用 VideoCapture 后预览和视频曝光不足的问题。(Id7a64
  • 修复了在启用效果或绑定 4 个用例(流共享)时,使用 PreviewView.getMeteringPointFactory 调用 startFocusMetering 无法获取正确传感器坐标的问题。(I916c5, b/345993685
  • 修复了录制视频时存储空间不足不会触发 VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE 事件的问题。(I35779, b/356399842

1.5.0-alpha02 版

2024 年 10 月 2 日

androidx.camera:camera-*:1.5.0-alpha02 已发布。1.5.0-alpha02 版包含这些提交

新功能

  • 用于查询设备支持的相机功能的新 API。例如,检查是否可以同时启用 HDR 和 60FPS。它包括 2 个工件:camera-feature-combination-query 和 camera-feature-combination-query-play-services。这是 camera2 的 CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported API 的兼容版本,并提供了 Google Play 服务提供的额外数据。

Bug 修复

  • 修复了 LEGACY 级别设备上 Preview/VideoCapture 目标帧率问题。通过 setTargetFrameRateCamera2Interop API 设置的目标帧率总是被 AeFpsRangeLegacyQuirk 提供的值覆盖。通过此修复,CameraX 库将尊重通过 setTargetFrameRateCamera2Interop API 设置的值。(Ie2d32
  • 添加了用于图像捕获的闪光/手电筒/3A 功能,带有 CameraEffect。带有 CameraEffect 的图像捕获现在应该具有与不带任何 CameraEffect 的图像捕获相同的预捕获和后捕获处理(例如,闪光触发、3A 收敛等,如适用)。(I5ff30
  • 排除了三星 SM-A057G 设备上 ImageAnalysis 的问题输出尺寸。当 ImageAnalysis 使用大于或等于 1920x1440 的分辨率时,会导致预览黑屏问题。已将 ExcludedSupportedSizesQuirk 应用到 SM-A057G 设备以避免此问题。(I63dfe, b/365877975
  • 修复了当内部启用流共享机制以将流共享到 PreviewVideoCapture 时,Preview/VideoCapture 目标帧率问题。(I4fdac
  • 启用了变通方法来修复三星 S10e 和 S10+ 设备上 JPEG 图像元数据不正确的问题。通过此修复,如果发生 JPEG 图像元数据不正确的问题,CameraX 可以成功保存 JPEG 图像,或者在这些设备上调用 ImageProxy.toBitmap() 函数时可以返回正确的 Bitmap 对象。(Iae493, b/356428987
  • 禁用了三星 A52s 后置摄像头(id 为 0)的扩展功能,因为在捕获 HDR 图像时可能会发生原生崩溃,并且 BOKEH 或 FACE_RETOUCH 模式的捕获会话配置可能会失败。(I03ec9, b/364152642
  • 修复了录制视频时存储空间不足,导致 VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE 事件未被触发的问题。(Ia5b4f, b/356399842
  • 修复了 Oppo A5 (CPH1931) 上第二次录像尝试失败的问题。(I181d6

1.5.0-alpha01 版

2024 年 9 月 4 日

androidx.camera:camera-*:1.5.0-alpha01 已发布。1.5.0-alpha01 版包含这些提交

新功能

  • 发布了一个新工件 camera-compose,用于 CameraX Viewfinder Compose Adapter,它显示来自 CameraX camera-coreSurfaceRequest 的预览流。(I8666e
  • 添加了一个新的可组合项 CameraXViewfinder,它是一个惯用的可组合项,用于将 CameraX SurfaceRequest 适配到可组合的 Viewfinder。(I4770f

API 变更

  • 提供 API 以设置双并发相机视频捕获的合成设置。设置包括混合的 alpha 值,x、y 坐标的偏移,相机帧显示窗口的宽度和高度的比例。偏移、宽度和高度以标准化设备坐标指定。(Ia2b8a
  • CameraProvider.getCameraInfo 暴露为正式 API。(I901cd
  • 添加了 API PendingRecording.withAudioEnabled(boolean initialMuted) 以控制初始静音状态。(I635c3, b/354829267

Bug 修复

  • 修复了当使用已销毁的 LifecycleOwner 调用 bindToLifecycle 时发生的崩溃。(I6e6d8
  • 修复了 Motorola Edge 20 Fusion 上前置摄像头与 VideoCapture 绑定时预览黑屏的问题。(I1fe88
  • 优化了 PreviewView 中检测缩放手势的配置,以提高流畅度。(I04ffc

Camera 1.4 版

1.4.2 版

2025 年 3 月 26 日

androidx.camera:camera-*:1.4.2 已发布。1.4.2 版包含这些提交

Bug 修复

  • 修复了在三星 Galaxy M55 上使用 ImageAnalysis 和另一个使用 TEMPLATE_RECORD 的流时预览冻结的问题。(Ic1a6a, b/395822788

1.4.1 版

2024 年 12 月 11 日

androidx.camera:camera-*:1.4.1 已发布。1.4.1 版包含这些提交

Bug 修复

  • 修复了 Pixel Android 15 设备上 Extensions 夜间模式无法捕获静止图像的问题,直到相机对焦到附近物体。(I228d4
  • 修复了当启用扩展且 VideoCapture 同时绑定时 ImageCapture#takePicture 功能异常的问题。(I5c745

1.4.0 版

2024 年 10 月 30 日

androidx.camera:camera-*:1.4.0 已发布。1.4.0 版包含这些提交

自 1.3.0 以来的重要变更

CameraX 1.4.0 带来了令人兴奋的更新!以下是摘要:

主要功能:10 位 HDR

  • 轻松捕捉惊艳的 HDR 照片和视频。
  • 支持 HLG 和 10 位 HEVC 编码。
  • 享受 10 位 HDR 预览并查询设备功能。
  • 可在越来越多的设备上与 UltraHDR 图像和 HDR 视频配合使用。

其他炫酷功能

  • Kotlin 扩展:添加了 takePictureawaitInstance 挂起函数。
  • 实时特效:应用水印和对象高亮等特效。
  • CameraController API:用于视频捕获配置的新控件。
  • 预览防抖:查询设备功能并启用防抖。
  • VideoCapture 增强功能:更精细地控制质量并访问更高分辨率。
  • CameraX 扩展集成:与 VideoCapture 和新的 ImageCapture 功能无缝集成。
  • 快门声音 API:轻松检查区域快门声音要求。
  • 屏幕闪光:改进了前置摄像头的低光照片。
  • 相机扩展元数据 API:支持 API,用于调整扩展强度并获取 ExtensionMode#AUTO 中当前扩展模式的通知。您可以在我们的 BetaRC 公告中找到更多 bug 修复。

1.4.0-rc04 版

2024 年 10 月 16 日

androidx.camera:camera-*:1.4.0-rc04 已发布。1.4.0-rc04 版包含这些提交

Bug 修复

  • 修复了在启用效果或绑定 4 个用例(流共享)时,使用 PreviewView.getMeteringPointFactory 调用 startFocusMetering 无法获取正确传感器坐标的问题。(I916c5, b/345993685

1.4.0-rc03 版

2024 年 10 月 2 日

androidx.camera:camera-*:1.4.0-rc03 已发布。1.4.0-rc03 版包含这些提交

Bug 修复

  • 添加了用于图像捕获的闪光/手电筒/3A 功能,带有 CameraEffect。带有 CameraEffect 的图像捕获现在应该具有与不带任何 CameraEffect 的图像捕获相同的预捕获和后捕获处理(例如,闪光触发、3A 收敛等,如适用)。(I5ff30
  • 优化了 PreviewView 中的捏合缩放流畅度(I04ffc
  • 将 Ultra HDR 从 10 位输出功能中解耦,因为 Ultra HDR 支持不再需要设备具有 10 位输出功能。(I96ff2, I0c3b3

1.4.0-rc02 版

2024 年 9 月 18 日

androidx.camera:camera-*:1.4.0-rc02 已发布。1.4.0-rc02 版包含这些提交

Bug 修复

  • 修复了当使用已销毁的 LifecycleOwner 调用 bindToLifecycle 时发生的崩溃。(I6e6d8
  • ScreenFlashView 中添加了可见性动画,用于 ScreenFlash#apply,这也修复了由于亮度变化在一段时间后异步完成而导致的 bug。(I37cdb
  • 通过覆盖受支持设备上的框架中的缩放设置来改进缩放流畅度。

1.4.0-rc01 版

2024 年 8 月 7 日

androidx.camera:camera-*:1.4.0-rc01 已发布。1.4.0-rc01 版包含这些提交

新功能

  • 添加了实验性 CameraInfo.getCameraInfo,用于提供特定的相机信息,而无需将用例绑定到相机。(I550d1

API 变更

  • 为未明确添加 ScreenFlashView 的情况添加了 PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor API。(I43945

Bug 修复

  • 修复了在低光条件下启用闪光灯且绑定 VideoCapture 用例时,图像捕获的曝光和色调问题。(Ic9814
  • 修复了在启用 Extensions 时中断 takePicture 请求可能导致无法获取结果以及后续 takePicture 请求可能不再起作用的问题。(Iae78f
  • 修复了启用 Extensions 时发生的内存泄漏问题。(Iab276
  • 解决了 Pixel 7/8 和三星 Galaxy S24 系列等设备上 CameraX 扩展功能异常的问题。该问题源于发布模式下 Camera2OutputConfigImpl 转换问题,在将 AGP 升级到 8.5.1 并启用代码混淆后浮现。(I99598, b/354824993

1.4.0-beta02 版

2024 年 6 月 12 日

androidx.camera:camera-*:1.4.0-beta02 已发布。1.4.0-beta02 版包含这些提交

API 变更

  • VideoCapture 类似,为预览用例添加 setMirrorMode。它将通过 API 33 及更高版本的 OutputConfiguration.setMirrorMode 支持预览流的镜像模式开启和关闭,对于旧版 API,它将不起作用。(I821f4

Bug 修复

  • 修复了三星 Tab A8 上,当 ImageCapturePreview + VideoCapture + ImageCapture UseCase 组合下选择 1920x1080 时,应用无法成功拍照的问题。(I5a463, b/336925549
  • 修复了切换摄像头后持续录制可能无法继续录制的问题。(Icb0a1

1.4.0-beta01 版

2024 年 5 月 14 日

androidx.camera:camera-*:1.4.0-beta01 已发布。1.4.0-beta01 版包含这些提交

API 变更

  • 添加了 ZoomGestureDetector.ZoomEvent,用于封装缩放手势的状态。(I84cdf

Bug 修复

  • 修复了一个 bug,即静态捕获和点击对焦不使用重复请求 FPS/防抖模式值,这可能导致捕获会话重建并在某些设备上导致延迟问题或预览冻结。(I7dc0b
  • 修复了在某些设备上(例如三星 A32 5G 上的 4000x3000)启用 CameraEffect 时无法选择高分辨率的 bug。(Ie3ed3, b/337336152
  • 修复了 Pixel 4XL API29 上绑定了 Preview、ImageCaptureVideoCapture(UHD) 时拍照崩溃的问题。(I5b288
  • 支持虚拟设备:传递到 ProcessCameraProvider 的 Context 将保留设备 ID,以确保在虚拟设备环境中的功能。(I5ba48

1.4.0-alpha05 版

2024 年 4 月 17 日

androidx.camera:camera-*:1.4.0-alpha05 已发布。1.4.0-alpha05 版包含这些提交

新功能

  • ProcessCameraProvider 转换为 Kotlin 实现。(I46d4f
  • 添加了 ImageCapture.takePicture 挂起函数,以允许以 Kotlin 惯用的方式调用。(I920be

API 变更

  • ImageCapture 添加输出格式 API,并向 ImageCaptureCapabilities 添加 getSupportedOutputFormats 方法以查询设备功能。默认输出格式值为 OUTPUT_FORMAT_JPEG,它以 JPEG 格式捕获 SDR 图像。当设备支持 Ultra HDR 且输出格式设置为 OUTPUT_FORMAT_JPEG_ULTRA_HDR 时,CameraX 将使用 JPEG/R 图像格式捕获 Ultra HDR 压缩图像。该格式向后兼容 SDR JPEG 格式,并支持内容的 HDR 渲染。这意味着在旧版应用或设备上,图像会无缝显示为常规 JPEG;在已更新以完全支持该格式的应用和设备上,图像会显示为 HDR。(I5de50
  • CameraInfo 中添加 PhysicalCameraInfo 以查询物理相机信息,并在 CameraSelector 中添加物理相机 ID 设置器/获取器(Ic5b90
  • CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED 替换为 ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED。常数的值保持不变。这是为了将所有常数合并到一个地方。(I890bb
  • 新的 RetryPolicy API 使开发者能够自定义 CameraX 初始化的重试行为。(I36dd2
  • 启用 ImageCaptureLatencyEstimate 对象的创建以协助可测试性(Iaba99
  • 添加 ImageAnalysis#COORDINATE_SYSTEM_SENSOR。使用此选项时,MlKitAnalyzer 将在相机传感器坐标系中返回坐标。(I3ec61
  • 曝光了扩展元数据 API。新的 CameraExtensionsInfoCameraExtensionsControl 接口允许应用程序监控和调整扩展强度设置。应用程序可以通过新添加的 ExtensionsManager#getCameraExtensionsInfo()ExtensionsManager#getCameraExtensionsControl() 方法获取 CameraExtensionsInfoCameraExtensionsControl 实例。(I28e1a
  • 添加了 ProcessCameraProvider.awaitInstance,它是 ProcessCameraProvider.getInstance 的挂起版本。(Ib22b9
  • 添加了 PreviewView#getSensorToViewTransform() API。该矩阵表示从相机传感器坐标到 PreviewView 坐标的变换。这可用于将坐标从一个 UseCase 变换到另一个 UseCase。例如,将 ImageAnalysis 中检测到的对象的坐标变换到 PreviewView 叠加层。(I947ab
  • 使 camera-viewfinder-core API 更通用,以便 camera-viewfindercamera-viewfinder-compose 可以使用它。(I1e295
  • ViewfinderSurfaceRequest 添加 getSurface 函数。(I781a0
  • camera-viewfinder 中使用 camera-viewfinder-core 并弃用 ViewfinderSurfaceRequestCameraViewfinder。(I6198c
  • 添加了 ZoomGestureDetector,它可以解释专门为捏合缩放活动配置的缩放手势。(Ifafbf

Bug 修复

  • 修复了 ImageAnalysis 的分辨率选择问题,该问题与分析器默认目标分辨率设置有关:即使应用程序已设置不同的分析器默认分辨率设置,目标分辨率仍错误地保持为 640x480。如果应用程序遇到此问题(1.3.0 ~ 1.3.2)并且无法升级到使用包含解决方案的新版本,则直接为 ImageAnalysis UseCase 设置一个带有首选分辨率和匹配 AspectRatioStrategyResolutionSelector 可以解决此问题。(I81f72, b/330091012
  • 修复了排队的 takePicture 请求如果当前请求失败可能会无法运行的问题。(Ie0801
  • 使对 Vivo X60 和 X60 Pro 设备应用无效 JPEG 数据检查。这可以解决这些设备上异常大的图像问题。(I82247, b/288828159
  • 修复了三星 A24 设备上 JPEG 图像元数据不正确的问题。通过此修复,CameraX 可以成功保存 JPEG 图像,或者在三星 A24 设备上调用 ImageProxy.toBitmap() 函数时可以返回正确的 Bitmap 对象。(I8d6eb, b/309005680
  • 如果捕获的图像大于 10 MB,则将无效 JPEG 数据检查应用于所有三星设备。这可以修复三星设备上异常大的图像问题。(Ic2a65, b/288828159
  • 移除了 CameraX Extensions 中的 ImageAnalysis 支持,因为许多 OEM 的 Extensions 实现与 ImageAnalysis 配合不佳,可能导致不一致的问题。(I2d926

1.4.0-alpha04 版

2024 年 1 月 24 日

androidx.camera:camera-*:1.4.0-alpha04 已发布。1.4.0-alpha04 版包含这些提交。

新功能

  • 新工件:camera-effects:一个用于将实时效果应用于 CameraX 输出的库,包括 PreviewVideoCapture 和/或 ImageCapture。此工件包含 CameraEffect API 的 OpenGL 实现,可高效操作相机输出。
  • OverlayEffect:用于使用 Android 的 Canvas API 绘制叠加层。这允许应用在相机输出上应用水印或高亮显示检测到的对象。
  • 预览用例的 DynamicRange API:现在可以在预览用例上设置动态范围,独立于视频用例。这允许 HDR 动态范围(如 HLG10)单独用于预览。CameraInfo 中还提供了新的 API,用于查询每个相机支持的动态范围。

API 变更

  • ScreenFlashUiCompleter 重命名为 ScreenFlashListener,并将 ScreenFlashUiCompleter#getExpirationTimeMillis 移动到 ScreenFlash#applyexpirationTimeMillis 参数。(I13944
  • 添加了新的 API,允许在预览用例上设置动态范围,并查询每个相机支持的动态范围。这使得 HDR 动态范围(例如 HLG10)可以单独用于预览用例,不再需要同时绑定 VideoCapture。(If25e3
  • getMirroring() 重命名为 isMirroring()I47063
  • 在 CameraX 中添加了实时静态捕获延迟估算支持。相机扩展允许应用程序使用 API,该 API 提供捕获将花费多长时间的估算。该估算考虑了当前环境条件、相机状态,并包括处理多帧捕获请求所花费的时间以及必要时编码已处理缓冲区所需的任何额外时间。(I05c3a
  • ScreenFlashUiControl 重命名为 ScreenFlash,将 ScreenFlashUiControl#applyScreenFlashUi 重命名为 ScreenFlash#apply,将 ScreenFlashUiControl#clearScreenFlashUi 重命名为 ScreenFlash#clear,并添加了 getScreenFlashUiApplyTimeoutSeconds 方法,而不是直接暴露 SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS。(Iccdd0

Bug 修复

  • 修复了在启用 Extensions 时导致的内存泄漏,这会导致活动或片段未被释放(I14215
  • 修复了在应用不断增加的缩放比例时,getZoomRatio 错误地返回减小值的问题。(I4aa0d, b/317543616
  • ImageCapture#ScreenFlash#clear 事件在 ImageCapture 解绑或相机关闭时立即调用,也修复了某些场景下由于捕获未正确完成而从未调用此事件的 bug。(If99f9
  • 修复了在 takePicture 请求完成之前生命周期停止时发生的崩溃。(Idf017, b/306202751
  • 修复了在某些设备上启用 Extensions 后相机预览变黑屏的问题。(I1ffd0
  • 修复了使用 Snapdragon 778G SoC 的设备上视频录制时长不正确的问题。(If6aa7, b/316057919

1.4.0-alpha03 版

2023 年 12 月 13 日

androidx.camera:camera-*:1.4.0-alpha03 已发布。1.4.0-alpha03 版包含这些提交。

新功能

  • 添加了 CameraInfo.mustPlayShutterSound,以提供是否必须根据地区限制播放快门声音的信息。(Ifda84
  • 添加了 OnImageCapturedCallback.onCaptureStartedOnImageSavedCallback.onCaptureStarted,用于通知相机何时开始曝光帧。建议在此刻播放快门声音或快门动画。(Ic49b3
  • 在 CameraX 中添加了对前置摄像头图像捕获的屏幕闪光功能支持。CameraX 将处理框架侧的 API 处理,并根据需要与应用程序的 UI 更改同步时间(例如,在应用程序屏幕颜色/亮度更改后进行 AE 预捕获触发)。应用程序只需在提供给 CameraX 的 ScreenFlashUiControl 接口中添加其 UI 侧实现。(I8ae84
  • 在 CameraX 中添加了屏幕闪光功能 UI 侧实现支持。应用程序将能够从 PreviewView 或新添加的 ScreenFlashView 获取基本的 ImageCapture.ScreenFlashUiControl 实现,该实现将在屏幕闪光照片捕获期间添加单色覆盖视图并最大化屏幕亮度。(I1810e

API 变更

  • 支持新的扩展功能(后视图和捕获过程进度):添加了 ImageCapture#getImageCaptureCapabilities() API,供应用程序查询后视图和捕获过程进度回调的功能。应用程序可以使用 ImageCapture.Builder#setPostviewEnabled() 启用后视图。后视图大小可以使用 ImageCapture.Builder#setPostviewResolutionSelector() 进行选择。调用 takePicture() 时,可以在 OnImageSavedCallbackOnImageCapturedCallback 中实现 onPostviewBitmapAvailableonCaptureProcessProgressed,以便在支持的情况下获取后视图和处理进度通知。(I5cd88
  • 用于计算从传感器到当前缓冲区的坐标变换的 API,带有指示 Surface 是否包含相机方向信息的标志。(I59096
  • 在 Preview UseCase 中公开查询 PreviewCapabitlity 的 API。(Ie5b6c
  • 添加了 API 以支持 VideoCapture 的更多质量。可以使用 Recorder.Builder#setVideoCapabilitiesSource(int)VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES 来创建 Recorder 实例,该实例支持比 VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE 更多的质量。一个常见的用例是当应用程序在可行的情况下努力录制 UHD 视频时,但设备的 CamcorderProfile 不包含 UHD 设置,即使编解码器能够录制 UHD 视频。(Iedbe2, b/263961771
  • 添加 ImageAnalysis 输出格式的 getter/setter 到 CameraController。(I9a96c, b/308240643

Bug 修复

  • 来自Camera 1.3.1:改进了 ProcessCameraProvider#bindToLifecycle() 的性能。主要变化是优化了识别最适合 UseCases 的尺寸组合的过程。最佳结果因特定的 UseCase 组合和目标设备支持的输出尺寸数量而异。(I454f2
  • 允许在启用 Extensions 时使用 VideoCapture。(I91f32
  • 修复了三星 A71 和 M51 系列设备上捕获的 JPEG 图像过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这导致捕获的图像文件大小异常大。这些冗余的 0 填充数据将被删除,以使捕获的图像具有正常的图像文件大小。(I01afc, b/288828159
  • 禁用了 Pixels 上的 ImageAnalysis 支持,以避免 Pixel 上意外返回非空 ImageAnalysis 支持大小的 bug。(I7ec31
  • 修复了启用 Extensions 后 CPU 负载和功耗增加的性能问题。(Ibdccb
  • 将 Snapdragon 480 添加到 CameraUseInconsistentTimebaseQuirk。这修复了 Android 12 上使用此芯片组的设备的一个问题,即录音中的音频会因设备处于挂起状态的时间量而偏移。(I58010

1.4.0-alpha02 版

2023 年 10 月 18 日

androidx.camera:camera-*:1.4.0-alpha02 已发布。1.4.0-alpha02 版包含这些提交。

API 变更

  • 将 API 重命名为 setCameraOpenRetryMaxTimeoutInMillisWhileResuming 并重命名参数。(I72370
  • 添加 API 以查询设备功能并启用视频/预览防抖。(I87544
  • 提供 API 以自定义相机打开重试的最大超时时间。(I0c642
  • 发布 ProcessCameraProvider.shutdownAsync 作为公共测试 API,以允许在测试套件中使用进程相机提供程序,这些测试套件可能需要在测试之间以不同方式初始化 CameraX。(I9eca7
  • 添加 API 用于配置视频捕获动态范围、帧率和镜像模式。(Ifb8f7
  • 弃用 OutputSize 并将其替换为 ResolutionSelectorResolutionSelector 是一种更全面的选择分辨率的方式,它与 camera-core API 保持一致。(I93abd, b/286801438

Bug 修复

  • 修复了三星 Galaxy S23 Ultra 5G 后置摄像头启用 Extensions Bokeh 或 Face-Retouch 与 ImageAnalysis 时预览黑屏的问题。(I2e8b1
  • 修复了 Moto E5 Play 上的 Preview 和 VideoCapture 拉伸问题。(73dce2

1.4.0-alpha01 版

2023 年 9 月 20 日

androidx.camera:camera-*:1.4.0-alpha01 已发布。1.4.0-alpha01 版包含这些提交。

API 变更

  • 添加新 API 以在录制时访问音频振幅信息。(Id4925

Bug 修复

  • 通过确保初始化和去初始化事件以正确的顺序触发,提高了 Extensions 的稳定性。(Ib3b8e
  • 修复了由于内部添加额外的重复表面而导致超出支持的表面组合而造成的捕获会话配置失败。(Id718c
  • 修复了 Vivo S16 设备上捕获的 JPEG 图像文件过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据,导致捕获的图像文件过大。这些冗余的 0 填充数据将被移除,以使捕获的图像文件大小正常。(I79505, b/299069235)
  • 修复了在某些设备上启用某些扩展模式时,ImageAnalysis 无法与 ImageCapture 和 Preview 绑定在一起的问题。此修复将使应用通过 ExtensionsManager#isImageAnalysisSupported() 查询 ImageAnalysis 可用性时返回正确的值。(I7d538)
  • 更新 JavaDoc 以匹配行为。#setZoomRatio#setLinearZoom#enableTorch 不再立即完成,而是等待相机就绪。还添加了有关如何使用 #takePicture API 获取最大 FOV 的信息。(I23588)

版本 1.3

版本 1.3.4

2024 年 6 月 12 日

androidx.camera:camera-*:1.3.4 已发布。版本 1.3.4 包含这些提交

Bug 修复

  • 修复了在应用不断增加的缩放比例时,getZoomRatio 错误地返回减小值的问题。(I4aa0d, b/317543616
  • 修复了静止捕获/触控对焦未采用重复请求的 FPS/稳定模式值的问题,这可能导致在某些设备上重新创建捕获会话并引起延迟问题或预览冻结。(I7dc0b)
  • 修复了使用 FRAME_RATE_RANGE_UNSPECIFIED 调用 setTargetFrameRate 时帧率被设置为较低值的问题。(I78c61)

版本 1.3.3

2024 年 4 月 17 日

androidx.camera:camera-*:1.3.3 已发布。版本 1.3.3 包含这些提交

Bug 修复

  • 修复了 ImageAnalysis 的分辨率选择问题,该问题与分析器默认目标分辨率设置有关:即使应用程序设置了不同的分析器默认分辨率设置,目标分辨率仍错误地保持为 640x480。如果应用程序遇到此问题(1.3.0 ~ 1.3.2)并且无法升级到包含解决方案的较新版本,可以直接为 ImageAnalysis UseCase 设置一个具有首选分辨率和匹配 AspectRatioStrategyResolutionSelector 来解决此问题。(I81f72, b/330091012)

版本 1.3.2

2024年3月6日

androidx.camera:camera-*:1.3.2 已发布。版本 1.3.2 包含这些提交

Bug 修复

  • 修复了三星 A24 设备上的 JPEG 元数据问题。CameraX 现在可以准确保存图像,并且 ImageProxy.toBitmap() 函数返回正确的 Bitmap 对象。(I8d6eb, b/309005680)
  • 由于问题,在 Redmi Note 9 Pro 设备上移除了 9280x6944 分辨率选项。(Ia23da)

版本 1.3.1

2023 年 12 月 13 日

androidx.camera:camera-*:1.3.1 已发布。版本 1.3.1 包含这些提交。

Bug 修复

改进了 ProcessCameraProvider#bindToLifecycle() 的性能。主要变化是优化了识别最适合 UseCases 的尺寸组合的过程。最佳结果因特定的 UseCase 组合和目标设备支持的输出尺寸数量而异。(I454f2)

以下是各种场景的一些参考结果

  • 四个 UseCasesPreview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7:大约 430 毫秒到 60 毫秒
    • Samsung Galaxy S23 Ultra:大约 540 毫秒到 45 毫秒
    • Samsung A53 5G:大约 115 毫秒到 70 毫秒
  • 三个 UseCasesPreview + ImageCapture + ImageAnalysis

    • Google Pixel 7:大约 9 毫秒到 7 毫秒
    • Samsung Galaxy S23 Ultra:大约 6 毫秒到 5 毫秒
    • Samsung A53 5G:大约 32 毫秒到 12 毫秒
  • 将 Snapdragon 480 添加到 CameraUseInconsistentTimebaseQuirk。这修复了 Android 12 上使用此芯片组的设备的一个问题,即录音中的音频会因设备处于挂起状态的时间量而偏移。(I58010

版本 1.3.0

2023 年 10 月 18 日

androidx.camera:camera-*:1.3.0 已发布。版本 1.3.0 包含这些提交。

自 1.2.0 以来的重要更改

版本 1.3.0-rc02

2023 年 9 月 20 日

androidx.camera:camera-*:1.3.0-rc02 已发布。版本 1.3.0-rc02 包含这些提交。

Bug 修复

  • 通过确保初始化和去初始化事件以正确的顺序触发来提高扩展的稳定性。这修复了切换扩展模式或切换摄像头时出现的一些黑屏预览问题。(Iddaac)
  • 修复了在某些设备上启用某些扩展模式时,ImageAnalysis 无法与 ImageCapture 和 Preview 绑定在一起的问题。此修复将使应用通过 ExtensionsManager#isImageAnalysisSupported() 查询 ImageAnalysis 可用性时返回正确的值。(I7d538)
  • 修复了在小米 Poco X3 NFC 上启用镜像模式时,录制视频的音频和视频不同步的问题。(I20b4c)

版本 1.3.0-rc01

2023年8月23日

androidx.camera:camera-*:1.3.0-rc01 已发布。版本 1.3.0-rc01 包含这些提交。

API 变更

  • 添加了 PendingRecording.asPersistentRecording,允许录制在其 VideoCapture 的 Recorder 被重新绑定时持续录制。(I517c6)

Bug 修复

  • 修复了当流与 VideoCapture 和 Preview 共享时发生的崩溃问题。还修复了在 LEGACY 设备上启用流共享时出现的黑屏问题。
  • 修复了三星 S7 (SM-G930T, SM-G930V) 系列设备上捕获的 JPEG 图像文件过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这导致捕获的图像文件过大。这些冗余的 0 填充数据将被移除,以使捕获的图像文件大小正常。(I407b0, b/288828159)
  • 修复了三星 S22 (SM-S901B, SM-S901B/DS) 和 S22+ (SM-S906B) 系列设备上捕获的 JPEG 图像文件过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这导致捕获的图像文件过大,例如在 S22 SM-S901B/DS 设备上约为 13MB。这些冗余的 0 填充数据将被移除,以使捕获的图像文件大小正常。(I73be9, b/288828159)
  • 修复了三星 A5、A52、A70 和 A72 系列设备上捕获的 JPEG 图像文件过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这导致捕获的图像文件大小异常大(例如约 32MB 甚至 96MB)。这些冗余的 0 填充数据将被移除,以使捕获的图像文件大小正常。(I97c4d, b/288828159)
  • 修复了启用扩展后拍照时发生的本地崩溃。(I698f5)

版本 1.3.0-beta02

2023年7月26日

androidx.camera:camera-*:1.3.0-beta02 已发布。版本 1.3.0-beta02 包含这些提交。

Bug 修复

  • 在 Pixel 4 和 5 变体上使用闪光灯作为手电筒以提高弱光下的捕获质量。(I56ff5, b/280221967)
  • 修复了三星 A5 (2017) 系列设备上捕获的 JPEG 图像文件过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这导致捕获的图像文件大小约为 32 MB。这些冗余的 0 填充数据将被移除,以使捕获的图像文件大小正常。(I29837, b/288828159)
  • 修复了在 CaptureFailedRetryQuirk 中提到的问题设备上,捕获失败时重试未正确触发的问题。(I7b589)

版本 1.3.0-beta01

2023年6月21日

androidx.camera:camera-*:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含这些提交。

API 变更

  • ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) 函数名重命名为 setAllowedResolutionMode,并将 ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 常量重命名为 PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE。(If84e8)
  • 移除了已弃用的 API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int)VideoCapture.setTargetRotationDegrees(int)。(Id8e77)
  • DynamicRange 类表示图像的动态范围。这可以通过 VideoCapture.Builder#setDynamicRange() 用于选择高动态范围格式作为 VideoCapture 的输出。(Ib0377)
  • ExtensionsManager 中添加了一个 isImageAnalysisSupported API,应用程序可以通过它确定在启用扩展时是否可以将 ImageAnalysis 用例与 Preview 和 ImageCapture 绑定。(I1bc63)
  • Recorder 获取的新 VideoCapabilities 类可用于查询设备上视频录制支持的动态范围和质量。QualitySelectorgetSupportedQualities()isQualitySupported() 方法已被弃用。请改用 VideoCapabilitiesgetSupportedQualities()isQualitySupported() 方法。(I04014)
  • CameraController#setVideoCaptureTargetQuality() 已重命名为 setVideoCaptureQualitySelector 并接受参数 QualitySelector,这为视频质量设置提供了更大的灵活性。CameraController#getVideoCaptureTargetQuality() 已相应更改为 getVideoCaptureQualitySelector。(I520ed)
  • 移除了视频功能的实验性注解。视频功能现已稳定。(I1a113)

Bug 修复

  • 在三星 SM-A320 型号上使用手电筒作为闪光灯,以提高弱光下的速度和捕获图像质量。(I6a022, b/286190938)
  • ImageProxy.toBitmap() 添加了 ImageFormat.JPEG 格式支持。如果 JPEG 字节数组无法解码,将抛出 UnsupportedOperationException。(I81958, b/282057603)

版本 1.3.0-alpha07

2023年5月24日

androidx.camera:camera-*:1.3.0-alpha07 已发布。版本 1.3.0-alpha07 包含这些提交。

新功能

  • 新的 VideoCapture.Builder#setTargetFrameRate(Range) API 允许视频录制以设备默认值之外的帧率捕获。录制可用帧率可通过新的 CameraInfo#getSupportedFrameRates() API 查询。

API 变更

  • ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 常量重命名为 ALLOWED_RESOLUTIONS_NORMAL/SLOW,并将构建器函数 setHighResolutionEnabledFlag 重命名为 setAllowedResolutionMode。(Iae817)
  • CameraInfo#getSupportedFrameRateRanges() 现在返回一个 Set 而不是 List,以更好地表示范围是无序的。(I02f43)
  • CameraEffect 添加了一个错误监听器,用于处理不可恢复的错误。(Ice471)
  • ResolutionInfo 中添加公共构造函数以提高可测试性。(If6d1c)
  • 提供了 API UseCase.snapToSurfaceRotation(int) 来替换 setTargetRotationDegrees 的使用,并弃用了 API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int)VideoCapture.setTargetRotationDegrees(int)。(Ia9010)
  • 添加了新 API Preview#getTargetFrameRatePreview.Builder#setTargetFrameRate,以便能够为 Preview 用例设置和检索目标帧率。(If4f22)
  • Recording 对象因垃圾回收而停止时,VideoRecordEvent.Finalize 现在将以错误代码 ERROR_RECORDING_GARBAGE_COLLECTED 完成。(Iba974)

Bug 修复

  • 修复了 StreamConfigurationMapCompat 中缓存的输出尺寸为 null 时 NullPointerException 的问题。(Idf124, b/282025204)
  • 修复了 Preview.setSurfaceProvider(null) 未在 Extensions 中暂停预览的问题。(Ia903e)
  • 修复了在绑定 VideoCapture 时,在相机打开期间抛出 ConcurrentModificationException 的问题。(Ic8ac4)

版本 1.3.0-alpha06

2023年4月19日

androidx.camera:camera-*:1.3.0-alpha06 已发布。版本 1.3.0-alpha06 包含这些提交。

新功能

  • 并发相机是 Android 11 引入的一项新功能,它支持同时流式传输相机设备,例如,它允许设备同时操作前置和后置摄像头。CameraX 目前仅支持双并发摄像头,允许两个摄像头同时操作,每个最多绑定两个 {@link UseCase}。最大分辨率为 720p 或 1440p,更多详细信息请参阅以下链接,请参阅 CameraManager#getConcurrentCameraIds()
  • 引入了新的 ResolutionSelector API,它涵盖以下功能
    • 应用程序可以指定宽高比和分辨率策略,以选择最适合其需求的分辨率。
    • 所有尺寸和宽高比参数均以相机设备传感器的坐标表示。
    • 应用程序可以实现自定义分辨率过滤器,以按所需顺序排列受支持的尺寸。
    • 应用程序还可以启用高分辨率捕获以获取更高分辨率的图像。但请注意,使用高分辨率可能会导致捕获时间变慢。
    • 添加了 VideoCapture 镜像 API。通过 VideoCapture 录制的视频默认不镜像。但是,相机预览在前置摄像头上默认是镜像的。VideoCapture 镜像 API 使得在使用前置摄像头时可以与相机预览对齐。有三种 MirrorModeOFFONON_FRONT_ONLY。为了与相机预览对齐,建议使用 ON_FRONT_ONLY,这意味着后置摄像头不启用镜像,但前置摄像头启用镜像。

API 变更

  • 暴露了新的 ResolutionSelector API。应用程序可以指定宽高比和分辨率策略,并带有回退规则或自定义分辨率过滤器以获得所需结果。应用程序可以指定一个标志来启用高分辨率捕获。这将允许 CameraX 在拍照或录制视频时选择更高的分辨率。但是,请注意,使用高分辨率可能会导致捕获时间变慢。(Ibed95)
  • AE 算法支持的 FPS 范围现在可以通过 CameraInfo#getSupportedFrameRateRanges() 查询。(Iaa67f)
  • 将所有帧率方法的名称统一为使用“FrameRate”。纠正了 VideoCapture#getTargetFrameRate() 中的 javadoc 错误。(I83304)
  • 弃用了旧的 setTargetAspectRatiosetTargetResolution API。请改用新的 ResolutionSelector API。(I542c3)
  • 添加了用于并发双摄像头的公共 API,包括
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn()ConcurrentCameraConfig, SingleCameraConfigConcurrentCamera (Iab1c1)
  • ImageProcessor.Response#getOutputImage 设置为 NonNull。(Ib9c60)
  • 添加了 VideoCapture 镜像 API,包括 VideoCapture.Builder.setMirrorMode(int)VideoCapture.getMirrorMode()。这些 API 对于需要视频录制与常见相机预览行为保持一致的应用程序非常有用,即后置摄像头预览不镜像,但前置摄像头预览镜像。(I713b6, b/194634656)
  • VideoCapture.Builder 中添加了 setTargetFrameRate() API,并在 VideoCapture 中添加了 getTargetFramerate() API。(I109d4)
  • 使 SurfaceOutput 扩展 Closable 并隐藏 SurfaceOutput.Event 的公共构造函数。(I60ea8)
  • 添加了 Recording.mute 以动态静音或取消静音正在处理的录制。RecordingStats 将包含 AudioStats.AUDIO_STATE_MUTED,当正在处理的录制被显式静音时。(Ie17fc)
  • #setEffects() 参数设置为非空。添加了 #clearEffects() API 以清除效果。应用程序应调用 #clearEffects() 来移除效果。(I4b4d9)
  • ViewfinderSurfaceRequest.Builder 添加了第二个构造函数,用于接收复制构造函数的构建器。(I621a7)

Bug 修复

  • 修复了应用程序在关闭相机时调用 Extensions API 可能会崩溃的问题。(Ib27e5)
  • 修复了在某些设备上,例如三星 Galaxy S23 和小米 2107113SG,VideoCapture 无法与前置摄像头协同工作的问题。(Ibec7e, b/270656244)
  • 修复了在 Android 10 或更高版本中,使用外部存储公共文件夹中的文件拍照总是失败的问题。请注意,在 Android 10 中,使用外部存储公共文件夹中的文件拍照还需要在应用程序标签中将 requestLegacyExternalStorage 设置为 true。(I11b2c)
  • 修复了 DefaultSurfaceProcessorRejectedExecutionException 崩溃的问题。当 VideoCapture 绑定且活动暂停时,可能会发生此崩溃。(Idb46a, b/273713906)

版本 1.3.0-alpha05

2023年3月22日

androidx.camera:camera-*:1.3.0-alpha05 已发布。版本 1.3.0-alpha05 包含这些提交。

API 变更

  • 添加了 VideoCapture 旋转 API,包括 VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int)VideoCapture.getTargetRotation()。这些 API 对于锁定设备方向的应用程序很有用。ImageCapture.setTargetRotationDegrees(int)ImageAnalysis.setTargetRotationDegrees(int) 也已添加。(Id3ffe, b/205242781)
  • 允许 VIDEO_CAPTUREPREVIEW|VIDEO_CAPTURE 作为效果目标。目标为 VIDEO_CAPTURE 的效果将应用于 VideoCapture 用例;目标为 PREVIEW|VIDEO_CAPTURE 的效果将应用于共享流,然后再复制到 Preview 和 VideoCapture 流。(Iee6f3)

Bug 修复

  • Camera 1.2.2:修复了在某些设备(如 Pixel)上启用 proguard 时 CameraX 扩展无法正常工作的问题。(I90aa2)
  • 修复了 PreviewView 的一个错误,如果应用程序自己处理屏幕方向,在旋转时预览可能会失真。这只发生在某些设备上。可以在 Pixel a4、Pixel 5 和 Pixel 6a 上重现。(I14340, b/223488673)

版本 1.3.0-alpha04

2023年2月22日

androidx.camera:camera-*:1.3.0-alpha04 已发布。版本 1.3.0-alpha04 包含这些提交。

新功能

一项新功能,通过将一个流共享给多个 UseCase 来支持以前不支持的 Surface 组合。

  • 此前,当在相机硬件级别 FULL 及以下绑定“Preview、VideoCapture、ImageAnalysis”,或在硬件级别 LEGACY 绑定“Preview、VideoCapture、ImageCapture”时,CameraX 会抛出 IllegalArgumentException
  • 新行为是绑定将正常工作而不会抛出异常。相反,CameraX 使用 OpenGL 将共享流复制到 Preview 和 VideoCapture。
  • 由于缓冲区复制的成本,应用程序可能会看到延迟和功耗增加。

API 变更

  • 添加 API 将 ImageProxy 转换为 Bitmap。支持的 ImageProxy 格式为 ImageFormat.YUV_420_888PixelFormat.RGBA_8888。如果格式无效,将抛出 IllegalArgumentException。(Ic7110)
  • 添加 CoroutineCameraViewfinder 以支持使用 Kotlin 中的 suspending 函数配置取景器。(I657bc)
  • ViewfinderSurfaceRequest 添加了新的公共构造函数。当用户无法提供 CameraCharacteristics 时,它提供了灵活性。(Ie6549)

Bug 修复

  • 修复了在某些三星设备上,当应用程序暂停/恢复过快时发生的扩展崩溃。(Iaca26)

版本 1.3.0-alpha03

2023年1月25日

androidx.camera:camera-*:1.3.0-alpha03 已发布。版本 1.3.0-alpha03 包含这些提交。

API 变更

  • 添加了 CameraInfo.getIntrinsicZoomRatio 以提供相对于默认摄像头的视角信息。(Ib300c)
  • 添加了 CameraInfo.getLensFacing 以提供镜头朝向信息。添加了 CameraSelector#LENS_FACING_EXTERNAL 作为选择外部摄像头的实验性功能。(Icaf3e)
  • CameraController 中添加了 #setEffect(),允许向相机输出添加效果。(I1d21f)
  • SurfaceRequest 中添加 invalidate() 方法。Surface 提供者可以通知先前提供的 Surface 不再有效。(Idc649)
  • 添加了一个 ImageProcessor API。此接口用于将后期处理效果注入 ImageCapture 管道。(I575c6)
  • 添加了 API Recorder.Builder.setAspectRatio(),可与 QualitySelector 结合使用以支持更多视频分辨率。(I8a082)
  • 添加了 Recorder.Builder#setTargetVideoEncodingBitRate 以设置目标视频编码 BitRate,以及 Recorder#getTargetVideoEncodingBitRate 以获取目标视频编码 BitRate。(I5984d)

Bug 修复

  • 修复了没有闪光灯单元且闪光灯模式打开时 ImageCapture 失败的问题。(I9e8b4, b/263391112)
  • 修复了在某些三星 Android 12 设备上写入 Exif 位置数据时 JPEG 图像损坏的问题。(Ib7086, b/263747161, b/263289024)
  • 当相机初始化完成之前设置手电筒/缩放时,例如调用 CameraController#enableTorch,待处理的操作会被缓存并在初始化完成后提交。(I11e92, b/264157663)

版本 1.3.0-alpha02

2022年12月7日

androidx.camera:camera-*:1.3.0-alpha02 已发布。版本 1.3.0-alpha02 包含这些提交。

API 变更

  • 添加了一个新的 API,用于对预览输出应用后期处理效果。(Ic17d5)
  • OutputOptions.getDurationLimit 重命名为 OutputOptions.getDurationLimitMillis,并将 OutputOptions.setDurationLimit 重命名为 OutputOptions.setDurationLimitMillis。(I91f0c)
  • 添加 AudioConfig 类来处理视频录制中的音频相关设置。@RequiresPermission 注解已从 startRecording 函数移至 AudioConfig,以避免在不需要音频的情况下进行不必要的权限请求。(I28755)
  • 删除了在应用新的视频捕获 API 后不再使用的 Metadata, OnVideoSavedCallback, OutputFileOptionsOutputFileResults 类。(I38cd8)
  • 应用新的视频捕获 API。getVideoCaptureTargetSizesetVideoCaptureTargetSize 方法已分别替换为 getVideoCaptureTargetQualitysetVideoCaptureTargetQuality 方法,因为不再支持 setTargetResolution。(I2a1d5)

Bug 修复

  • 移除了已弃用的 core.VideoCapture API。(I531e0)
  • 修复了在没有存储权限的情况下拍照时,onError 回调未被调用的问题。(I936db, b/244807669)
  • 提高相机扩展的质量和可靠性。由于 Bokeh 支持、图像捕获和预览无法恢复的问题,相机扩展在使用 Camera Extensions v1.1.0 及更早版本的 Motorola 设备上被禁用。(Id3ce3)
  • 修复了在旧版设备上启用通过 ViewPort 进行视频裁剪时发生的本地崩溃。(I16b8a, b/251357665)

版本 1.3.0-alpha01

2022年11月9日

androidx.camera:camera-*:1.3.0-alpha01 已发布。版本 1.3.0-alpha01 包含这些提交。

新功能

  • Camera-viewfinder 已正式发布。Camera-viewfinder 提供了一个基础取景器小部件,可以显示 Camera2 的相机馈送。请查看示例代码以获取示例。

API 变更

  • 添加了 OutputOptions.setDurationLimit 以允许设置视频时长限制。当超过指定时长限制时,录制将自动完成。(I902a0)
  • 添加视频录制音频错误状态 AudioStats.AUDIO_STATE_SOURCE_ERROR。当音频源设置失败或发生某些错误时发送。(I37410)

Bug 修复

  • 添加了 Quirk,允许某些有问题的设备在遇到捕获失败时重试一次捕获。(Id4795)
  • 修复了 PreviewView SurfaceView 实现在 ViewPager2 上的黑屏问题。作为修复的一部分,如果请求的分辨率未更改,PreviewView 将重用其 SurfaceView。(Ib3f27)
  • 当使用 ViewPortCameraController API 时,支持视频裁剪(所见即所得功能)。(Ifbba8, b/201085351)
  • 修复了华为 P40 lite 上使用前置摄像头录制的视频无法录制的问题。(I87c57, b/250807400)

版本 1.2

版本 1.2.3

2023年5月24日

androidx.camera:camera-*:1.2.3 已发布。版本 1.2.3 包含这些提交。

Bug 修复

  • 修复了在某些设备上,例如三星 Galaxy S23 和小米 2107113SG,VideoCapture 无法与前置摄像头协同工作的问题。(Ibec7e, b/270656244)

版本 1.2.2

2023年3月22日

androidx.camera:camera-*:1.2.2 已发布。版本 1.2.2 包含这些提交。

Bug 修复

  • 修复了在某些设备(如 Pixel)上启用 proguard 时 CameraX 扩展无法正常工作的问题。(I90aa2)

版本 1.2.1

2023年1月25日

androidx.camera:camera-*:1.2.1 已发布。版本 1.2.1 包含这些提交。

Bug 修复

  • 修复了在某些三星 Android 12 设备上写入 Exif 位置数据时 JPEG 图像损坏的问题。(b/263289024)

版本 1.2.0

2022年12月7日

androidx.camera:camera-*:1.2.0 已发布。版本 1.2.0 包含这些提交。

自 1.1.0 以来的重要更改

  • 发布了 View、Extension 和 Video Capture 库的第一个 RC 版本。从 1.1.0-beta01 开始,所有 CameraX 库将统一版本号。这将帮助开发人员更轻松地跟踪版本,并降低大型版本兼容性矩阵的复杂性。
  • 引入了新的公共 API 和功能,包括
  • 添加官方 camera-video 库以支持视频捕获用例。
  • YUV 到 RGB 转换和旋转能力(ImageAnalysis.Builder.setOutputImageRotationEnabledsetOutputImageFormat
  • 通过允许 CameraX 应用程序在相机被另一个应用程序中断并重新获得焦点时恢复相机来支持多窗口模式。
  • 通过修复一些预览问题,确保 CameraX 在可折叠设备上正常工作。
  • 添加了 CameraState API,该 API 将通过 CameraInfo 暴露。
  • 添加了 ProcessCameraProvider.getAvailableCameraInfos() API 以直接检索有关可用相机的信息。
  • 启用扩展时,为 ImageCapture#OnImageCapturedCallback 输出 JPEG 格式。
  • CameraInfo 中添加了 isFocusMeteringSupported API,允许应用程序检查给定的 FocusMeteringAction 是否在当前相机上受支持。
  • 暴露了 getResolutionInfo API,以提供 Preview、ImageCaptureImageAnalysis 的分辨率信息。

添加了新的 API ImageCapture.Builder#setJpegQuality,允许在拍照时更改输出 JPEG 图像的压缩质量。

CameraSelector#filter 添加到公共 API,以根据 CameraSelector 过滤 CameraInfos 列表。

添加了 Camera2CameraControl.clearCaptureRequestOptions 以清除现有的捕获请求选项。

API 变更

  • 添加了将 CameraController 与外部图像处理库(例如 MLKit)一起使用的实验性 API。

Bug 修复

  • 添加了实验性 API CameraInfo#getCameraSelector(),它返回一个特定于其相机的 CameraSelector
  • 将多个实验性 API 提升为正式公共 API。
  • 将实验性 API 的注解 @Experimental 替换为 @RequiresOptIn。对于调用实验性 API,请使用 androidx.annotation.OptIn 而非已弃用的 androidx.annotation.experimental.UseExperimental。

将以下实验性 API 提升为官方 API:CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),

@ExperimentalCameraFilter API。

实验性曝光补偿 API。

API 变更

  • 将实验性 UseCaseGroup API 提升为 camera-core、camera-lifecycle 和 camera-video 的正式公共 API。添加了 ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType 用于自定义视口。

Bug 修复

  • ExperimentalUseCaseGroupLifecycle 提升为正式公共 API。
  • 现有 API 的更改

MediaStoreOutputOptions.getCollection 重命名为 MediaStoreOutputOptions.getCollectionUri

ActiveRecording 已重命名为 "Recording" 以减少冗余。

QualitySelector 创建者 API 更改为基于列表的 API。

新功能

  • 修复了在启用扩展模式并设置 ImageCapture#CAPTURE_MODE_MAX_QUALITY 模式时,YuvToJpegProcessor 出现 EOFException 的问题。
  • 修复了由于视频录制正在关闭导致编解码器配置失败的问题。
  • 修复了在 FHD 录制时预览/视频宽高比拉伸的问题。
  • 修复了在某些设备上暂停和恢复后音频/视频不同步的问题。
  • 修复了在弱光环境下,闪光灯模式为自动或始终开启时,触控对焦(startFocusAndMetering)期间触发闪光灯的问题。

Bug 修复

  • 版本 1.1.0-rc02

androidx.camera:camera-*:1.1.0-rc02 已发布。版本 1.1.0-rc02 包含这些提交。

修复了在获取 CONTROL_ZOOM_RATIO_RANGE 特性时 AssertionError 未被处理的错误。(Ia248a, b/231701345)

版本 1.1.0-rc01

API 变更

Bug 修复

  • 发布了 camera-video、camera-view 和 camera-extension 的第一个 RC 版本。
  • 修复了 VideoCapture<Recorder> 解绑时视频编解码器未释放的问题,导致后续使用 VideoCapture<Recorder> 在录制时出现 MediaCodec.CodecException 失败,尤其是在 API 21-22 设备上。(Ie7f68)

修复了 CameraExtensionsActivity 捕获的图像未在 ImageCaptureTest 中删除的问题。

版本 1.1.0-beta03

2022年4月6日

API 变更

Bug 修复

  • CaptureRequestOptions 构造函数设为受限。(I261b6)
  • 添加了一个实验性 API,用于将 CameraController 与外部图像处理库(例如 MLKit)一起使用。(I4ea71)
  • 修复了在多窗口模式下旋转设备后活动未重新启动时,PreviewView 中预览侧向显示的问题。(I1ea36, b/223488673)

修复了一个多窗口问题:当焦点重新回到应用程序时,如果 (1) 其他高优先级应用程序打开了不同的相机,并且 (2) 设备是三星 Android 12 设备,则无法恢复相机。(I7e9f2)

包含了针对检查闪光灯可用性时崩溃设备的解决方法。这些设备将无法使用手电筒。(If26a3, b/216667482)

修复了应用程序使用扩展并启用 proguard 时发生的 AbstractMethodError 问题。(I7cbaf, b/222726805)

新功能

  • 在 Motorola razr 5G 设备上强制禁用散景扩展模式,这会导致黑屏预览问题。(I35d49)

API 变更

  • 修复了在某些三星设备(API 29 之前)上暂停和恢复后音频/视频不同步的问题。(I64622, b/202798609, b/202798572)
  • 修复了 Sony G3125 上暂停和恢复后音频/视频不同步的问题。(I2a1a5, b/202799148)

Bug 修复

  • 修复了当 Recorder 遇到 InvalidConfigException 时发生的崩溃。但是,此修复仅能防止应用程序崩溃,但不能解决 InvalidConfigException 的根本原因。如果 Recorder 仍然无法配置,应用程序在开始录制时将收到错误回调。(I89c29, b/213617227)
  • 外部贡献

由于 test-coroutines-lib 迁移,更新了 :compose:ui:ui-test api (updateApi) (I3366d)

版本 1.1.0-beta02

2022年2月23日

新功能

Bug 修复

  • 添加了通过 Camera2Interop 指定物理相机 ID 的功能。(I5aed8)
  • 修复了 Oppo Find N 上预览拉伸的问题。(I7d004)
  • 修复了 Galaxy J7 Prime 预览失真的问题。(I4c500)

使用兼容的比特率查找视频编码器。(d969052)

版本 1.1.0

版本 1.1.0-beta03

androidx.camera:camera-*:1.1.0 已发布。版本 1.1.0 包含以下提交。

自 1.0.0 以来的重要变更

  • 作为第一个 RC 版本发布了 View、Extension 和 Video Capture 库。从 1.1.0-beta01 开始,所有 CameraX 库将保持相同的版本号。这将帮助开发者更容易地跟踪版本,并降低大型版本兼容性矩阵的复杂性。
  • 引入了新的公共 API 和功能,其中包括:
  • 添加了官方 camera-video 库以支持视频捕获用例。
  • YUV 到 RGB 转换和旋转功能(ImageAnalysis.Builder.setOutputImageRotationEnabledsetOutputImageFormat
  • 支持多窗口模式,允许 CameraX 应用在相机被其他应用中断后,焦点返回时恢复相机。
  • 通过修复一些预览问题,确保 CameraX 在可折叠设备上运行良好。
  • 添加了将通过 CameraInfo 公开的 CameraState API。
  • 添加了 API ProcessCameraProvider.getAvailableCameraInfos() 以直接检索可用相机的信息。
  • 当 Extension 启用时,ImageCapture#OnImageCapturedCallback 的输出 JPEG 格式。
  • CameraInfo 中添加了一个 API isFocusMeteringSupported,允许应用程序检查当前相机是否支持给定的 FocusMeteringAction
  • 公开了 getResolutionInfo API,以提供预览、ImageCaptureImageAnalysis 的分辨率信息。
  • 添加了一个新 API ImageCapture.Builder#setJpegQuality,允许在拍照时更改输出 JPEG 图像压缩质量。
  • CameraSelector#filter 添加到公共 API,用于根据 CameraSelector 过滤 CameraInfos 列表。
  • 添加了 Camera2CameraControl.clearCaptureRequestOptions 用于清除现有捕获请求选项。
  • 添加了一个实验性 API,用于将 CameraController 与外部图像处理库(如 MLKit)一起使用。
  • 添加了实验性 API CameraInfo#getCameraSelector(),它返回一个特定于其相机的 CameraSelector
  • 将多个实验性 API 升级为正式公共 API
  • 将实验性 API 的注解 @Experimental 替换为 @RequiresOptIn。调用实验性 API 时,请使用 androidx.annotation.OptIn 而不是已弃用的 androidx.annotation.experimental.UseExperimental。
  • 将以下实验性 API 升级为官方 API:CameraXConfig.Builder#setAvailableCamerasLimiter()CameraXConfig.Builder#setMinimumLoggingLevel()CameraXconfig.Builder#setSchedulerHandler()CameraXConfig#getAvailableCamerasLimiter()CameraXConfig#getMinimumLoggingLevel()CameraXConfig#getCameraExecutor()CameraXConfig#getSchedulerHandler()
  • @ExperimentalCameraFilter API
  • 实验性曝光补偿 API。
  • 将 camera-core、camera-lifecycle 和 camera-video 的实验性 UseCaseGroup API 升级。为自定义视口添加了 ViewPort#getLayoutDirectionViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType
  • ExperimentalUseCaseGroupLifecycle 升级为正式公共 API。
  • 现有 API 的变更
  • MediaStoreOutputOptions.getCollection 重命名为 MediaStoreOutputOptions.getCollectionUri
  • 为减少冗余,ActiveRecording 已重命名为 "Recording"。
  • QualitySelector 创建器 API 更改为基于列表的 API。

Bug 修复

  • 修复了启用扩展模式并设置 ImageCapture#CAPTURE_MODE_MAX_QUALITY 模式时 YuvToJpegProcessor EOFException 问题。
  • 修复了由于视频录制正在关闭导致编解码器配置失败的问题。
  • 修复了在 FHD 录制时预览/视频宽高比拉伸的问题。
  • 修复了部分设备上暂停并恢复后音频/视频不同步的问题。
  • 修复了在弱光环境下,闪光灯模式为自动或常亮时,点击对焦(startFocusAndMetering)期间触发闪光灯的问题。

版本 1.1.0-rc02

包含了针对检查闪光灯可用性时崩溃设备的解决方法。这些设备将无法使用手电筒。(If26a3, b/216667482)

androidx.camera:camera-*:1.1.0-rc02 已发布。版本 1.1.0-rc02 包含以下提交。

Bug 修复

  • 修复了 Oppo Find N 上预览拉伸的问题。(I7d004)
  • 修复了获取 CONTROL_ZOOM_RATIO_RANGE 特征时 AssertionError 未被处理的错误。(Ia248a, b/231701345

版本 1.1.0-rc01

2022 年 5 月 11 日

androidx.camera:camera-*:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含以下提交。

新功能

  • 发布 camera-video、camera-view 和 camera-extension 的第一个 RC 版本。

Bug 修复

  • 修复了 VideoCapture<Recorder> 解除绑定时视频编解码器未释放的问题,导致后续使用 VideoCapture<Recorder> 在 API 21-22 设备上录制失败并出现 MediaCodec.CodecException。(Ie7f68
  • 修复了 ImageCaptureTest 中未删除 CameraExtensionsActivity 捕获图像的问题。

版本 1.1.0-beta03

2022 年 4 月 6 日

androidx.camera:camera-*:1.1.0-beta03 已发布。版本 1.1.0-beta03 包含以下提交。

API 变更

  • CaptureRequestOptions 构造函数设为受限。(I261b6
  • 添加了一个实验性 API,用于将 CameraController 与外部图像处理库(如 MLKit)一起使用。(I4ea71

Bug 修复

  • 修复了在多窗口模式下旋转设备后,如果 Activity 未重启,PreviewView 中预览画面侧向显示的问题。(I1ea36, b/223488673
  • 修复了多窗口问题,即当焦点返回到应用程序时,如果 (1) 其他高优先级应用程序打开了不同的相机 (2) 设备是三星 Android 12 设备,则无法恢复相机。(I7e9f2
  • 针对检查闪光灯可用性时崩溃的设备,包含了临时解决方案。这些设备将无法使用手电筒。(If26a3, b/216667482
  • 修复了应用程序使用扩展并启用 proguard 时发生的 AbstractMethodError 问题。(I7cbaf, b/222726805
  • 在 Motorola razr 5G 设备上强制禁用散景扩展模式,这将导致黑屏预览问题。(I35d49
  • 修复了部分三星设备在 API 29 之前暂停并恢复后音频/视频不同步的问题。(I64622, b/202798609, b/202798572
  • 修复了 Sony G3125 上暂停并恢复后音频/视频不同步的问题。(I2a1a5, b/202799148
  • 修复了 Recorder 遇到 InvalidConfigException 时崩溃的问题。然而,此修复仅防止应用程序崩溃,但并未解决 InvalidConfigException 的根本原因。如果 Recorder 仍无法配置,应用程序在开始录制时将收到错误回调。(I89c29, b/213617227

外部贡献

  • 由于 test-coroutines-lib 迁移,更新了 :compose:ui:ui-test API (updateApi)。(I3366d

版本 1.1.0-beta02

2022 年 2 月 23 日

androidx.camera:camera-*:1.1.0-beta02 已发布。版本 1.1.0-beta02 包含以下提交。

API 变更

  • 添加了通过 Camera2Interop 指定物理相机 ID 的功能。(I5aed8

Bug 修复

  • 修复了 Oppo Find N 上预览画面拉伸的问题。(I7d004
  • 修复了 Galaxy J7 Prime 上预览画面失真的问题。(I4c500
  • 使用兼容的比特率查找视频编码器。(d969052

版本 1.1.0-beta01

2022年1月26日

androidx.camera:camera-*:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交。

新功能

  • 从 1.1.0-beta01 开始,所有 CameraX 库将统一版本号。这将帮助开发人员更轻松地跟踪版本,并降低大型版本兼容性矩阵的复杂性。

API 变更

  • 添加了 Camera2CameraControl.clearCaptureRequestOptions 以清除现有的捕获请求选项。(Ifa07d)

Bug 修复

  • 修复了在某些 Android O(API 26)之前的设备上录制视频时崩溃的问题。(I88fdf, b/212328261)
  • 修复了在三星设备上使用前置摄像头时,cameraControl#startFocusAndMetering() 导致的 AF 区域不正确的问题。(Ifbf59, b/210548792)
  • 在 Pixel 3a/Pixel 3a XL 上使用手电筒作为闪光灯,以提高黑暗环境中的速度和捕获图像质量。(Ib12b6, b/211474332
  • 在多窗口模式下,当相机被其他高优先级应用程序中断并且焦点返回到应用程序时,应用程序可以恢复相机。请注意,由于某些框架问题,焦点更改和相机重新打开之间可能存在一些延迟(1 秒到 10 秒或更长)。(I4d092

版本 1.1.0-alpha12

2021 年 12 月 15 日

androidx.camera:camera-*:1.1.0-alpha12 已发布。版本 1.1.0-alpha12 包含以下提交。

API 变更

  • 删除了内部类/接口中不必要的 @RequiresApi(21) 注解。(I8e286, b/204917951
  • QualitySelector 的质量常量和回退策略常量已更改为由类对象表示。例如,QualitySelector.QUALITY_HD 已更改为 Quality.HDQualitySelector.FALLBACK_STRATEGY_LOWER 已更改为 FallbackStrategy.lowerQualityOrHigherThan(Quality) 返回的实例。用于创建 QualitySelector 的 API 已更改为基于列表的 API。新的 API QualitySelector.fromOrderedList(List<Quality>) 将参考输入质量列表的顺序,而不是由 QualitySelector.Procedure 创建的顺序。QualitySelector.Procedure 类已被删除。(I43343
  • PendingRecording.withEventListener() 已被删除,事件监听器现在必须传递给 PendingRecording.start()。此事件监听器要求旨在鼓励处理在 VideoRecordEvent.Finalize 事件中报告的异步错误。(I1e71d
  • 为减少冗余,ActiveRecording 已重命名为 Recording。(I77ceb

Bug 修复

  • 修复了 Pixel 3a 和 Pixel 3a XL 在黑暗条件下,FLASH_AUTO 模式下捕获的照片曝光不足的问题。(I13f19, b/205373142
  • 始终使用最新的显示尺寸来确定预览 Resolution。(I4a694
  • 过滤掉不具有 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相机。具有 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相机具有每个相机设备都支持的最小功能集。不具有 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相机可能是支持特殊功能且不支持标准颜色输出的相机。CameraX 无法支持这些相机的 PreviewImageCaptureImageAnalysisVideoCapture 用例。因此,应过滤掉这些相机以防止错误使用。(Ib8cda
  • 当结果集为空时,CameraSelector#filter 不再抛出 IllegalArgumentException。(I27804
  • 现在,根据 OEM 指定的配置文件,使用更智能的启发式算法来选择编码器设置。(Iaeef0
  • 修复了在 Pixel1 上开始 UHD 视频录制后,预览画面会出现隔行扫描颜色线的问题。(I833c6, b/205340278

版本 1.1.0-alpha11

2021 年 11 月 17 日

androidx.camera:camera-*:1.1.0-alpha11 已发布。版本 1.1.0-alpha11 包含以下提交。

API 变更

  • 将 CameraSelector#filter 添加到公共 API,用于根据 CameraSelector 过滤 CameraInfos 列表。(I105d0
  • 为 ImageAnalysis 配置添加了 setOutputImageRotationEnabled API。用户可以为 YUV/RGB 图像缓冲区启用旋转。旋转角度是根据传感器旋转和目标旋转计算的相对旋转,以保持图像正面朝上。

  • 为 ImageAnalysis 配置添加了 setOutputImageRotationEnabled API。用户可以为 YUV/RGB 图像缓冲区启用旋转。旋转角度是根据传感器旋转和目标旋转计算的相对旋转,以保持图像正面朝上。

    在 ImageInfo 中添加了 getSensorToBufferTransformMatrix API。返回的矩阵是从传感器坐标到缓冲区坐标的映射,即从 CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE 的值到 (0, 0, image.getWidth, image.getHeight)。该矩阵可用于将坐标从一个 {UseCase} 映射到另一个。例如,将通过 ImageAnalysis 检测到的人脸坐标映射到预览。(I9ff1e

  • 添加了一个新 API ImageCapture.Builder#setJpegQuality,允许在拍照时更改输出 JPEG 图像压缩质量。(I8dcf4

  • 将 MediaStoreOutputOptions.getCollection 重命名为 MediaStoreOutputOptions.getCollectionUri。(I16639

Bug 修复

  • 修复了在弱光环境下,闪光灯模式为自动或常亮时,点击对焦(startFocusAndMetering)期间触发闪光灯的问题。(Id4c11
  • 在 MINIMIZE_LATENCY 模式下,在 Pixel 2 XL / Pixel 3 XL 上禁用 HDR+ 以减少延迟。(Ib6270, b/203505523

外部贡献

版本 1.1.0-alpha10

2021 年 10 月 13 日

androidx.camera:camera-*:1.1.0-alpha10 已发布。版本 1.1.0-alpha10 包含以下提交。

新功能

  • 正式发布 androidx.camera:camera-video:1.1.0-alpha10 作为视频的第一个 alpha 版本。有几个已知问题将在后续版本中修复。

API 变更

  • 为所有 CameraX 类添加了 @RequiresApi(21) 注解,并从 AndroidManifest.xml 中删除了 minSdkVersion。这将允许 camera-core 轻松集成到 minSdkVersion 小于 21 但希望有条件地使用依赖于 API 21 及更高版本的代码路径的应用程序中。对于 minSdkVersion 21 或更高的任何应用程序,此更改无需操作。(Ie7f2e, b/200599470

Bug 修复

  • 抛出 InitializationException,使应用程序能够优雅地处理创建 CameraCharacteristics 时发生的 AssertionError。(Ibec79

版本 1.1.0-alpha09

2021 年 9 月 29 日

androidx.camera:camera-camera2:1.1.0-alpha09androidx.camera:camera-core:1.1.0-alpha09androidx.camera:camera-lifecycle:1.1.0-alpha09 已发布。版本 1.1.0-alpha09 包含以下提交。

API 变更

  • ExperimentalUseCaseGroup 注解已删除,因为这些 API 不再是实验性的。(I01ef5

Bug 修复

  • 修复了 MAXIMIZE_QUALITY 模式下捕获的照片模糊的问题。(I173a9, b/193823892
  • 修复了三星 Galaxy J5 在黑暗环境中使用闪光灯开启/自动模式拍照后相机卡死的问题。(I3aab9
  • 当 ImageCapture 需要裁剪时,根据设置的捕获模式,以指定的 JPEG 质量级别压缩输出裁剪图像。如果捕获模式为 CAPTURE_MODE_MINIMIZE_LATENCY,JPEG 压缩质量将为 95。如果捕获模式为 CAPTURE_MODE_MAXIMIZE_QUALITY,JPEG 压缩质量将为 100。(Ieb37c, b/142856426

版本 1.1.0-alpha08

2021 年 8 月 18 日

androidx.camera:camera-camera2:1.1.0-alpha08androidx.camera:camera-core:1.1.0-alpha08androidx.camera:camera-lifecycle:1.1.0-alpha08 已发布。版本 1.1.0-alpha08 包含以下提交。

新功能

  • 为图像分析配置添加了 setOutputImageFormat API。用户可以选择 ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 或 ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888。默认情况下,将选择 ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888。(I7902d

API 变更

  • ExperimentalUseCaseGroupLifecycle 注解已删除,因为这些 API 不再是实验性的。(I17b85

Bug 修复

  • 修复了华为 P20 Lite 上预览画面过亮的问题。此问题仅在使用某些特殊预览分辨率与大变焦值一起使用时发生。(Idefce, b/192129158
  • 修复了在某些设备上,当闪光灯模式设置为 FLASH_MODE_ON 后立即拍照时,闪光灯不工作的问题。(Ieb49b
  • 修复了当 VideoCapture、ImageCapture 和 Preview 绑定时,拍照时预览会暂停一段时间的问题。(I56197, b/193864120
  • 允许 ImageAnalysis 选择大于 1080p 的分辨率。当 ImageAnalysis 与 Preview 和 ImageCapture 绑定时,LIMITED 级别以上的设备可以支持 RECORD 大小的 ImageAnalysis 分辨率。权衡是 ImageCapture 的选定分辨率也需要是 RECORD 大小分辨率。为了成功为 ImageAnalysis 选择 RECORD 大小分辨率,应在 ImageCapture 和 ImageAnalysis 上都设置 RECORD 大小目标分辨率。这表明应用程序清楚地了解了权衡,并更喜欢 ImageAnalysis 具有更大的分辨率,而不是 ImageCapture 具有 MAXIMUM 分辨率。有关 RECORD、MAXIMUM 大小定义和更多详细信息,请参阅 https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture。RECORD 大小指的是相机设备的最大支持录制分辨率,由 CamcorderProfile 确定。MAXIMUM 大小指的是相机设备在该格式或 StreamConfigurationMap.getOutputSizes(int) 目标的最大输出分辨率。(I1ee97, b/192911449
  • 将 Exif 信息添加到捕获的图像中。(I01ff0, b/193342619
  • 在 ImageCapture 中,如果保存位置是 File,则返回保存图像的 URI。(Ib5b49, b/149241379
  • 修复了许多设备上闪光灯拍摄的图像过暗的问题。(I4e510

版本 1.1.0-alpha07

2021 年 7 月 21 日

androidx.camera:camera-camera2:1.1.0-alpha07androidx.camera:camera-core:1.1.0-alpha07androidx.camera:camera-lifecycle:1.1.0-alpha07 已发布。版本 1.1.0-alpha07 包含以下提交。

Bug 修复

  • 修复了三星 Galaxy Note 5 在黑暗环境中使用闪光灯开启/自动模式拍照后相机卡死的问题。(If6871
  • 修复了启用扩展模式并设置 ImageCapture#CAPTURE_MODE_MAX_QUALITY 模式时 YuvToJpegProcessor EOFException 问题。(I538bd, b/192017012

版本 1.1.0-alpha06

2021 年 6 月 30 日

androidx.camera:camera-camera2:1.1.0-alpha06androidx.camera:camera-core:1.1.0-alpha06androidx.camera:camera-lifecycle:1.1.0-alpha06 已发布。版本 1.1.0-alpha06 包含以下提交。

API 变更

  • 提升 camera-core 的实验性曝光补偿 API。(I08ee8
  • 在 CameraInfo 中添加了一个 API isFocusMeteringSupported,允许应用程序检查当前相机是否支持给定的 FocusMeteringAction。(Ib45ae, b/188606490
  • 公开了 getResolutionInfo API,以提供预览、ImageCapture 和 ImageAnalysis 的分辨率信息。(I2b613, b/188600718
  • 将以下实验性 API 提升为官方 API:CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler()。(I2ade2
  • 公开了 CameraProvider 接口,以提供对一组相机的访问。(I1a7b1
  • 提升了 camera-core、camera-lifecycle 和 camera-video 的实验性 UseCaseGroup API。添加了 ViewPort#getLayoutDirectionViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType 用于自定义视口。(I7cee8

版本 1.1.0-alpha05

2021 年 6 月 2 日

androidx.camera:camera-camera2:1.1.0-alpha05androidx.camera:camera-core:1.1.0-alpha05androidx.camera:camera-lifecycle:1.1.0-alpha05 已发布。版本 1.1.0-alpha05 包含以下提交。

API 变更

  • 删除了 Camera2CameraFilter 类。建议通过 CameraFilter 选择相机,并在需要时通过 Camera2CameraInfo 检索 CameraCharacteristics 或其他与 Camera2 相关的信息。(Ib887c
  • ExperimentalCameraFilter API 现已脱离实验阶段,成为正式 API。它们可以在不进行 OptIn 注解的情况下使用。(I4bc94
  • 添加了通过 CameraInfo#getCameraState() 公开的相机状态 API。(Ia86b4
  • 添加了实验性 API CameraInfo#getCameraSelector(),它返回一个特定于其相机的 CameraSelector。(I77f9f

Bug 修复

  • 修复了在某些 Android 11 设备上,setZoomRatio 和 setLinearZoom 返回的 ListenableFuture 无法完成的问题。(I716d7
  • 加快相机切换速度并减少相机设备发生错误的几率。(I34c99
  • 将 ExperimentalUseCaseGroupLifecycle 替换为 ExperimentalUseCaseGroup。(I3b2ef, b/159033688

版本 1.1.0-alpha04

2021 年 4 月 21 日

androidx.camera:camera-camera2:1.1.0-alpha04androidx.camera:camera-core:1.1.0-alpha04androidx.camera:camera-lifecycle:1.1.0-alpha04 已发布。版本 1.1.0-alpha04 包含以下提交。

Bug 修复

  • 修复了由多个线程同时访问同一集合导致的内存泄漏。内存泄漏可能导致 Activity 或 Fragment 被 Preview 实例保留。(I7b4b8
  • 将实验性 API 的注解 @Experimental 替换为 @RequiresOptIn。调用实验性 API 时,请使用 androidx.annotation.OptIn 而不是已弃用的 androidx.annotation.experimental.UseExperimental。(Iff226
  • 修复了三星 Galaxy S7 上使用闪光灯开启/自动模式拍摄的 ImageCapture 图像过度曝光的问题。(I30001
  • 添加了一个将通过 CameraInfo 公开的 CameraState API。(I75392

版本 1.1.0-alpha03

2021 年 3 月 24 日

androidx.camera:camera-camera2:1.1.0-alpha03androidx.camera:camera-core:1.1.0-alpha03androidx.camera:camera-lifecycle:1.1.0-alpha03 已发布。版本 1.1.0-alpha03 包含以下提交。

Bug 修复

  • 当扩展模式启用时,ImageCapture#OnImageCapturedCallback 的输出 JPEG 格式。(I0d7b1
  • 修复了 UMIDIGI BISON 设备上的初始化失败问题。(I57d9e, b/180818665
  • 修复了 PreviewView 中三星 A3 预览画面拉伸的问题。(Iacb30, b/180121821

版本 1.1.0-alpha02

2021 年 2 月 24 日

androidx.camera:camera-camera2:1.1.0-alpha02androidx.camera:camera-core:1.1.0-alpha02androidx.camera:camera-lifecycle:1.1.0-alpha02 已发布。版本 1.1.0-alpha02 包含以下提交。

API 变更

  • 添加了一个 API ProcessCameraProvider.getAvailableCameraInfos(),用于直接检索可用相机的信息,这些相机可以是设备的所有相机,也可以是 CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector) 中提供的 CameraSelector 选择的相机。(Ieac08

Bug 修复

  • CameraX 现在尝试在首次尝试时强制打开相机,这可能导致当应用程序具有更高优先级时,CameraX 从其他相机客户端“抢占”相机。(Iab069, b/175820568
  • 修复了在 CameraXConfig 中使用 setAvailableCamerasLimiter 时 Robolectric 测试失败的问题。(Ice307
  • 此更改捕获了 ImageAnalysis 中图像队列已满时发生的异常。因此,应用程序不会崩溃,但您可能会注意到其他用例被冻结或运行缓慢。例如,预览冻结/缓慢。(Ic12da, b/175851631
  • 修复了 ExtensionsErrorListener 在仅绑定 Preview 或 ImageCapture 时报告错误的问题。(I5ae39
  • 通过在拍照前删除图像保存位置的验证来修复 ImageCapture 性能回退。进行此更改后,如果保存目的地无效,获取失败响应的时间会更长,因为它将在拍照后尝试保存图像。(I1fd4e, b/177061560
  • 修复了 ImageCapture 使用 "File" 类型 OutputFileOptions 时的性能回退。(I5164a, b/177061560
  • 文档已更新,建议不要从库代码中使用 ProcessCameraProvider.configureInstance(...)。(Ib8a9f

版本 1.1.0-alpha01

2021 年 1 月 27 日

androidx.camera:camera-camera2:1.1.0-alpha01androidx.camera:camera-core:1.1.0-alpha01androidx.camera:camera-lifecycle:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 包含以下提交。

Bug 修复

  • 包含了 SM-G930T 后置摄像头 JPEG 图像数据间歇性损坏的临时解决方案。(I52001, b/159831206
  • 修复了当所有预览支持尺寸都小于 640x480 而显示尺寸大于 640x480 时发生的 IllegalArgumentException 问题。(I2a63c, b/150506192
  • 默认情况下,没有明确声明公共资源(例如通过 public.xml)的库中的资源现在是私有的。(Ia1dcc, b/170882230

Camera-Camera2、Camera-Core 和 Camera-Lifecycle 版本 1.0.2

版本 1.0.2

2021 年 9 月 29 日

androidx.camera:camera-camera2:1.0.2androidx.camera:camera-core:1.0.2androidx.camera:camera-lifecycle:1.0.2 已发布。版本 1.0.2 包含以下提交。

Bug 修复

  • 修复了 MAXIMIZE_QUALITY 模式下捕获的照片模糊的问题。(I173a9, b/193823892
  • 修复了许多设备上闪光灯拍摄的图像过暗的问题。(I4e510

Camera-Camera2、Camera-Core 和 Camera-Lifecycle 版本 1.0.1

版本 1.0.1

2021 年 7 月 21 日

androidx.camera:camera-camera2:1.0.1androidx.camera:camera-core:1.0.1androidx.camera:camera-lifecycle:1.0.1 已发布。版本 1.0.1 包含以下提交。

Bug 修复

  • 修复了在某些 Android 11 设备上,setZoomRatiosetLinearZoom 返回的 ListenableFuture 无法完成的问题。(I716d7

  • 修复了在某些设备上相机在关闭状态卡死并导致黑屏预览的问题。(I34c99

Camera-Camera2、Camera-Core 和 Camera-Lifecycle 版本 1.0.0

版本 1.0.0

2021 年 5 月 5 日

androidx.camera:camera-camera2:1.0.0androidx.camera:camera-core:1.0.0androidx.camera:camera-lifecycle:1.0.0 已发布。版本 1.0.0 包含以下提交。

1.0.0 的主要功能

  • CameraX 支持预览图像捕获分析
  • CameraX 通过易于使用的 API 管理相机生命周期
  • CameraX 旨在提供一个兼容性层,解决 Android 相机生态系统中的许多问题。

已知问题

版本 1.0.0-rc05

2021 年 4 月 21 日

androidx.camera:camera-camera2:1.0.0-rc05androidx.camera:camera-core:1.0.0-rc05androidx.camera:camera-lifecycle:1.0.0-rc05 已发布。版本 1.0.0-rc05 包含以下提交。

Bug 修复

  • 修复了三星 Galaxy S7 上使用闪光灯开启/自动模式拍摄的 ImageCapture 图像过度曝光的问题。(I30001

版本 1.0.0-rc04

2021 年 3 月 24 日

androidx.camera:camera-camera2:1.0.0-rc04androidx.camera:camera-core:1.0.0-rc04androidx.camera:camera-lifecycle:1.0.0-rc04 已发布。版本 1.0.0-rc04 包含以下提交。

Bug 修复

  • 修复了 UMIDIGI BISON 设备上的初始化失败问题。(I57d9e, b/180818665

版本 1.0.0-rc03

2021 年 2 月 24 日

androidx.camera:camera-camera2:1.0.0-rc03androidx.camera:camera-core:1.0.0-rc03androidx.camera:camera-lifecycle:1.0.0-rc03 已发布。版本 1.0.0-rc03 包含以下提交。

Bug 修复

  • 修复 ProcessCameraProvider#getInstance 文档中的格式错误。
  • 修复了在 CameraXConfig 中使用 setAvailableCamerasLimiter 时 Robolectric 测试失败的问题。
  • 通过在拍照前删除图像保存位置的验证来修复 ImageCapture 性能回退。进行此更改后,如果保存目的地无效,获取失败响应的时间会更长,因为它将在拍照后尝试保存图像。
  • 此更改捕获了 ImageAnalysis 中图像队列已满时发生的异常。因此,应用程序不会崩溃,但您可能会注意到其他用例被冻结或运行缓慢。例如,预览冻结/缓慢。
  • 包含了 SM-G930T 后置摄像头 JPEG 图像数据间歇性损坏的临时解决方案。(I52001, b/159831206
  • 此更改捕获了 ImageAnalysis 中图像队列已满时发生的异常。因此,应用程序不会崩溃,但您可能会注意到其他用例被冻结或运行缓慢。例如,预览冻结/缓慢。(Ic12da, b/175851631
  • 修复了在 CameraXConfig 中使用 setAvailableCamerasLimiter 时 Robolectric 测试失败的问题。(Ice307
  • 通过在拍照前删除图像保存位置的验证来修复 ImageCapture 性能回退。进行此更改后,如果保存目的地无效,获取失败响应的时间会更长,因为它将在拍照后尝试保存图像。(I1fd4e, b/177061560
  • 修复了 ImageCapture 使用 "File" 类型 OutputFileOptions 时的性能回退。(I5164a, b/177061560

版本 1.0.0-rc02

2021 年 1 月 27 日

androidx.camera:camera-camera2:1.0.0-rc02androidx.camera:camera-core:1.0.0-rc02androidx.camera:camera-lifecycle:1.0.0-rc02 已发布。版本 1.0.0-rc02 包含以下提交。

Bug 修复

  • 修复了所有预览支持尺寸都小于 640x480 而显示尺寸大于 640x480 时发生的 IllegalArgumentException 问题。(b/150506192
  • 限制相机重新打开尝试次数。在尝试从某些相机打开问题中恢复时,CameraX 将不再无限期地尝试重新打开相机,而是在重试 10 秒后停止。I435d2

  • 修复了当所有预览支持尺寸都小于 640x480 而显示尺寸大于 640x480 时发生的 IllegalArgumentException 问题。(I2a63c, b/150506192

版本 1.0.0-rc01

2020 年 12 月 16 日

androidx.camera:camera-camera2:1.0.0-rc01androidx.camera:camera-core:1.0.0-rc01androidx.camera:camera-lifecycle:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含以下提交。

API 变更

  • 将 CameraFilter 和 Camera2Filter 更改为接受 CameraInfo。(I6883d
  • 添加了实验性类 Camera2CameraControl,以允许动态与 Camera2 API 互操作。(I45cf3
  • 将 Camera2CameraInfo#fromCameraInfo 重命名为 #from。(Ia2bd6
  • 在 CameraXConfig 中添加了一个实验性 setAvailableCamerasLimiter API,允许应用程序通过避免初始化未使用的相机来优化初始化延迟。(I6cf88
  • 添加了实验性方法 CameraXConfig.Builder#setMinimumLoggingLevel(),允许为 CameraX 日志设置最小日志级别。未设置时,默认为 Log#DEBUG。(Ic3245

Bug 修复

  • 包含了 SM-G930V 后置摄像头 JPEG 图像数据间歇性损坏的临时解决方案。(I5aca5, b/159831206
  • 修复了三星 SM-A716 设备上,当闪光灯始终开启/自动且环境黑暗时,拍照不接收结果的问题。(If98b2, b/172036589
  • 修复了通过调用 Preview.setSurfaceProvider(null) 无法停止预览的问题。(I3ac18
  • 修复了某些设备上捕获 4:3 图像时的方向问题。(I0e3fb, b/171492111

Camera Camera2、Core 和 Lifecycle 版本 1.0.0-beta12

2020 年 11 月 11 日

androidx.camera:camera-camera2:1.0.0-beta12androidx.camera:camera-core:1.0.0-beta12androidx.camera:camera-lifecycle:1.0.0-beta12 已发布。版本 1.0.0-beta12 包含以下提交。

Bug 修复

  • 在三星 A3 设备上禁用自动闪光灯,以修复在三星 A3 设备上使用自动闪光灯 AE 模式拍照时崩溃的问题。(Ia5fe3, b/157535165
  • 修复了在运行 Android L(API 级别 21 和 22)的 Nexus 4 设备上预览画面拉伸的问题。(I4d407, b/158749159
  • OnImageCapturedCallback#onCaptureSuccess 基类实现不再关闭图像。这是为了防止开发者出现意外行为。开发者不应依赖 super.onCaptureSuccess 来关闭图像。(Ifbf9c
  • Experimental 注解的 androidx 变体已被弃用,以与 Kotlin 保持一致。它已被 RequiresOptIn 注解取代,并且面向 Java 的 linter 已更新,以支持新的 Kotlin 注解和新的 androidx 变体。(I52495, b/151331381

Camera-Camera2 版本 1.0.0-beta11

2020 年 10 月 14 日

androidx.camera:camera-camera2:1.0.0-beta11 已发布。版本 1.0.0-beta11 包含以下提交。

新功能

  • 支持 Android 11 CONTROL_ZOOM_RATIO API,用于在包含有效 CONTROL_ZOOM_RATIO_RANGE 的 Android 11 或更高版本设备上进行变焦。(I62cc6

Bug 修复

  • 修复了相机 ID 为非整数相机 ID 时发生的 NumberFormatException 问题。(Ib2228
  • 改进了 CameraX 初始化和 bindToLifecycle 的延迟。(I61dc5
  • UseCase 的创建不需要完成 CameraX 的初始化。所有特定于实现的配置都在 UseCase 附加到 Camera 实例时设置,对于公共 API 而言,这是 ProcessCameraProvider.bindToLifecycle()。(Ia5411
  • <UseCase>.getTargetRotation() 如果在附加到 Camera 实例之前调用,将返回 Surface.ROTATION_0,除非已在 Builder 或 UseCase 上设置了 targetRotation。(I80fcd

Camera-Core 版本 1.0.0-beta11

2020 年 10 月 14 日

androidx.camera:camera-core:1.0.0-beta11 已发布。版本 1.0.0-beta11 包含以下提交。

新功能 - 支持 Android 11 CONTROL_ZOOM_RATIO API,用于在包含有效 CONTROL_ZOOM_RATIO_RANGE 的 Android 11 或更高版本设备上进行变焦。(I62cc6

Bug 修复

  • 修复了相机 ID 为非整数相机 ID 时发生的 NumberFormatException 问题。(Ib2228
  • UseCase 的创建不需要完成 CameraX 的初始化。所有特定于实现的配置都在 UseCase 附加到 Camera 实例时设置,对于公共 API 而言,这是 ProcessCameraProvider.bindToLifecycle()。(Ia5411
  • <UseCase>.getTargetRotation() 如果在附加到 Camera 实例之前调用,将返回 Surface.ROTATION_0,除非已在 Builder 或 UseCase 上设置了 targetRotation。(I80fcd

Camera-Core 版本 1.0.0-beta10

2020 年 9 月 23 日

androidx.camera:camera-core:1.0.0-beta10 已发布。版本 1.0.0-beta10 包含以下提交。

Bug 修复

  • 修复了图像捕获文件保存目的地验证中的错误。(I8c565, b/167697553

Camera-Camera2 版本 1.0.0-beta10

2020 年 9 月 23 日

androidx.camera:camera-camera2:1.0.0-beta10 已发布。版本 1.0.0-beta10 包含以下提交。

Bug 修复

Camera-Camera2 版本 1.0.0-beta09

2020 年 9 月 16 日

androidx.camera:camera-camera2:1.0.0-beta09 已发布。版本 1.0.0-beta09 包含以下提交。

API 变更

  • Camera2CameraInfo 在创建时接受 CameraInfo 实例,而不是提供静态方法,以便从中检索 Camera2 相关信息。(I5b844

Bug 修复

  • 修复了平板设备上的目标宽高比问题。当目标宽高比设置为 AspectRatio.RATIO_16_9 时,应选择 16:9 尺寸。(Ib7fcf, b/151969438
  • 抛出 InitializationException,使应用程序能够优雅地处理创建 CameraCharacteristics 时发生的 AssertionError。(I89c8c, b/160524721
  • 为 ExposureCompensation 添加了实验性接口。(If96c7

Camera-Core 版本 1.0.0-beta09

2020 年 9 月 16 日

androidx.camera:camera-core:1.0.0-beta09 已发布。版本 1.0.0-beta09 包含以下提交。

API 变更

  • 修复了 UseCaseGroup 上视口被标记为非空的问题。开发者应该能够在不设置视口的情况下创建视口。(Ie3d2e
  • ExposureCompensation 添加了实验性接口。(If96c7
  • 允许预览的任意目标旋转。转换信息通过新的 TranformationInfoListener 回调即时计算并返回给用户。(I21470

Bug 修复

  • 修复了某些设备上闪光灯无法关闭的问题。这发生在闪光灯模式设置为 FLASH_MODE_ON 拍照,并在闪光灯闪光时更改为 FLASH_MODE_OFF 的情况下。症状类似于手电筒模式已启用。(Ib4451, b/162568128
  • 如果扩展效果启用且供应商库实现需要在输出表面上进行特殊处理,则强制 PreviewView 使用 TextureView。(I0c3cc
  • 修复了将 activity/fragment 上下文传递给 ProcessCameraProvider.getInstance(Context) 时发生的 activity/fragment 泄漏问题。

已知问题

  • 当设置 ViewPort 时,ImageCapture 的裁剪矩形可能在 HAL 中旋转图像缓冲区的设备上不正确。这将在下一个版本中修复。

Camera-Camera2 版本 1.0.0-beta08

2020 年 8 月 19 日

androidx.camera:camera-camera2:1.0.0-beta08 已发布。版本 1.0.0-beta08 包含以下提交。

Bug 修复

  • 优化了 bindToLifecycle 以在主线程上快速运行。(I1d57e
  • DisplayOrientedMeteringPointFactory 接受 CameraInfo 实例而不是 CameraSelector,因此可以直接映射工厂将为哪个相机生成点。所有使用 DisplayOrientedMeteringPointFactory 的类也接受 CameraInfo 实例而不是 CameraSelector。(I400c1
  • 修复了自动分辨率宽高比尺寸分组问题,即当目标分辨率设置为 2016x1080 并且支持另一个 1920x1080 16:9 尺寸时,会选择 16:9 mod16 尺寸 (864x480)。(I53167, b/159363774
  • 修复了 CameraControl 由于竞态条件而无法工作的问题。(I2279f, b/152333890, b/160714166

Camera-Core 版本 1.0.0-beta08

2020 年 8 月 19 日

androidx.camera:camera-core:1.0.0-beta08 已发布。版本 1.0.0-beta08 包含以下提交。

API 变更

  • DisplayOrientedMeteringPointFactory 接受 CameraInfo 实例而不是 CameraSelector,因此可以直接映射工厂将为哪个相机生成点。所有使用 DisplayOrientedMeteringPointFactory 的类也接受 CameraInfo 实例而不是 CameraSelector。(I400c1

Bug 修复

  • 对于图像捕获,根据相机方向覆盖元数据中的水平翻转标志。(I28499
  • 当使用不从 Context.getApplicationContext() 返回 Application 对象的 Context 时,初始化不再崩溃。(I3d3c9, b/160817073

Camera-Camera2 版本 1.0.0-beta07

2020 年 7 月 22 日

androidx.camera:camera-camera2:1.0.0-beta07 已发布。版本 1.0.0-beta07 包含以下提交。

Bug 修复

  • 修复了 Android 5.0 旧版设备上预览画面拉伸的问题。(I0c03a
  • 排除了某些 JPEG 支持尺寸,这些尺寸会导致某些设备上出现所见即所得 (WYSIWYG) 问题。(Ib5128

Camera-Core 版本 1.0.0-beta07

2020 年 7 月 22 日

androidx.camera:camera-core:1.0.0-beta07 已发布。版本 1.0.0-beta07 包含以下提交。

API 变更

  • 合并 FIT_CENTERFIT_STARTFIT_END 拟合样式与 FITFIT 意味着返回的裁剪矩形将是最大可能的传感器矩形。(Ia73c3
  • 预览的裁剪矩形由视口配置。只有裁剪矩形覆盖的区域才能对最终用户可见。(I142a4

Bug 修复

  • 修复了 Android 5.0 旧版设备上预览画面拉伸的问题。(I0c03a
  • 修复了解除绑定用例时 ConcurrentModificationException 异常问题。(I371c0

Camera-Camera2 版本 1.0.0-beta06

2020 年 6 月 24 日

androidx.camera:camera-camera2:1.0.0-beta06 已发布。版本 1.0.0-beta06 包含以下提交。

API 变更

  • 添加了用于按相机 ID 和 CameraCharacteristics 过滤相机的实验性接口。(I28f61

Bug 修复

  • 修复了三星 Galaxy S7 上 startFocusAndMetering 无法成功对焦的问题。(If3be7, b/159039233
  • 修复了退出应用程序后相机无法关闭的问题。(I7a7b3
  • 修复了使用 PreviewView 的 SurfaceView 实现时,重复切换相机导致预览中断的问题。(I920ce
  • CameraControl#startFocusAndMetering 如果指定的 MeteringPoint 无法生成有效的测光矩形,将失败。(Id53ce

Camera-Core 版本 1.0.0-beta06

2020 年 6 月 24 日

androidx.camera:camera-core:1.0.0-beta06 已发布。版本 1.0.0-beta06 包含以下提交。

API 变更

  • 添加了用于按相机 ID 和 CameraCharacteristics 过滤相机的实验性接口。(I28f61

Bug 修复

  • CameraX 现在可以通过 ProcessCameraProvider#configureInstance() 进行配置,然后再调用 ProcessCameraProvider#getInstance()。这允许自定义 CameraXConfig,而无需在应用程序的 Application 类中实现 CameraXConfig.Provider。(Ia1a8d
  • CameraControl#startFocusAndMetering 如果指定的 MeteringPoint 无法生成有效的测光矩形,将失败。(Id53ce

Camera-Camera2 版本 1.0.0-beta05

2020 年 6 月 10 日

androidx.camera:camera-camera2:1.0.0-beta05 已发布。版本 1.0.0-beta05 包含以下提交。

Bug 修复

  • 修复了在手机处于勿扰模式时初始化 CameraX 导致应用程序启动崩溃的问题。InitializationException 包含 CameraUnavailableException,它将被设置为初始化结果的 ListenableFuture,而不是使应用程序崩溃。(I9909a, b/149413835
  • 修复了在 CONTROL_AF_STATE 为 null 的设备上调用 startFocusAndMetering 时崩溃的问题。(Ife55e, b/157084254

Camera-Core 版本 1.0.0-beta05

2020 年 6 月 10 日

androidx.camera:camera-core:1.0.0-beta05 已发布。版本 1.0.0-beta05 包含以下提交。

API 变更

  • 修复了在手机处于勿扰模式时初始化 CameraX 导致应用程序启动崩溃的问题。InitializationException 包含 CameraUnavailableException,它将被设置为初始化结果的 ListenableFuture,而不是使应用程序崩溃。(I9909a, b/149413835

Bug 修复

  • 更新了 setTargetResolutionsetTargetRotation 的 javadoc。(Iae16f

Camera-Camera2 版本 1.0.0-beta04

2020 年 5 月 27 日

androidx.camera:camera-camera2:1.0.0-beta04 已发布。版本 1.0.0-beta04 包含以下提交。

Bug 修复

  • 允许应用程序通过 Camera2Interop 设置任何 camera2 捕获请求参数,而不会导致崩溃。请注意,如果由于覆盖参数而出现问题,则在使用 Camera2Interop 覆盖参数时,无法保证稳定性或行为。(Ibe5a1, b/149103700
  • 在使用伪区域设置的设备上使用应用程序时,自动初始化功能已修复。(I3bef3, b/154767663
  • 将 Camera2CameraImpl 上与分离用例相关的错误日志转换为调试日志。(I1a565, b/154422490
  • 修复了即使闪光灯已闪光,拍摄的图像有时也太暗的问题。(I5d9fa, b/149729613
  • 修复了 ImageProxy 中来自 ImageCapture 的缓冲区未重绕的错误。(I0c455, b/153249512
  • 修复了仅绑定 ImageCapture 时的问题:(1) 无法以 MAX_QUALITY 拍照;(2) 自动曝光不工作导致图像质量差。(I17782, b/145326998
  • 改进了当 CameraX 被另一个进程或代码路径抢占相机时,重新打开相机的可靠性。(I1fbc3, b/153714651

Camera-Core 版本 1.0.0-beta04

2020 年 5 月 27 日

androidx.camera:camera-core:1.0.0-beta04 已发布。版本 1.0.0-beta04 包含以下提交。

API 变更

  • 添加了一个实验性 API CameraXConfig.Builder#setSchedulerHandler(),用于设置 CameraX 相机堆栈内部使用的处理程序。此新 API 与 CameraXConfig.Builder#setCameraExecutor() 结合使用,应能完全控制 CameraX 相机堆栈使用的线程。(I7bf32, b/121160431

Bug 修复

  • 修复了 ImageAnalysis 中当 ImageProxyImageReaderProxy 关闭后被访问时崩溃的问题。这也使得 Analyzer 收到的所有 ImageProxy 都必须在 ImageReaderProxy 关闭之前关闭。(I4b299, b/145956416, b/154155377, b/156357269
  • PreviewView#createSurfaceProvider() 中删除了 CameraInfo 参数,PreviewView 现在内部从 SurfaceRequest 中检索它。(If18f0, b/154652477
  • 在使用伪区域设置的设备上使用应用程序时,自动初始化功能已修复。(I3bef3, b/154767663
  • 修复了即使闪光灯已闪光,拍摄的图像有时也太暗的问题。(I5d9fa, b/149729613
  • 修复了 ImageAnalysis 的问题,即多次调用 setAnalyzer/clearAnalyzer 导致分析器无法接收图像进行分析。(I6169f, b/151605317, b/153514544
  • 修复了 ImageProxy 中来自 ImageCapture 的缓冲区未重绕的错误。(I0c455, b/153249512
  • 修复了 CameraManager 返回的支持列表中第一个相机未始终被选中的问题。(I4c624, b/153418028
  • 修复了因设置 Preview.SurfaceProvider 未释放之前请求的表面而导致的间歇性崩溃。 “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation”I8e4e7, b/155936225

Camera-Camera2 版本 1.0.0-beta03

2020 年 4 月 15 日

androidx.camera:camera-camera2:1.0.0-beta03 已发布。版本 1.0.0-beta03 包含以下提交。

Bug 修复

  • 修复以支持 camera-core 的发布。

Camera-Core 版本 1.0.0-beta03

2020 年 4 月 15 日

androidx.camera:camera-core:1.0.0-beta03 已发布。版本 1.0.0-beta03 包含以下提交。

Bug 修复

  • 修复了 beta03 中的回退问题,即调用不带 UseCasebindToLifecycle() 会导致抛出异常。这阻止了在不绑定 UseCase 的情况下检索 Camera

Camera-Camera2 版本 1.0.0-beta02

2020 年 4 月 1 日

androidx.camera:camera-camera2:1.0.0-beta02 已发布。版本 1.0.0-beta02 包含以下提交。

Bug 修复

  • 修复了 ImageCapture 产生的 ImageProxyImageInfo.getRotationDegrees() 与 EXIF 方向旋转值不匹配的问题。(Id4281, b/150802561
  • 不再需要在 build.gradle 中明确指定 CameraX 依赖项的顺序才能使用默认的 CameraX/Camera2 实现。对于需要声明严格依赖项的情况,所有 CameraX 依赖项现在都可以包含在构建文件中。(I46e88
  • 修复了显示尺寸小于 640x480 的设备上发生的 IllegalArgumentException 问题。(Ife3f2, b/150506192
  • 修复了 bindToLifecycle,使其仅在成功绑定时才修改 UseCase。此前,在调用 bindToLifecycle 进行分辨率计算时,UseCase 会被更新。现在它不再需要更新 UseCase 来进行计算。(I78d9e

Camera-Core 版本 1.0.0-beta02

2020 年 4 月 1 日

androidx.camera:camera-core:1.0.0-beta02 已发布。版本 1.0.0-beta02 包含以下提交。

Bug 修复

  • 修复了 ImageCapture 产生的 ImageProxyImageInfo.getRotationDegrees() 与 EXIF 方向旋转值不匹配的问题。(Id4281, b/150802561
  • 修复了 bindToLifecycle,使其仅在成功绑定时才修改 UseCase。此前,在调用 bindToLifecycle 进行分辨率计算时,UseCase 会被更新。现在它不再需要更新 UseCase 来进行计算。(I78d9e
  • 修复了调用 Preview.setSurfaceProvider() 多次后,预览用例的捕获会话未在预览表面更改时更新的问题。

Camera-Camera2 版本 1.0.0-beta01

2020 年 2 月 26 日

androidx.camera:camera-camera2:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含以下提交。

Bug 修复

  • SurfaceRequest.setSurface(Surface) 重命名为 SurfaceRequest.provideSurface(Surface),并将 SurfaceRequest.setWillNotComplete() 重命名为 SurfaceRequest.willNotProvideSurface()。(I224fe
  • 修复了使用 ImageCapture.setTargetRotation() 更改目标旋转值后,保存图像的宽高比不正确的问题。(I474ea, b/148763432
  • 通过保留设置默认 CameraXConfig 提供程序的标志,修复了启用 ProGuard 的应用程序变体的初始化问题。(I2d6c1

Camera-Core 版本 1.0.0-beta01

2020 年 2 月 26 日

androidx.camera:camera-core:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含以下提交。

API 变更

  • SurfaceRequest.provideSurface() 上的 ListenableFuture 替换为 ExecutorCallback。这简化了 API,不再需要在 provideSurface() 上处理异常,并强制 provideSurface() 回调不能取消。这是为了防止在旧设备上因过早释放 Surface 导致崩溃。SurfaceRequest.Result 对象现在用于跟踪 SurfaceRequest 如何使用所提供的 Surface。(I7854b
  • SurfaceRequest.setSurface(Surface) 重命名为 SurfaceRequest.provideSurface(Surface),并将 SurfaceRequest.setWillNotComplete() 重命名为 SurfaceRequest.willNotProvideSurface()。(I224fe

Bug 修复

  • 修复了使用 ImageCapture.setTargetRotation() 更改目标旋转值后,保存图像的宽高比不正确的问题。(I474ea, b/148763432
  • 通过保留设置默认 CameraXConfig 提供程序的标志,修复了启用 ProGuard 的应用程序变体的初始化问题。(I2d6c1
  • 更新了闪光模式 API 的文档,以包含可能的取值。(I4a3ec

Camera-Camera2 1.0.0-alpha10 版

2020 年 2 月 10 日

androidx.camera:camera-camera2:1.0.0-alpha10 已发布。1.0.0-alpha10 版包含以下提交

Bug 修复

  • 通过确保 Surface 仅在 Camera2 使用期间保留,提高了 INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY 设备上的稳定性。(I9dac2
  • 通过正确调整 CONTROL_AE_TARGET_FPS_RANGE,修复了 LEGACY 设备上预览曝光不足的问题。(1224638

Camera-Core 1.0.0-alpha10 版

2020 年 2 月 10 日

androidx.camera:camera-core:1.0.0-alpha10 已发布。1.0.0-alpha10 版包含以下提交

API 变更

  • 更新了 ImageCapture,允许将图像保存到 UriOutputStream。将重载的 takePicture 方法合并为一个。更新了测试应用,使用 Uri 作为规范示例。(Ia3bec
  • Preview.PreviewSurfaceProvider 已重命名为 Preview.SurfaceProviderSurfaceProvider 不再要求开发者创建自己的 ListenableFuture,现在通过新的 SurfaceRequest 对象提供 SurfacePreview.getPreviewSurfaceProvider() 方法已被移除,因为当 PreviewPreviewView 等其他类配对使用时,它可能被误用。(I20105
  • Preview 添加了 getTargetRotation()getTargetName()。(Iceee7
  • ImageAnalysis 中添加了 getTargetRotation()getBackpressureStrategy()getImageQueueDepth()。(I9d6d9
  • ImageCapture() 中添加了 getTargetRotation()getCaptureMode()。(I5bc17
  • 以前在 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError() 中传递的参数,现在已被一个单独的参数 ImageCaptureException 替换,该参数仍包含以前传递的所有信息。
  • 以前在 ImageCapture.OnImageSavedCallback.onImageSaved() 中传递的文件参数已被移除。(I750d2
  • PreviewImageCapture 类现在被标记为 final。(I2500b
  • API 已更新,CameraInfogetZoomRatio()getMaxZoomRatio()getMinZoomRatio()getLinearZoom() 方法合并为 getZoomState(),后者返回一个 ZoomState 实例。(Ib19fe
  • CameraXConfig 中移除了 API 字段 OPTION_TARGET_CLASSOPTION_TARGET_NAME,因为它们仅供内部库使用。移除了 CameraXConfig.Builder 的构造函数。(I96912
  • 移除了应用必须扩展 Application 才能初始化 CameraX 的要求。只要应用程序的 build.gradle 中包含 camera-camera2 工件,CameraX 就会使用默认的 Camera2 配置进行初始化。(I58ff5) (b/146923574

Camera-Camera2 1.0.0-alpha09 版

2020 年 1 月 22 日

androidx.camera:camera-camera2:1.0.0-alpha09 已发布。1.0.0-alpha09 版包含以下提交

API 变更

  • 添加 camera2 互操作路径以提取 Camera2 相机 ID。您可以使用 Camera2CameraInfo.extractCameraId()CameraInfo 中提取相机 ID。以下代码示例展示了如何使用此功能

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    Camera2CameraInfo 类需要 ExperimentalCamera2Interop 标记类。

Camera-Core 1.0.0-alpha09 版

2020 年 1 月 22 日

androidx.camera:camera-core:1.0.0-alpha09 已发布。1.0.0-alpha09 版包含以下提交

API 变更

  • SurfaceOrientedMeteringPointFactory 参数 useCaseForSurface 已重命名为 useCaseForAspectRatio,并扩展了参考文档。
  • FocusMeteringAction.Builder.from() 方法已被构造函数 FocusMeteringAction.Builder() 替换。
  • 移除了 DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float)。应用程序应使用接受 Display 参数的构造函数,并传入当前显示器。
  • 关于 MeteringMode 和 3A 标志以及 Display 参数的用法,改进了对焦和测光 API 的 Javadoc。
  • 扩展了 setZoomRatiosetLinearZoom 的参考文档。

错误修复

  • 修复了关闭后重新打开相机时导致“Precondition”检查失败的问题。
  • 修复了在使用手电筒和缩放 API 时可能发生的 ConcurrentModificationException
  • 修复了当 mod16 尺寸可用时,现在选择更接近请求分辨率的分辨率的问题。
  • startFocusMeteringcancelFocusMetering API 现在按文档所述运行,具有正确的时间,并在发生错误时可能返回错误。
  • 修复了在不支持特定尺寸的设备上,请求具有裁剪宽高比的特定目标分辨率时的问题。现在,如果可用,将选择足以限定原始请求的非裁剪尺寸的足够分辨率。

Camera-Camera2 1.0.0-alpha08 版

2019 年 12 月 18 日

androidx.camera:camera-camera2:1.0.0-alpha08 已发布。1.0.0-alpha08 版包含以下提交

已知问题

  • 并非所有 Camera2 捕获请求选项在使用 Camera2 互操作时都有效。如果请求的选项不受支持,会话将无法启动并可能发生如下错误:09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination

Bug 修复

  • 修复了在 API 级别 21 和 22 上旋转或切换相机后预览黑屏的问题。

API 变更

  • 实验性功能:添加了 Camera2 互操作路径以提取相机 ID。

Camera-Core 1.0.0-alpha08 版

2019 年 12 月 18 日

androidx.camera:camera-core:1.0.0-alpha08 已发布。1.0.0-alpha08 版包含以下提交

已知问题

  • 使用 PreviewViewCameraView 的应用程序可能会出现错误的宽高比预览。这在某些 FULL 设备(例如 Pixel2)上暂停或恢复后发生。

Bug 修复

  • 更新了 FocusMeteringActionCameraControl 的文档。
  • enableTorch()getTorchState() 实现了 TorchControl

API 变更

  • 隐藏了 IntDef 并将 IntDef 常量移到 IntDef 定义之外。
  • rotationDegrees 从类 OnImageCaptureCallback 移到 ImageInfo
  • rotationDegrees 从类 Analyzer 移到 ImageInfo

Camera-Camera2 1.0.0-alpha07 版

2019 年 12 月 4 日

androidx.camera:camera-camera2:1.0.0-alpha07 已发布。camera-camera2 1.0.0-alpha07 版包含以下提交

  • Camera2Config 现在可用于初始化和配置基于 Camera2 的 CameraX 实现。有关初始化中如何使用此功能的更多详细信息,请参见版本说明的camera-core 部分
  • Camera2 互操作功能现在被标记为实验性功能,并已移至单独的软件包 androidx.camera.camera2.interop.

Camera-Core 1.0.0-alpha07 版

2019 年 12 月 4 日

androidx.camera:camera-core:1.0.0-alpha07 已发布。camera-core 1.0.0-alpha07 版包含以下提交

请注意,在此 Alpha 版本中存在一些重大更改,因为我们正在为 Beta 版做准备。 我们建议您查看这些更改并在 CameraX Google 小组中分享您的任何反馈。对于在 Play 商店应用中使用 CameraX 的开发者,我们建议在正式 Beta 版本发布之前不要升级应用程序中的库。

API 变更

  • 重要提示:CameraX 初始化已更改。应用程序应实现 CameraXConfig.Provider,并使用 androidx.camera.camera2 提供的默认 Camera2Config。典型用法是

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • CameraX 类已被移除。以前由 CameraX 类调用提供的 bindToLifecycle()unbind()unbindAll()isBound()hasCamera() 现在可通过 ProcessCameraProvider 获得。

  • 通过静态方法 ProcessCameraProvider.getInstance() 异步获取 ProcessCameraProvider 的每个进程实例,该方法返回一个可监听的 Future,在完成时提供 ProcessCameraProvider。这里在 onCreate() 中显示了典型用法。您可以在 Activity 生命周期后期调用 getInstance(),以将初始化延迟推迟到稍后时间(例如,当用户操作打开相机 UI 时)。

    import androidx.camera.lifecycle.ProcessCameraProvider
    import com.google.common.util.concurrent.ListenableFuture
    
    class MainActivity : AppCompatActivity() {
       private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
       override fun onCreate(savedInstanceState: Bundle?) {
           cameraProviderFuture = ProcessCameraProvider.getInstance(this);
      }
    
  • 可以向 getInstance() 返回的 ListenableFuture 添加监听器。这确保可以从 Future 中检索相机提供程序,而无需阻塞 Future.get()

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • 相机选择现在通过相机选择器完成,而不是按用例

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle 接收生命周期所有者、相机选择器和用例,然后将它们绑定到给定的生命周期所有者,并为所选相机运行。

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • 用例“Config”类已移除。而是直接构建用例,并在每个用例构建器上设置选项。例如

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Preview 用例已更新,以接受由应用程序创建和管理的 surface,以确保 Android 最佳实践。强烈建议使用 camera-view 软件包中提供的 PreviewView 视图类。

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • 有关附加应用管理 surface 的文档,请参阅相关文档。在这种情况下,应用程序管理 surface 的生命周期。

  • 重要提示ImageAnalysis 分析器方法实现在使用完接收到的图像后,必须在图像上调用 image.close()。否则,可能无法接收新图像,或者相机可能会根据背压设置而停滞。有关详细信息,请参阅参考文档

  • ImageAnalysis ImageReaderMode 现在已更改为背压策略 intdef

  • ImageProxy.getImage() 被标记为实验性功能。应用程序应通过 @androidx.camera.core.ExperimentalGetImage 等方式注释用法

  • 已移除 AnalyzerUIThread 注解要求。

  • 添加了 ImageAnalysis.clearAnalyzer() 函数以移除分析器。

  • 具有多个方法的监听器已重命名为 Callback

    • ImageCapture.OnImageCapturedListener 现在是 ImageCapture.OnImageCapturedCallback
    • ImageCapture.OnImageSavedListener 现在是 ImageCapture.OnImageSavedCallback
    • VideoCapture.OnVideoSavedListener 现在是 VideoCapture.OnVideoSavedCallback
  • 枚举已更改为 IntDef

  • 已添加缩放控制

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • 添加了 CameraInfo.hasFlashUnit() 以确定是否存在闪光/手电筒硬件。

  • CameraInfo.isFlashAvailable() 已移除。手电筒会覆盖闪光功能。更多详细信息包含在参考文档中。

  • ImageCapture.Metadata 字段已替换为 get/set/is 访问器。

  • startFocusMeteringcancelFocusMetering 现在返回表示调用异步操作的 ListenableFutures

  • MeteringPoints 现在充当测光操作的句柄,由工厂生成。应用程序应使用现有工厂而不是自定义工厂。

已修复问题

  • 修复了在恢复(之前暂停的拍照操作待完成)后拍照时的问题。
  • 已知问题:CameraControl.enableTorch() 功能正常,但返回的 ListenableFuture<Void> 始终是即时 complete(success) 的 Future,即使没有闪光灯单元。未来的版本将修复此问题,使其行为最终如下:当没有闪光灯单元时,enableTorch(true) 会立即失败(不会向 CaptureSession 发送请求),并且 TorchState 保持关闭。
  • 已知问题:startFocusAndMeteringcancelFocusAndMetering 启动和取消对焦测光,但返回立即 completed (success) 的 Future,不代表文档所述的行为。ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() 返回的 FocusMeteringResult 是一个伪结果,其 isFocusSuccessful() 始终为“false”,与预期和文档所述行为不同。
  • 已知问题:正在开发用于 PreviewView 触摸事件的测光点工厂。目前,连接自定义管理 surface 的应用可以使用现有测光点工厂,否则 PreviewView 不提供触摸对焦功能。

Camera-Camera2 和 Camera-Core 1.0.0-alpha06 版

2019 年 10 月 9 日

androidx.camera:camera-camera2:1.0.0-alpha06androidx.camera:camera-core:1.0.0-alpha06 已发布。这些是 包含在 camera-camera2:1.0.0-alpha06 中的提交,这些是 包含在 camera-core:1.0.0-alpha06 中的提交

新功能

宽高比设置的更改

  • 添加了 setTargetAspectRatioMode(),并接受枚举参数。这会将宽高比模式设置为 RATIO_4_3RATIO_16_9,而不是任意宽高比。这更准确地反映了相机只提供某些宽高比,而不是任意宽高比的事实。
    • 目前,可用的比例仅为 16:9 和 4:3。在 1:1 的情况下,只有某些设备才能从相机获得此功能,而且分辨率有限。设计 1:1 界面或处理的应用程序应使用更灵活的 16:9 或 4:3 选项,并裁剪显示或处理子区域。
    • 这些宽高比旨在利用最大传感器区域。
  • getTargetAspectRatio() 已添加到用例配置 API 中,返回用例输出的目标宽高比。
  • ImageCapture 的方法 setTargetAspectRatio(Rational aspectRatio) 已更改为 setTargetAspectRatioCustom(Rational aspectRatio)。设置后,ImageCapture 输出会相应地裁剪。

执行器 API

  • 以下函数接受一个执行器参数,允许应用程序控制函数运行在哪个执行器上。
    • Preview.setOnPreviewOutputUpdateListener() API。如果该函数没有执行器,则在主线程上执行。
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

CameraInfo 添加了检查闪光灯可用性和传感器旋转 API

  • 添加了 CameraInfogetCameraInfo 方法,允许应用程序检查是否存在面向镜头的 CameraInfo 以及该相机上是否有闪光灯可用。例如

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • 添加了 CameraInfo.getSensorRotationDegrees()。它提供了相机传感器相对于设备自然方向的方位,或为了方便起见,相对于由 Surface 旋转描述的方向(描述相对于自然方向的方位)。

API 更改和错误修复

  • 宽高比:对于每个用例,应用程序应仅调用 setTargetResolution()setTargetAspectRatio() 中的一个。在同一构建器上同时调用两者将返回错误。
    • 通常建议根据应用程序的 UI 设计使用 setTargetAspectRatio()。特定分辨率基于用例。例如,预览接近屏幕分辨率,而图像捕获提供高分辨率静态图像。有关更多信息,请参阅自动分辨率表
    • 对于更具体的情况,例如需要最小(节省计算)或最大分辨率(处理详细信息)时,请使用 setTargetResolution()
  • 执行器 API:从用例配置 API 中移除了 setCallbackHandler() 调用。相反,应用程序可以在设置回调的各种其他 API 中将执行器设置为参数。
  • 更新了各种函数的空注解。
  • 修复了打开相机时抛出 java.lang.IllegalStateException at Camera$StateCallback.onError 的问题。
  • 修复了当应用程序请求更大或默认分辨率时,分辨率选择过小(小于 640x480)导致预览图像模糊或出现块状的问题。需要较小分辨率的应用程序可以明确请求它们。
  • 修复了从启动另一个相机应用程序的 intent 返回后相机显示黑屏(无法启动相机)的问题。
  • 修复了应用程序反复启动或停止时抛出以下错误的 bug:java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • 修复了禁用 ImageAnalysis 时发生的以下错误:java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • 为相机断开连接流程添加了额外的测试。
  • 提高了连续运行相机测试时测试系统的鲁棒性。

Camera-Camera2 和 Camera-Core 1.0.0-alpha05 版

2019 年 9 月 5 日

androidx.camera:camera-camera2:1.0.0-alpha05androidx.camera:camera-core:1.0.0-alpha05 已发布。这些是 包含在 camera-camera2:1.0.0-alpha05 中的提交,这些是 包含在 camera-core:1.0.0-alpha05 中的提交

  • API 更改:重命名了用例错误变量

    • ImageCapture.UseCaseError 已重命名为 ImageCapture.ImageCaptureError
    • VideoCapture.UseCaseError 已重命名为 VideoCapture.VideoCaptureError
  • 添加了带有点击对焦 API 的 CameraControl API

    • 添加了 API 以从 CameraX 获取指定镜头朝向相机的 CameraControl

      CameraX.getCameraControl(LensFacing lensFacing)

    • 添加了 MeteringPointFactoryMeteringPointMeteringModeFocusMeteringAction 以运行点击对焦

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • 添加了 CameraControl 的 API 以启动和取消对焦测光

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • 添加了 Metering Point Factories 的 API,这些 API 协助将点击坐标转换为传感器坐标,基于视图类

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • 强制在主 (UI) 线程上调用以下方法,如果未在主线程上调用,则抛出 IllegalStateException。未来版本将允许在其他线程上使用并确保序列化。

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • 各种配置设置现在接受空参数,相应的 getter 可能会返回 null。

  • 修复了在不支持 AF/AE/AWB 设置的模拟器上测试时出现的问题。

  • 修复了图像分析时旋转导致崩溃的 bug。

  • 修复了启动时(无相机数据)预览显示黑色,旋转或在前置和后置摄像头之间切换后出现的问题。

  • 移除了对多个并发图像分析用例的测试。为确保兼容性,应用程序应仅附加单个图像分析用例。

  • 在 camera-testing 套件中添加了针对虚拟相机的初始 robolectric 测试 (WIP)。

  • Camera2Inititalizer 测试已移除,因为其覆盖范围不明确/具有误导性。

Camera-Camera2 和 Camera-Core 1.0.0-alpha04 版

2019 年 8 月 7 日

androidx.camera:camera-camera2:1.0.0-alpha04androidx.camera:camera-core:1.0.0-alpha04 已发布。1.0.0-alpha04 版包含以下提交

新功能

宽高比和分辨率选择的更改

CameraX 的目标是成功初始化相机会话。这意味着 CameraX 会根据设备功能在分辨率/宽高比上进行折衷,以启动捕获会话为首要目标,因此可能无法满足精确请求。这可能是由于

  • 设备不支持请求的分辨率
  • 兼容性问题,例如在 LEGACY 设备上,必须使用某些分辨率才能正常运行
  • 在某些设备上,某些格式仅在某些宽高比下可用
  • 倾向于 JPEG 或视频编码的“最近 mod16”。请参阅 CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP

尽管 CameraX 创建和管理会话,但您应始终检查代码中用例输出的返回图像尺寸并进行相应调整。

已对设置分辨率和宽高比进行了一些更改,旨在使 API 更清晰

  • 预览用例现在被认为在未设置时具有默认的 4:3 宽高比。
  • 当 CameraX 内部根据设备功能考虑请求分辨率和宽高比的更改时,它首先尝试保持相同的宽高比(由任何 setTargetAspectRatiosetTargetResolution 调用确定)
  • 分辨率的“最近 mod16”版本被认为是相同的宽高比。

ImageAnalysis 非阻塞模式

  • ImageReaderMode.ACQUIRE_LATEST_IMAGE 的行为现在是非阻塞的。它获取队列中的最新图像,但持续丢弃未使用的图像,以避免相机管道阻塞。
  • 分析器可以无限期地持有一个图像,而不会使管道停滞。
  • 如果应用程序提供了一个会阻塞的执行器,则 ImageAnalysis 用例会阻塞。
  • 内部设置的默认执行器行为是非阻塞执行器。

Bug 修复

  • 修复了在没有自动对焦、自动曝光和自动白平衡的设备上捕获图像时等待 3A 收敛的超时问题
  • 修复了使用 ImageCapture 快速拍照时的问题。修复了错误:java.lang.IllegalStateException: maxImages (2) has already been acquired
  • 修复了未为用例调用 setLensFacing 导致 java.lang.IllegalArgumentException: Unable to get camera ID for use case 的问题。
  • 修复了 LEGACY 设备需要特定宽高比作为最大 JPEG 分辨率的问题
  • 修复了在相机打开时将应用置于后台的问题
  • 修复了 API < 25 上移除错误 checkAndUpdateEglState: invalid current EGLDisplay 的问题
  • 修复了在启用和启动扩展后解绑预览的问题
  • camera-view 和 camera-extensions 的构建工件现在发布为 alpha 版本

Camera-Camera2 和 Camera-Core 1.0.0-alpha03 版

2019 年 7 月 2 日

androidx.camera:camera-core:1.0.0-alpha03androidx.camera:camera-camera2:1.0.0-alpha03 已发布。1.0.0-alpha03 版包含以下提交

API 变更

  • 在 setTarget 配置调用中为“target”添加了 javadoc 澄清

Camera-Core

  • 修复了快速打开/关闭或绑定/解绑时未配置的 Input/Output Surface 崩溃问题
  • 迁移到新的 Futures 实现
  • 测试修复,实现更健壮的测试
  • 核心集成测试现在显示照片捕获时间
  • 为 Executors 开发了内部兼容类
  • 计时测试应用捕获图像等待上一个完成并提高了稳定性

扩展

  • 添加了版本检查
  • 额外测试覆盖率 - 扩展事件回调
  • 改进了内部对应图像和元数据
  • 修复了测试应用中的模式切换问题

Camera-Camera2 和 Camera-Core 1.0.0-alpha02 版

2019 年 6 月 5 日

androidx.camera:camera-core:1.0.0-alpha02androidx.camera:camera-camera2:1.0.0-alpha02 已发布。1.0.0-alpha02 版包含以下提交

错误修复

  • 修复了使用模拟器时除以零的问题
  • 修复了在某些设备上快速拍照同时快速解绑和重新绑定用例时发生的 NullPointerException/Surface Abandoned 错误。
  • 修复了内部问题,确保捕获请求更新一致地影响所有 surface
  • 在新应用实例中重新启动用例时提高了稳定性
  • 内部架构更改,为支持 API 中的执行器做准备
  • 对 CameraX 类和生命周期管理进行了额外的 Javadoc 澄清
  • 为 Antelope 性能测试应用添加了 instrumented 测试
  • 移除了应用 Proguard 配置中对“-keepattributes Signature”的需求

Camera-Camera2 和 Camera-Core 1.0.0-alpha01

2019 年 5 月 7 日

androidx.camera:camera-core:1.0.0-alpha01androidx.camera:camera-camera2:1.0.0-alpha01 已发布。1.0.0-alpha01 版包含以下提交

Camera-Lifecycle 1.0.0-beta11 版

2020 年 10 月 14 日

androidx.camera:camera-lifecycle:1.0.0-beta11 已发布。1.0.0-beta11 版包含以下提交。

Bug 修复

  • <UseCase>.getTargetRotation() 如果在附加到 Camera 实例之前调用,将返回 Surface.ROTATION_0,除非已在 Builder 或 UseCase 上设置了 targetRotation。(I80fcd

Camera-Lifecycle 1.0.0-beta10 版

2020 年 9 月 23 日

androidx.camera:camera-lifecycle:1.0.0-beta10 已发布。1.0.0-beta10 版包含以下提交。

Bug 修复

Camera-Lifecycle 1.0.0-beta09 版

2020 年 9 月 16 日

androidx.camera:camera-lifecycle:1.0.0-beta09 已发布。1.0.0-beta09 版包含以下提交。

Camera-Lifecycle 1.0.0-beta08 版

2020 年 8 月 19 日

androidx.camera:camera-lifecycle:1.0.0-beta08 已发布。1.0.0-beta08 版包含以下提交。

Bug 修复

  • 当使用不从 Context.getApplicationContext() 返回 Application 对象的 Context 时,初始化不再崩溃。(I3d3c9, b/160817073

Camera-Lifecycle 1.0.0-beta07 版

2020 年 7 月 22 日

androidx.camera:camera-lifecycle:1.0.0-beta07 已发布。1.0.0-beta07 版包含以下提交。

Camera-Lifecycle 1.0.0-beta06 版

2020 年 6 月 24 日

androidx.camera:camera-lifecycle:1.0.0-beta06 已发布。1.0.0-beta06 版包含以下提交。

API 变更

  • CameraX 现在可以通过 ProcessCameraProvider#configureInstance() 在调用 ProcessCameraProvider#getInstance() 之前进行配置。这允许自定义 CameraXConfig,而无需在应用程序的 Application 类中实现 CameraXConfig.Provider。(Ia1a8d

Camera-Lifecycle 1.0.0-beta05 版

2020 年 6 月 10 日

androidx.camera:camera-lifecycle:1.0.0-beta05 已发布。1.0.0-beta05 版包含以下提交。

Bug 修复

  • 修复了在手机处于勿扰模式时初始化 CameraX 导致应用程序启动崩溃的问题。InitializationException 包含 CameraUnavailableException,它将被设置为初始化结果的 ListenableFuture,而不是使应用程序崩溃。(I9909a, b/149413835

Camera-Lifecycle 1.0.0-beta04 版

2020 年 5 月 27 日

androidx.camera:camera-lifecycle:1.0.0-beta04 已发布。1.0.0-beta04 版包含以下提交。

Camera-Lifecycle 1.0.0-beta03 版

2020 年 4 月 15 日

androidx.camera:camera-lifecycle:1.0.0-beta03 已发布。1.0.0-beta03 版包含以下提交。

Bug 修复

  • 修复了 beta03 中的回退问题,即调用不带 UseCasebindToLifecycle() 会导致抛出异常。这阻止了在不绑定 UseCase 的情况下检索 Camera
  • 修复以支持 camera-core 的发布。

Camera-Lifecycle 1.0.0-beta01 版

2020 年 2 月 26 日

androidx.camera:camera-lifecycle:1.0.0-beta01 已发布。1.0.0-beta01 版包含以下提交。

Bug 修复

  • 修复了文档,以指出在初始化期间获取 ProcessCameraProvider 时,会使用默认配置,并且扩展 Application 是可选的。(I5e395

Camera-Lifecycle 1.0.0-beta02 版

2020 年 4 月 1 日

androidx.camera:camera-lifecycle:1.0.0-beta02 已发布。1.0.0-beta02 版包含以下提交。

Bug 修复

  • 更新以支持 camera-camera2:1.0.0-beta02camera-core:1.0.0-beta02 工件中的错误修复。

Camera-Lifecycle 1.0.0-alpha10 版

2020 年 2 月 10 日

androidx.camera:camera-lifecycle:1.0.0-alpha10 已发布。1.0.0-alpha10 版包含以下提交

API 变更

  • 为 BindToLifecycle、unbind 和 unbindAll 方法添加了 @MainThread 注解。(I990d2

Camera-Lifecycle 1.0.0-alpha03 版

2020 年 1 月 22 日

androidx.camera:camera-lifecycle:1.0.0-alpha03 已发布。1.0.0-alpha03 版包含以下提交

更新

  • 各种修复和更新,以支持 Camera Core 和 Camera2 的更改。

Camera-Lifecycle 1.0.0-alpha02 版

2019 年 12 月 18 日

androidx.camera:camera-lifecycle:1.0.0-alpha02 已发布。1.0.0-alpha02 版包含以下提交

依赖项更改

  • 更新为使用 androidx.camera:camera-core:1.0.0-alpha08

Camera-Lifecycle 1.0.0-alpha01 版

2019 年 12 月 4 日

androidx.camera:camera-lifecycle:1.0.0-alpha01 已发布。camera-lifecycle 1.0.0-alpha01 版包含以下提交

API 备注

  • 添加了 camera-lifecycle 工件,提供了 LifeCycleCameraProvider 接口,以及一个名为 ProcessCameraProvider 的实现,该实现提供了核心中先前 CameraX 类的许多功能,并通过 getInstance() 方法获取。
  • 应用程序应包含 camera-lifecycle 库才能使用 CameraX。
  • 有关如何使用 ProcessCameraProvider 执行 CameraX 初始化的信息,请参阅 camera-core 部分中的注释。

Camera-Extensions 和 Camera-View 1.0.0 版

1.0.0-alpha32 版

2021 年 12 月 15 日

androidx.camera:camera-extensions:1.0.0-alpha32androidx.camera:camera-view:1.0.0-alpha32 已发布。1.0.0-alpha32 版包含以下提交。

API 变更

Bug 修复

  • 禁止应用在绑定 VideoCapture 时启用扩展模式。CameraX Extensions 仅支持 ImageCapturePreviewVideoCapture 尚不支持。如果应用绑定 VideoCapture 并启用任何扩展模式,将抛出 IllegalArgumentException。(I0d87b
  • 当结果集为空时,CameraSelector#filter 不再抛出 IllegalArgumentException。(I27804
  • ExtensionsManager#getInstance API 重命名为 getInstanceAsync,因为它返回 ListenableFuture。函数名中的 Async 后缀可以清楚地表明它是一个异步函数。(I279d2
  • ExtensionsManager#getEstimatedCaptureLatencyRange API 中移除了分辨率参数,因为用户无法知道 ImageCapture 用例支持哪些尺寸,也无法区分返回的延迟信息是针对最大捕获输出尺寸还是输入分辨率参数。(I74bb2
  • ExtensionsManager 函数的 CameraProvider 参数移至 getInstance() API。这样用户在每次调用 ExtensionsManager 函数时都不需要输入 CameraProvider 参数。(Ic7e48

1.0.0-alpha31 版

2021 年 11 月 17 日

androidx.camera:camera-extensions:1.0.0-alpha31androidx.camera:camera-view:1.0.0-alpha31 已发布。1.0.0-alpha31 版包含以下提交。

API 变更

  • 将 CameraSelector#filter 添加到公共 API,用于根据 CameraSelector 过滤 CameraInfos 列表。(I105d0

Bug 修复

  • 修复了在某些设备上快速切换扩展模式时崩溃的问题。(Iebbef

1.0.0-alpha30 版

2021 年 10 月 13 日

androidx.camera:camera-extensions:1.0.0-alpha30androidx.camera:camera-view:1.0.0-alpha30 已发布。1.0.0-alpha30 版包含以下提交。

API 变更

  • 为所有 CameraX 类添加了 @RequiresApi(21) 注解,并从 AndroidManifest.xml 中删除了 minSdkVersion。这将允许 camera-core 轻松集成到 minSdkVersion 小于 21 但希望有条件地使用依赖于 API 21 及更高版本的代码路径的应用程序中。对于 minSdkVersion 为 21 或更高的任何应用程序,此更改无需操作。(Ie7f2e, b/200599470

Bug 修复

  • 修复了启用 proguard 时发生的 AbstractMethodError 问题。(Iae468, b/201177844

1.0.0-alpha29 版

2021 年 9 月 29 日

androidx.camera:camera-extensions:1.0.0-alpha29androidx.camera:camera-view:1.0.0-alpha29 已发布。1.0.0-alpha29 版包含以下提交。

API 变更

  • ExperimentalUseCaseGroup 注解已删除,因为这些 API 不再是实验性的。(I01ef5
  • 移除了 RotationProvider#removeAllListeners()。请改用 RotationProvider#removeListener(...)。(Id9d4a
  • 更新了 RotationReceiver 类:将 set/clear Listener 更改为 add/remove/removeAll,移除了默认使用主线程的 setListener 变体,并添加了方法的注解。(Ib1669

Bug 修复

  • 将 ExtensionMode#BEAUTY 重命名为 FACE_RETOUCH,以正确表示扩展模式所做的操作。(I61f54, b/198515274
  • 修复了在同一 Activity 中使用多个 CameraController 和 PreviewView 时,相机意外关闭的问题。(Ibfd18, b/197539358

1.0.0-alpha28 版

2021 年 8 月 18 日

androidx.camera:camera-extensions:1.0.0-alpha28androidx.camera:camera-view:1.0.0-alpha28 已发布。1.0.0-alpha28 版包含以下提交。

API 变更

  • ExperimentalUseCaseGroupLifecycle 注解已删除,因为这些 API 不再是实验性的。(I17b85
  • 重构 RotationListener 并将其重命名为 RotationProvider。它继续提供相同的功能,但 API 略有不同。(Idffc5
  • 将 TAP_TO_FOCUS_UNSUCCESSFUL 重命名为 TAP_TO_FOCUS_NOT_FOCUSED,将 TAP_TO_FOCUS_SUCCESSFUL 重命名为 TAP_TO_FOCUS_FOCUSED。将 OutputSize 设为 final。(I099fa

Bug 修复

  • 移除了已弃用的 <EffectName><UseCase>Extender 类、ExtensionsErrorListener 和相关的 ExtensionsManager API。(I3b8c3

1.0.0-alpha27 版

2021 年 7 月 21 日

androidx.camera:camera-extensions:1.0.0-alpha27androidx.camera:camera-view:1.0.0-alpha27 已发布。1.0.0-alpha27 版包含以下提交。

API 变更

  • 将 viewport API 从实验性阶段提升为正式 API。移除了 API 的实验性注解。(I717ea
  • CoordinateTransform#getTransform 重命名为 CoordinateTransform#transform 并更新 JavaDoc。(I864ae

Bug 修复

  • 修复了 PreviewView PERFORMANCE 模式与 Compose UI 一起使用时的拉伸问题。(Ie1137, b/183864890

1.0.0-alpha26 版

2021 年 6 月 30 日

androidx.camera:camera-extensions:1.0.0-alpha26androidx.camera:camera-view:1.0.0-alpha26 已发布。1.0.0-alpha26 版包含以下提交。

API 变更

  • 添加了一个新方法 CameraController#getTapToFocusState(),该方法公开了最新的点击对焦结果。(Iaccb0
  • 向 CameraController 添加更多 camera-core 功能:目标宽高比、目标分辨率、捕获模式、CameraControl 和自定义执行器的 getter/setter。(Iea8f2
  • 添加了一个 RotationReceiver 类,该类接收 Surface 旋转变化。这可用于在设备处于固定纵向/横向模式时设置目标旋转。(Ib278f
  • 在 ExtensionsManager 类中公开了新的 getEstimatedCaptureLatencyRange 公共 API。(I6a8ec
  • 弃用了 ExtensionsErrorListener。目前,此接口仅用于监视在启用扩展模式时是否缺少预览或图像捕获。CameraX 将自动添加额外的预览或图像捕获,使扩展功能正常工作。之后,此接口将不再报告错误。(I47d9e
  • 公开了新的 ExtensionsManager getInstance、isExtensionAvailable 和 getExtensionEnabledCameraSelector 公共 API,并弃用了旧的 <EffectName><UseCase>Extender 类和相关 API。(I329e6

1.0.0-alpha25 版

2021 年 6 月 2 日

androidx.camera:camera-extensions:1.0.0-alpha25androidx.camera:camera-view:1.0.0-alpha25 已发布。1.0.0-alpha25 版包含以下提交。

API 变更

  • ExperimentalCameraFilter API 现在已脱离实验阶段,成为正式 API。它们可以在不带注释 OptIn 的情况下使用。(I4bc94
  • 添加了一个在用例之间转换坐标的实用程序。示例用法:转换在 ImageAnalysis 用例中检测到的坐标,并在预览中突出显示检测到的对象。(I63ab1, b/137515129
  • 移除了 CameraViewCameraView 已被 CameraController 替换。请参阅迁移指南,了解如何迁移。:(Id5005

Bug 修复

  • ExperimentalUseCaseGroupLifecycle 替换为 ExperimentalUseCaseGroup。(I3b2ef, b/159033688

1.0.0-alpha24 版

2021 年 4 月 21 日

androidx.camera:camera-extensions:1.0.0-alpha24androidx.camera:camera-view:1.0.0-alpha24 已发布。1.0.0-alpha24 版包含以下提交。

Bug 修复

  • 将实验性 API 的注解 @Experimental 替换为 @RequiresOptIn。调用实验性 API 时,请使用 androidx.annotation.OptIn 而不是已弃用的 androidx.annotation.experimental.UseExperimental。(Iff226
  • 修复了三星 J5 Prime 上 PreviewView 拉伸的问题。(Ib10b6

Camera Extensions & View 1.0.0-alpha23 版

2021 年 3 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha23androidx.camera:camera-view:1.0.0-alpha23 已发布。1.0.0-alpha23 版包含以下提交。

API 变更

  • CameraView 正在弃用。请改用 LifecycleCameraController。请参阅迁移指南。(Idac2c
  • 添加了 FloatRange 注解到 setLinearZoom()。(I69971

Bug 修复

  • 将 camera-view 依赖项固定为依赖 1.0.0 工件。依赖 camera-view 将不再导致 gradle 的依赖项解析自动将 camera-core、camera-camera2 和 camera-lifecycle 升级到最新的 1.1.0 工件,尽管如果它们明确设置为使用 1.1.0,camera-view 仍然与这些工件兼容。(Ic8fa1, b/181599852
  • 修复了 PreviewView 中三星 A3 预览画面拉伸的问题。(Iacb30, b/180121821
  • 修复了相机未初始化之前无法设置相机选择器的问题。(Ic8bd0

Camera Extensions & View 1.0.0-alpha22 版

2021 年 2 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha22androidx.camera:camera-view:1.0.0-alpha22 已发布。1.0.0-alpha22 版包含以下提交。

API 变更

Bug 修复

  • 修复了 ExtensionsErrorListener 在仅绑定 Preview 或 ImageCapture 时报告错误的问题。(I5ae39

Camera Extensions & View 1.0.0-alpha21 版

2021 年 1 月 27 日

androidx.camera:camera-extensions:1.0.0-alpha21androidx.camera:camera-view:1.0.0-alpha21 已发布。1.0.0-alpha21 版包含以下提交。

发布以支持其他相机库工件。

Camera Extensions & View 1.0.0-alpha20 版

2020 年 12 月 16 日

androidx.camera:camera-extensions:1.0.0-alpha20androidx.camera:camera-view:1.0.0-alpha20 已发布。1.0.0-alpha20 版包含以下提交。

发布以支持其他相机库工件。

Camera-Extensions & Camera-View 1.0.0-alpha19 版

2020 年 11 月 11 日

androidx.camera:camera-extensions:1.0.0-alpha19androidx.camera:camera-view:1.0.0-alpha19 已发布。1.0.0-alpha19 版包含以下提交。

Bug 修复

  • 在 camera-view 中引入了 @ExperimentalVideo 注解。此注解标记了公开实验性视频功能的 API,这些功能在完全开发之前可能会发生变化。任何使用这些 API 的方法都应使用 @UseExperimental 注解,并将 ExperimentalVideo 作为 markerClass。(I6d729

Camera-Extensions 1.0.0-alpha18 版

2020 年 10 月 14 日

androidx.camera:camera-extensions:1.0.0-alpha18 已发布。1.0.0-alpha18 版包含以下提交。

Bug 修复

  • 改进了 CameraX 初始化和 bindToLifecycle 的延迟。(I61dc5
  • <UseCase>.getTargetRotation() 如果在附加到 Camera 实例之前调用,将返回 Surface.ROTATION_0,除非已在 Builder 或 UseCase 上设置了 targetRotation。(I80fcd

Camera-View 1.0.0-alpha18 版

2020 年 10 月 14 日

androidx.camera:camera-view:1.0.0-alpha18 已发布。1.0.0-alpha18 版包含以下提交。

发布以支持其他相机库工件。

Camera-Extensions 1.0.0-alpha17 版

2020 年 9 月 23 日

androidx.camera:camera-extensions:1.0.0-alpha17 已发布。1.0.0-alpha17 版包含以下提交。

Bug 修复

Camera-View 1.0.0-alpha17 版

2020 年 9 月 23 日

androidx.camera:camera-view:1.0.0-alpha17 已发布。1.0.0-alpha17 版包含以下提交。

Bug 修复

Camera-Extensions 1.0.0-alpha16 版

2020 年 9 月 16 日

androidx.camera:camera-extensions:1.0.0-alpha16 已发布。1.0.0-alpha16 版包含以下提交。

Bug 修复

  • ExtensionsManager 中添加了获取 Extensions 对象的方法,该对象用于启用和查询相机实例上的扩展。(I4fb7e

Camera-View 1.0.0-alpha16 版

2020 年 9 月 16 日

androidx.camera:camera-view:1.0.0-alpha16 已发布。1.0.0-alpha16 版包含以下提交。

API 变更

  • 移除了 PreviewView#setDeviceRotationForRemoteDisplayMode()PreviewView#getDeviceRotationForRemoteDisplayMode()。这两个方法用于自定义预览旋转,当所需的旋转不是显示旋转时,例如远程显示。要现在处理非显示预览旋转,请使用 Preview#setTargetRotation() 和新添加的 PreviewView#getViewPort(targetRotation) 设置所需的旋转。(Ib62cc
  • createSurfaceProvider() 重命名为 getSurfaceProvider()。该方法将始终返回 Preview.SurfaceProvider 的同一实例。(Iff83c

Bug 修复

  • 如果扩展效果启用且供应商库实现需要在输出表面上进行特殊处理,则强制 PreviewView 使用 TextureView。(I0c3cc
  • 允许预览的任意目标旋转。转换信息通过新的 TranformationInfoListener 回调即时计算并返回给用户。(I21470

已知问题

  • 在 PreviewView 中,当最终用户点击 PreviewView 时,OnClickListener#onClick() 不会被调用。触摸事件被 PreviewView#onTouchEvent() 错误地消耗了。此问题将在下个版本中修复。
  • 如果 ViewPort 与 PreviewView 一起使用,则从 PreviewView#getMeteringPointFactory() 获取的 MeteringPoint 可能会有误。

Camera-Extensions 1.0.0-alpha15 版

2020 年 8 月 19 日

androidx.camera:camera-extensions:1.0.0-alpha15 已发布。1.0.0-alpha15 版包含以下提交。

Bug 修复

  • ExtensionsManager.init() 方法现在接受 Context 作为参数,而不是 0 个参数。(Ife754
  • 当使用不从 Context.getApplicationContext() 返回 Application 对象的 Context 时,初始化不再崩溃。(I3d3c9, b/160817073

    Camera-View 1.0.0-alpha15 版

    2020 年 8 月 19 日

androidx.camera:camera-view:1.0.0-alpha15 已发布。1.0.0-alpha15 版包含以下提交。

Bug 修复

  • DisplayOrientedMeteringPointFactory 接受 CameraInfo 实例而不是 CameraSelector,因此可以直接映射工厂将为哪个相机生成点。所有使用 DisplayOrientedMeteringPointFactory 的类也接受 CameraInfo 实例而不是 CameraSelector。(I400c1
  • 移除了 TextureViewMeteringPointFactoryPreviewView 提供了一个公共 API (createMeteringPointFactory()) 来创建测光点工厂,无论它使用的是 TextureView 还是 SurfaceView。(Ide693
  • 将 PreviewView 的 SURFACE_VIEW/TEXTURE_VIEW 实现模式重命名为 PERFORMANCE/COMPATIBLEPERFORMANCE 是旧的 SURFACE_VIEW 模式,COMPATIBLE 是旧的 TEXTURE_VIEW 模式。(I0edc2
  • 对于图像捕获,根据相机方向覆盖元数据中的水平翻转标志。(I28499

Camera-Extensions 1.0.0-alpha14 版

2020 年 7 月 22 日

androidx.camera:camera-extensions:1.0.0-alpha14 已发布。1.0.0-alpha14 版包含以下提交。

Camera-View 1.0.0-alpha14 版

2020 年 7 月 22 日

androidx.camera:camera-view:1.0.0-alpha14 已发布。1.0.0-alpha14 版包含以下提交。

Camera-Extensions 1.0.0-alpha13 版

2020 年 6 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha13 已发布。1.0.0-alpha13 版包含以下提交。

Bug 修复

  • 添加了用于按相机 ID 和 CameraCharacteristics 过滤相机的实验性接口。(I28f61

Camera-View 1.0.0-alpha13 版

2020 年 6 月 24 日

androidx.camera:camera-view:1.0.0-alpha13 已发布。1.0.0-alpha13 版包含以下提交。

Bug 修复

  • CameraView 不再在绑定到 LifecycleOwner 后,当其 Lifecycle 很快过渡到 DESTROYED 状态时,因 IllegalArgumentException 而崩溃。绑定到 DESTROYED 状态的 Lifecycles 将不会尝试打开相机。(I7c2b8
  • PreviewView StreamState 现在可通过 CameraView.getPreviewStreamState() 获得。(I21a2b

Camera-Extensions 1.0.0-alpha12 版

2020 年 6 月 10 日

androidx.camera:camera-extensions:1.0.0-alpha12 已发布。1.0.0-alpha12 版包含以下提交。

Bug 修复

  • 修复了在手机处于勿扰模式时初始化 CameraX 导致应用程序启动崩溃的问题。InitializationException 包含 CameraUnavailableException,它将被设置为初始化结果的 ListenableFuture,而不是使应用程序崩溃。(I9909a, b/149413835

Camera-View 1.0.0-alpha12 版

2020 年 6 月 10 日

androidx.camera:camera-view:1.0.0-alpha12 已发布。1.0.0-alpha12 版包含以下提交。

Bug 修复

  • 添加了 PreviewView#getBitmap() API,该 API 返回预览 surface 上显示内容的 Bitmap 表示。(I9b500, b/157659818

Camera-Extensions 1.0.0-alpha11 版

2020 年 5 月 27 日

androidx.camera:camera-extensions:1.0.0-alpha11 已发布。1.0.0-alpha11 版包含以下提交。

Camera-View 1.0.0-alpha12 版

2020 年 6 月 10 日

androidx.camera:camera-view:1.0.0-alpha12 已发布。1.0.0-alpha12 版包含以下提交。

新功能

API 变更

Bug 修复

  • 添加了 PreviewView#getBitmap() API,该 API 返回预览 surface 上显示内容的 Bitmap 表示。(I9b500, b/157659818

Camera-View 1.0.0-alpha11 版

2020 年 5 月 27 日

androidx.camera:camera-view:1.0.0-alpha11 已发布。1.0.0-alpha11 版包含以下提交。

API 变更

  • 添加了 PreviewView#getPreviewStreamState API,允许应用观察预览是否正在流式传输。当 PreviewView 处于 TEXTURE_VIEW 模式时,STREAMING 状态还保证预览图像可见。(Ic0906, b/154652477
  • 添加了 PreviewView#setDeviceRotationForRemoteDisplayMode() API,用于在应用程序以远程显示模式运行时提供设备旋转以进行变换计算。(I59b95, b/153514525

Bug 修复

  • 修复了在 Android 7.0 及以下版本运行的 FULL/LIMITED/LEVEL_3 摄像头上的预览失真问题。在 Android 版本为 7.0 或以下时,强制使用 ImplementationMode#TEXTURE_VIEW 模式。(I83e30, b/155085307
  • PreviewView#createSurfaceProvider() 中删除了 CameraInfo 参数,PreviewView 现在内部从 SurfaceRequest 中检索它。(If18f0, b/154652477
  • 修复了 CameraView 中 VideoCapture 的默认宽高比为 16:9 的问题。(Ie6a7b, b/153237864
  • 修复了在使用 ViewPager2 划出 Preview 片段再划回时,PreviewView 黑屏的问题。还修复了 removeView(previewview) 后再 addView(previewView) 的问题。(Iab555, b/149877652, b/147354615
  • 更新了 CameraView#takePicture() API,允许将图像保存到 UriOutputStream。更新了测试应用,使用 Uri 作为规范示例。(Ia2459, b/153607583
  • 您可以通过设置 ScaleType 属性,从 XML 布局设置 PreviewView 的缩放类型。(I08565, b/153015659
  • CameraView.ScaleType 已移除。相反,请使用 PreviewView.ScaleType 设置/获取 CameraView 的缩放类型。(Ia8974, b/153014831
  • 默认情况下,如果 PreviewView 还没有背景颜色,则为其设置背景颜色。这可以防止在预览流开始之前看到其后面的内容。(I09fad

Camera-Extensions 1.0.0-alpha10 版

2020 年 4 月 15 日

androidx.camera:camera-extensions:1.0.0-alpha10 已发布。1.0.0-alpha10 版包含以下提交。

Bug 修复

  • 修复以支持 Camera-Core 的发布

Camera-View 1.0.0-alpha10 版

2020 年 4 月 15 日

androidx.camera:camera-view:1.0.0-alpha010 已发布。1.0.0-alpha010 版包含以下提交。

Bug 修复

  • 修复了之前已知的问题,即 PreviewView 的 surfaceView 实现无法在某些设备上正常工作,并在恢复预览后导致应用崩溃。(I5ed6b

Camera-Extensions 1.0.0-alpha09 版

2020 年 4 月 1 日

androidx.camera:camera-extensions:1.0.0-alpha09 已发布。1.0.0-alpha09 版包含以下提交。

Bug 修复

  • 更新以支持 camera-camera2:1.0.0-beta02camera-core:1.0.0-beta02camera-lifecycle:1.0.0-beta02 工件中的错误修复

Camera-View 1.0.0-alpha09 版

2020 年 4 月 1 日 androidx.camera:camera-view:1.0.0-alpha09 已发布。1.0.0-alpha09 版包含以下提交。

已知问题

  • 使用 ImplementationMode.SURFACE_VIEWPreviewView 在某些设备上可能无法正常工作,这是因为用于预览的 SurfaceView 在其所在窗口的生命周期停止时会使其 surface 失效,当它重新启动时,相机重新打开并可能尝试在 SurfaceView 的 surface 再次有效之前恢复预览。目前,您应该使用 ImplementationMode.TEXTURE_VIEW

API 变更

  • PreviewView.setImplementationMode() 重命名为 PreviewView.setPreferredImplementationMode()
  • PreviewView.getImplementationMode() 重命名为 PreviewView.getPreferredImplementationMode()
  • PreviewView.getSurfaceProvider() 替换为 PreviewView.createSurfaceProvider(CameraInfo),该方法接受一个可为空的 CameraInfo 实例,用于在可能的情况下通过使用 ImplementationMode.SURFACE_VIEW 来优化预览。如果传入 null 实例,或者您将首选实现模式设置为 ImplementationMode.TEXTURE_VIEW,则内部使用 ImplementationMode.TEXTURE_VIEW
  • 以下代码示例展示了预览用例以前如何与 PreviewView 一起使用。

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    现在,您可以编写以下内容

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • 已将 @UiThread 注解添加到 PreviewView.getSurfaceProvider(),这意味着它必须从主线程调用。(I192f3

  • 添加了 PreviewView.setScaleType(),允许设置预览的缩放类型。它接受 PreviewView.ScaleType 中的一个值,默认为 PreviewView.ScaleType.FILL_CENTER

  • 添加了 PreviewView.getScaleType()

  • 移除了对在 XML 布局中使用 implementationMode 属性设置 PreviewView 实现模式的支持。

  • 添加了 createMeteringPointFactory() API 到 PreviewView,以支持将 PreviewView 中的 (x, y) 转换为 MeteringPoint。(Ib36d7

Bug 修复

  • 修复了 PreviewView 大小更改后显示不正确预览的问题。(I71101

Camera-Extensions 版本 1.0.0-alpha08

2020 年 2 月 26 日

androidx.camera:camera-extensions:1.0.0-alpha08 已发布。版本 1.0.0-alpha08 包含这些提交。

Camera-View 版本 1.0.0-alpha08

2020 年 2 月 26 日

androidx.camera:camera-view:1.0.0-alpha08 已发布。版本 1.0.0-alpha08 包含这些提交。

Bug 修复

  • SurfaceRequest.provideSurface() 上的 ListenableFuture 替换为 ExecutorCallback。这简化了 API,不再需要在 provideSurface() 上处理异常,并强制 provideSurface() 回调不能取消。这是为了防止在旧设备上因过早释放 Surface 导致崩溃。SurfaceRequest.Result 对象现在用于跟踪 SurfaceRequest 如何使用所提供的 Surface。(I7854b
  • SurfaceRequest.setSurface(Surface) 重命名为 SurfaceRequest.provideSurface(Surface),并将 SurfaceRequest.setWillNotComplete() 重命名为 SurfaceRequest.willNotProvideSurface()。(I224fe
  • 通过保留设置默认 CameraXConfig 提供程序的标志,修复了启用 ProGuard 的应用程序变体的初始化问题。(I2d6c1

Camera-Extensions 版本 1.0.0-alpha07

2020 年 2 月 10 日

androidx.camera:camera-extensions:1.0.0-alpha07 已发布。版本 1.0.0-alpha07 包含这些提交

Bug 修复

  • 以前在 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError() 中传递的参数,现在已被一个单独的参数 ImageCaptureException 替换,该参数仍包含以前传递的所有信息。
  • 以前在 ImageCapture.OnImageSavedCallback.onImageSaved() 中传递的文件参数已被移除。(I750d2

Camera-View 版本 1.0.0-alpha07

2020 年 2 月 10 日

androidx.camera:camera-view:1.0.0-alpha07 已发布。版本 1.0.0-alpha07 包含这些提交

API 变更

  • PreviewViewTextureView 实现现在会将 TextureView 的大小设置为摄像头传感器输出大小,然后再将其缩放以填充其父级 PreviewView。如果您希望摄像头预览填充 UI 的整个部分(例如整个屏幕),则不应将 PreviewView 的大小设置为固定值,或将其内容设为包裹内容(例如使用属性“wrap_content”),这可能会导致摄像头预览仅填充 PreviewView 的一部分(如果摄像头传感器输出大小较小)。相反,您应将 PreviewView 设置为与其父级一样大(例如使用属性“match_parent”)。(1204869)

Bug 修复

  • 更新了 ImageCapture,允许将图像保存到 UriOutputStream。将重载的 takePicture 方法合并为一个。更新了测试应用,使用 Uri 作为规范示例。(Ia3bec
  • Preview.PreviewSurfaceProvider 已重命名为 Preview.SurfaceProviderSurfaceProvider 不再要求开发者创建自己的 ListenableFuture,现在通过新的 SurfaceRequest 对象提供 SurfacePreview.getPreviewSurfaceProvider() 方法已被移除,因为当 PreviewPreviewView 等其他类配对使用时,它可能被误用。(I20105
  • 以前在 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError() 中传递的参数,现在已被一个单独的参数 ImageCaptureException 替换,该参数仍包含以前传递的所有信息。
  • 以前在 ImageCapture.OnImageSavedCallback.onImageSaved() 中传递的文件参数已被移除。(I750d2
  • API 已更新,CameraInfogetZoomRatio()getMaxZoomRatio()getMinZoomRatio()getLinearZoom() 方法合并为 getZoomState(),后者返回一个 ZoomState 实例。(Ib19fe

Camera-Extensions 版本 1.0.0-alpha06

2020 年 1 月 22 日

androidx.camera:camera-extensions:1.0.0-alpha06 已发布。版本 1.0.0-alpha06 包含这些提交

更新

  • 各种修复和更新,以支持 Camera Core 和 Camera2 的更改。

Camera-View 版本 1.0.0-alpha06

2020 年 1 月 22 日

androidx.camera:camera-view:1.0.0-alpha06 已发布。版本 1.0.0-alpha06 包含这些提交

更新

  • 各种修复和更新,以支持 Camera Core 和 Camera2 的更改。

Camera-Extensions 版本 1.0.0-alpha05

2019 年 12 月 18 日

androidx.camera:camera-extensions:1.0.0-alpha05 已发布。版本 1.0.0-alpha05 包含这些提交

Bug 修复

  • 已更新以匹配内部 Camera Core API。

Camera-View 版本 1.0.0-alpha05

2019 年 12 月 18 日

androidx.camera:camera-view:1.0.0-alpha05 已发布。版本 1.0.0-alpha05 包含这些提交

已知问题

  • 使用 PreviewView 时,宽高比可能不正确 (b/146215202)。

新功能

  • 实现了名为 PreviewView.TextureViewImplementation 的新类,它将 SurfaceTexture 的生命周期与摄像头对 TextureView 表面的使用情况同步。

Camera-Extensions 版本 1.0.0-alpha04

2019 年 12 月 4 日

androidx.camera:camera-extensions:1.0.0-alpha04 已发布。camera-extensions 1.0.0-alpha04 版包含这些提交

API 变更

  • 现在,检查扩展的可用性并启用扩展会接受 CameraSelector 作为输入参数。这必须是用于绑定用例的相同 CameraSelector

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • 在使用扩展库之前,您必须初始化扩展。

    val availability = ExtensionsManager.init()
    Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
       availability,
       object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
           override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
               // Ready to make extensions calls
           }
           override fun onFailure(throwable: Throwable) {
               // Extensions could not be initialized
           }
       },
       Executors.newSingleThreadExecutor()
    )
    

Camera-View 版本 1.0.0-alpha04

2019 年 12 月 4 日

androidx.camera:camera-view:1.0.0-alpha04 已发布。camera-view 1.0.0-alpha04 版包含这些提交

API 变更

  • 提供了一个 PreviewView 类,用于在应用中轻松显示预览用例的输出。
  • PreviewView 可以包含在布局中

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
       />
    
  • PreviewView 提供了一个 PreviewSurfaceProvider,用于轻松连接预览用例

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • API 命名中“ZoomLevel”现在为“ZoomRatio

  • 某些方法参数的可为 null 性已更改

Camera-Extensions 和 Camera-View 版本 1.0.0-alpha03

2019 年 10 月 9 日

androidx.camera:camera-extensions:1.0.0-alpha03androidx.camera:camera-view:1.0.0-alpha03 已发布。以下是camera-extensions:1.0.0-alpha03 中包含的提交,以下是camera-view:1.0.0-alpha03 中包含的提交

新功能

  • 为扩展添加了 Context 初始值设定项。扩展版本已递增到 1.1.0

Camera-Extensions 和 Camera-View 版本 1.0.0-alpha02

2019 年 9 月 5 日

androidx.camera:camera-extensions:1.0.0-alpha02androidx.camera:camera-view:1.0.0-alpha02 已发布。以下是camera-extensions:1.0.0-alpha02 中包含的提交,以下是camera-view:1.0.0-alpha02 中包含的提交

  • 添加了测试,用于验证 PreviewImageProcessorImpl 是否已正确实现时间戳。
  • 修复了 Nexus 5 (API level 21) 上的 ExtensionTest 测试失败问题,并确保预览可用。

Camera-Extensions 和 Camera-View 版本 1.0.0-alpha01

2019 年 8 月 7 日

androidx.camera:camera-extensions:1.0.0-alpha01androidx.camera:camera-view:1.0.0-alpha01 已发布。以下是camera-extensions:1.0.0-alpha01 中包含的提交,以下是camera-view:1.0.0-alpha01 中包含的提交

  • 用于未来 Camera Extensions 的新库,用于在支持的设备上访问效果。此库正在开发中。
  • 新的 Camera View 类。此库正在开发中。