CameraX
此表列出了 androidx.camera
组中的所有工件。
工件 | 稳定版 | 候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
camera-camera2 | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-core | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-compose | - | - | - | 1.5.0-alpha03 |
camera-effects | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-extensions | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-feature-combination-query | - | - | - | 1.5.0-alpha03 |
camera-feature-combination-query-play-services | - | - | - | 1.5.0-alpha03 |
camera-lifecycle | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-mlkit-vision | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-view | 1.4.0 | - | - | 1.5.0-alpha03 |
camera-viewfinder | - | - | 1.3.0-beta02 | 1.4.0-alpha07 |
camera-video | 1.4.0 | - | - | 1.5.0-alpha03 |
设备测试
CameraX 在我们实验室的许多设备上都经过了测试。要查看实验室中当前设备的列表,请参阅 CameraX 实验室测试设备。
声明依赖项
要添加对 CameraX 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读 Google 的 Maven 存储库 以了解更多信息。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项
Groovy
dependencies { // CameraX core library using the camera2 implementation def camerax_version = "1.5.0-alpha03" // 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-alpha03" // 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。如果您发现新的问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中 现有问题。您可以通过点击星形按钮为现有问题添加您的投票。
更多信息请参阅 问题跟踪文档。
相机取景器 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 支持不同的纵横比,以及触摸事件的处理。
相机取景器版本 1.4
版本 1.4.0-alpha07
2024 年 6 月 12 日
androidx.camera:camera-viewfinder:1.4.0-alpha07
和 androidx.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-alpha06
和 androidx.camera:camera-viewfinder-core:1.4.0-alpha06
已发布。版本 1.4.0-alpha06 包含 这些提交。
API 更改
- 将
Viewfinder
的ImplementationMode
枚举重命名为更好地反映底层实现,并为TransformationInfo.sourceRotation
添加固定常量。(Ic6149) - 添加了
ZoomGestureDetector.ZoomEvent
来封装缩放手势的状态。(I84cdf)
相机版本 1.5
版本 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)
错误修复
- 修复了在启用
VideoCapture
时 TCL 设备上的预览和视频曝光不足问题。(Id7a64) - 修复了使用
PreviewView.getMeteringPointFactory
调用startFocusMetering
时,在启用效果或绑定 4 个用例(流共享)时无法获取正确的传感器坐标的问题。(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 服务提供的附加数据。
错误修复
- 修复了 LEGACY 级设备上的
Preview/VideoCapture
目标帧率问题。通过setTargetFrameRate
或Camera2Interop
API 设置的目标帧率始终被覆盖为AeFpsRangeLegacyQuirk
提供的值。通过此修复,CameraX 库将尊重通过setTargetFrameRate
或Camera2Interop
API 设置的值。(Ie2d32) - 为使用
CameraEffect
的图像捕获添加了闪光灯/手电筒/3A 功能。现在,使用CameraEffect
捕获的图像应具有与不使用任何CameraEffect
的图像捕获相同的预捕获和后捕获处理(例如,闪光灯触发、3A 收敛等,在适用时)。(I5ff30) - 排除了 Samsung SM-A057G 设备上
ImageAnalysis
的有问题的输出尺寸。当ImageAnalysis
使用大于或等于 1920x1440 的分辨率时,会导致预览变黑。将ExcludedSupportedSizesQuirk
应用于 SM-A057G 设备以避免此问题。(I63dfe,b/365877975) - 修复了在内部启用流共享机制以将流共享到
Preview
和VideoCapture
时,Preview/VideoCapture
目标帧率问题。(I4fdac) - 启用了解决 Samsung S10e 和 S10+ 设备上 JPEG 图像元数据错误问题的解决方法。通过此修复,如果发生 JPEG 图像元数据错误问题,CameraX 可以成功保存 JPEG 图像,或者在这些设备上调用
ImageProxy.toBitmap()
函数时可以返回正确的 Bitmap 对象。(Iae493,b/356428987) - 禁用了 id 为 0 的 Samsung A52s 后置摄像头的扩展,因为在捕获 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 包含 这些提交。
API 更改
- 提供 API 以设置双并发相机视频捕获的合成设置。设置包括用于混合的 alpha 值、x、y 坐标中的偏移量以及相机帧显示窗口宽度和高度的缩放比例。偏移量、宽度和高度以归一化设备坐标指定。(Ia2b8a)
- 将
CameraProvider.getCameraInfo
公开为正式 API。(I901cd) - 添加了 API
PendingRecording.withAudioEnabled(boolean initialMuted)
来控制初始静音状态。(I635c3,b/354829267)
错误修复
- 修复了使用已销毁的
LifecycleOwner
调用bindToLifecycle
时发生的崩溃。(I6e6d8) - 修复了在 Motorola Edge 20 Fusion 上与
VideoCapture
绑定时,前置摄像头中的预览为黑屏的问题。(I1fe88) - 优化了在
PreviewView
中检测缩放手势的配置,以提高流畅度。(I04ffc)
相机版本 1.4
版本 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 扩展:添加了
takePicture
和awaitInstance
暂停函数。 - 实时效果:应用水印和对象突出显示等效果。
- CameraController API:用于视频捕获配置的新控件。
- 预览稳定:查询设备功能并启用稳定。
- VideoCapture 增强功能:对质量进行更精细的控制并访问更高分辨率。
- CameraX 扩展集成:与
VideoCapture
和新的ImageCapture
功能无缝集成。 - 快门声音 API:轻松检查区域快门声音要求。
- 屏幕闪光灯:改善前置摄像头的弱光照片。
- 相机扩展元数据 API:支持 API 以调整扩展强度并在
ExtensionMode#AUTO
中获取当前扩展模式的通知。您可以在我们的 Beta 和 RC 公告中找到更多错误修复。
版本 1.4.0-rc04
2024 年 10 月 16 日
已发布 androidx.camera:camera-*:1.4.0-rc04
。版本 1.4.0-rc04 包含 这些提交。
错误修复
- 修复了使用
PreviewView.getMeteringPointFactory
调用startFocusMetering
时,在启用效果或绑定 4 个用例(流共享)时无法获取正确的传感器坐标的问题。(I916c5,b/345993685)
版本 1.4.0-rc03
2024 年 10 月 2 日
已发布 androidx.camera:camera-*:1.4.0-rc03
。版本 1.4.0-rc03 包含 这些提交。
错误修复
- 为使用
CameraEffect
的图像捕获添加了闪光灯/手电筒/3A 功能。现在,使用CameraEffect
捕获的图像应具有与不使用任何CameraEffect
的图像捕获相同的预捕获和后捕获处理(例如,闪光灯触发、3A 收敛等,在适用时)。(I5ff30) - 优化了
PreviewView
中的捏合缩放平滑度 (I04ffc) - 将超级 HDR 与 10 位输出功能解耦,因为超级 HDR 支持不再要求设备具有 10 位输出功能。(I96ff2,I0c3b3)
版本 1.4.0-rc02
2024 年 9 月 18 日
已发布 androidx.camera:camera-*:1.4.0-rc02
。版本 1.4.0-rc02 包含 这些提交。
错误修复
- 修复了使用已销毁的
LifecycleOwner
调用bindToLifecycle
时发生的崩溃。(I6e6d8) - 在
ScreenFlashView
中为ScreenFlash#apply
添加了可见性动画,同时也修复了由于亮度变化在一段时间后异步完成而导致的错误。(I37cdb) - 通过在支持的设备上覆盖框架中的缩放设置,改进了缩放平滑度。
版本 1.4.0-rc01
2024 年 8 月 7 日
已发布 androidx.camera:camera-*:1.4.0-rc01
。版本 1.4.0-rc01 包含 这些提交。
新功能
- 添加了实验性的
CameraInfo.getCameraInfo
,以便在无需将用例绑定到相机的情况下提供特定的相机信息。(I550d1)
API 更改
- 添加了
PreviewView.getScreenFlash
和PreviewView.setScreenFlashOverlayColor
API,用于未显式添加ScreenFlashView
的情况。(I43945)
错误修复
- 修复了在绑定了 VideoCapture 用例的弱光条件下启用闪光灯拍摄图像时出现的曝光和色彩色调问题。(Ic9814)
- 修复了启用扩展后中断
takePicture
请求可能会导致无法获取结果,并且下一个takePicture
请求可能无法正常工作的问题。(Iae78f) - 修复了启用扩展时发生的内存泄漏问题。(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)
错误修复
- 修复了在三星 Tab A8 上,当
ImageCapture
在Preview
+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)
错误修复
- 修复了一个错误,即持续捕获和点按对焦未使用重复请求 FPS/稳定模式值,这可能会重新创建捕获会话并在某些设备上导致延迟问题或预览冻结。(I7dc0b)
- 修复了在某些设备上启用
CameraEffect
时无法选择高分辨率的错误。(例如,三星 A32 5G 上的 4000x3000)。(Ie3ed3,b/337336152) - 修复了在 Pixel 4XL API29 上绑定预览、
ImageCapture
和VideoCapture(UHD)
时拍摄照片时发生的崩溃。(I5b288) - 支持虚拟设备:传递到
ProcessCameraProvider
的上下文将保留设备 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 图像。当设备支持超级 HDR 且输出格式设置为OUTPUT_FORMAT_JPEG_ULTRA_HDR
时,CameraX 将使用 JPEG/R 图像格式捕获超级 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。新的
CameraExtensionsInfo
和CameraExtensionsControl
接口允许应用程序监控和调整扩展强度设置。应用程序可以通过新添加的ExtensionsManager#getCameraExtensionsInfo()
或ExtensionsManager#getCameraExtensionsControl()
方法获取CameraExtensionsInfo
或CameraExtensionsControl
实例。(I28e1a) - 添加了
ProcessCameraProvider.awaitInstance
,它是ProcessCameraProvider.getInstance
的一个悬挂版本 (Ib22b9) - 添加了
PreviewView#getSensorToViewTransform()
API。该矩阵表示从相机传感器坐标到PreviewView
坐标的转换。这可用于将坐标从一个UseCase
转换为另一个。例如,将ImageAnalysis
中检测到的对象的坐标转换为PreviewView
叠加层。(I947ab) - 使
camera-viewfinder-core
API 更通用,以便camera-viewfinder
和camera-viewfinder-compose
可以使用它。(I1e295) - 向
ViewfinderSurfaceRequest
添加getSurface
函数。(I781a0) - 在
camera-viewfinder
中使用camera-viewfinder-core
并弃用ViewfinderSurfaceRequest
和CameraViewfinder
。(I6198c) - 添加了
ZoomGestureDetector
,它解释专门为捏合缩放活动配置的缩放手势。(Ifafbf)
错误修复
- 修复了与分析器默认目标分辨率设置相关的
ImageAnalysis
分辨率选择问题:即使应用程序设置了不同的分析器默认分辨率设置,目标分辨率也被错误地保留为 640x480。如果应用程序遇到此问题 (1.3.0 ~ 1.3.2) 并且无法升级到使用包含解决方案的较新版本,则可以直接使用首选分辨率和匹配的AspectRatioStrategy
将ResolutionSelector
设置到ImageAnalysis
UseCase
来解决此问题。(I81f72,b/330091012) - 修复了如果当前请求失败,则排队的
takePicture
请求可能无法运行的问题。(Ie0801) - 使无效 JPEG 数据检查应用于 Vivo X60 和 X60 Pro 设备。这可以修复这些设备上的异常大的图像问题。(I82247,b/288828159)
- 修复了三星 A24 设备上不正确的 JPEG 图像元数据问题。通过修复,CameraX 可以成功保存 JPEG 图像,或者在三星 A24 设备上调用
ImageProxy.toBitmap()
函数时可以返回正确的 Bitmap 对象。(I8d6eb,b/309005680) - 如果拍摄的图像大于 10 MB,则在所有三星设备上应用无效 JPEG 数据检查。这可以修复三星设备上异常大的图像问题。(Ic2a65,b/288828159)
- 在 CameraX 扩展中删除了
ImageAnalysis
支持,因为许多 OEM 的扩展实现无法很好地与ImageAnalysis
协同工作,并且可能导致不一致的问题。(I2d926)
版本 1.4.0-alpha04
2024 年 1 月 24 日
androidx.camera:camera-*:1.4.0-alpha04
已发布。版本 1.4.0-alpha04 包含这些提交。
新功能
- 新构件:camera-effects:一个用于将实时效果应用于 CameraX 输出的库,包括
Preview
、VideoCapture
和/或ImageCapture
。此构件包含CameraEffect
API 的 OpenGL 实现,该 API 可以高效地操作相机输出。 OverlayEffect
:用于使用 Android 的 Canvas API 绘制叠加层。这允许应用在相机输出上添加水印或突出显示检测到的对象。- 预览用例的
DynamicRange
API:现在可以在预览用例上设置动态范围,独立于视频用例。这允许仅预览使用 HDR 动态范围,例如 HLG10。新的 API 也可在CameraInfo
中使用,以查询每个相机支持的动态范围。
API 更改
- 将
ScreenFlashUiCompleter
重命名为ScreenFlashListener
,并将ScreenFlashUiCompleter#getExpirationTimeMillis
移动到ScreenFlash#apply
的expirationTimeMillis
参数。(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)
错误修复
- 修复了启用扩展时导致活动或片段未释放的内存泄漏问题。(I14215)
- 修复了在应用增大缩放比例时
getZoomRatio
错误地返回减小值的问题。(I4aa0d,b/317543616) ImageCapture#ScreenFlash#clear
事件在ImageCapture
解绑或相机关闭时立即调用,还修复了一些由于这些情况下捕获未正确完成而从未调用该事件的错误。(If99f9)- 修复了在
takePicture
请求完成之前生命周期停止时发生的崩溃问题。(Idf017,b/306202751) - 修复了在某些设备上启用扩展时相机预览变黑的问题。(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.onCaptureStarted
和OnImageSavedCallback.onCaptureStarted
以在相机开始曝光帧时发出通知。建议此时播放快门声或快门动画。(Ic49b3) - 在 CameraX 中添加了前置摄像头图像捕获的屏幕闪光功能支持。CameraX 将负责框架端 API 处理,并根据需要(例如,应用屏幕颜色/亮度更改后的 AE 预捕获触发)与应用程序的 UI 更改同步时间。应用只需在提供给 CameraX 的
ScreenFlashUiControl
接口中添加其 UI 端实现。(I8ae84) - 在 CameraX 中添加了屏幕闪光功能 UI 端实现支持。应用将能够从
PreviewView
或新添加的ScreenFlashView
获取基本的ImageCapture.ScreenFlashUiControl
实现,这将添加一个单色叠加视图并在屏幕闪光照片捕获期间最大化屏幕亮度。(I1810e)
API 更改
- 支持新的扩展功能(后视和捕获过程进度):添加了
ImageCapture#getImageCaptureCapabilities()
API,供应用查询后视和捕获过程进度回调的功能。应用可以使用ImageCapture.Builder#setPostviewEnabled()
启用后视。可以使用ImageCapture.Builder#setPostviewResolutionSelector()
选择后视大小。调用takePicture()
时,可以在OnImageSavedCallback
或OnImageCapturedCallback
中实现onPostviewBitmapAvailable
和onCaptureProcessProgressed
以获取后视和过程进度通知(如果支持)。(I5cd88) - 用于计算从传感器到当前缓冲区的坐标转换的 API,以及一个指示 Surface 是否包含相机方向信息的标志。(I59096)
- 公开 API 以在预览
UseCase
中查询PreviewCapabitlity
。(Ie5b6c) - 添加了 API 以支持
VideoCapture
的更多质量。Recorder.Builder#setVideoCapabilitiesSource(int)
可与VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES
一起使用,以创建支持比VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE
更多质量的Recorder
实例。一个常见的用例是,当应用程序尽力在可行的情况下录制 UHD 视频时,但设备的CamcorderProfile
不包含 UHD 设置,即使编解码器能够录制 UHD 视频。(Iedbe2,b/263961771) - 将
ImageAnalysis
输出格式的 getter/setter 添加到CameraController
。(I9a96c,b/308240643)
错误修复
- 来自 相机
1.3.1
:改进了ProcessCameraProvider#bindToLifecycle()
的性能。主要更改是优化识别UseCases
最合适的尺寸组合的过程。最佳结果会根据具体的UseCase
组合以及目标设备支持的输出尺寸数量而有所不同。(I454f2) - 允许在启用扩展时使用
VideoCapture
。(I91f32) - 修复了三星 A71 和 M51 系列设备上捕获的 JPEG 图像过大的问题。捕获的 JPEG 图像在 JFIF 压缩数据段中包含冗余的 0 填充数据。这会导致捕获的图像文件大小过大。这些冗余的 0 填充数据将被移除,使捕获的图像具有正常的图像文件大小。(I01afc,b/288828159)
- 在 Pixel 上禁用
ImageAnalysis
支持,以避免 Pixel 上意外返回非空ImageAnalysis
支持尺寸的错误。(I7ec31) - 修复了启用扩展时 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
并将其替换为ResolutionSelector
。ResolutionSelector
是选择分辨率的更全面方法,并且与 camera-core API 一致。(I93abd,b/286801438)
错误修复
- 修复了在后置摄像头启用扩展散景或面部磨皮以及
ImageAnalysis
时,三星 Galaxy S23 Ultra 5G 上出现的预览变黑问题。(I2e8b1) - 修复了 Moto E5 Play 上的预览和
VideoCapture
拉伸问题。(73dce2)
版本 1.4.0-alpha01
2023 年 9 月 20 日
androidx.camera:camera-*:1.4.0-alpha01
已发布。 版本 1.4.0-alpha01 包含以下提交。
API 更改
- 添加新的 API 用于在录制期间访问音频振幅信息。 (Id4925)
错误修复
- 通过确保初始化和反初始化事件按正确的顺序触发来提高扩展程序的稳定性。 (Ib3b8e)
- 修复了由于内部添加额外的重复 surface 导致捕获会话配置失败,该失败是由超出支持的 surface 组合引起的。 (Id718c)
- 修复了 Vivo S16 设备上捕获的 JPEG 图片大小过大的问题。捕获的 JPEG 图片在 JFIF 压缩数据段中包含冗余的 0 填充数据。这会导致捕获的图片文件大小过大。这些冗余的 0 填充数据将被移除,使捕获的图片具有正常的图片文件大小。 (I79505, b/299069235)
- 修复了在某些设备上启用某些扩展模式时,
ImageAnalysis
无法与ImageCapture
和预览一起绑定 的问题。此修复将在应用通过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 包含 以下提交。
错误修复
- 修复了在应用增大缩放比例时
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 包含 以下提交。
错误修复
- 修复了与分析器默认目标分辨率设置相关的
ImageAnalysis
的分辨率选择问题:即使应用程序已设置不同的分析器默认分辨率设置,目标分辨率也会错误地保持为 640x480。如果应用程序遇到此问题(1.3.0 ~ 1.3.2)并且无法升级以使用包含解决方案的较新版本发布,则可以直接将具有首选分辨率和匹配AspectRatioStrategy
的ResolutionSelector
设置到ImageAnalysis
UseCase 可以解决此问题。 (I81f72, b/330091012)
版本 1.3.2
2024年3月6日
androidx.camera:camera-*:1.3.2
已发布。版本 1.3.2 包含 以下提交。
错误修复
- 修复了 Samsung 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 包含以下提交。
错误修复
改进了 ProcessCameraProvider#bindToLifecycle()
的性能。主要更改是优化识别 UseCases
最合适的尺寸组合的过程。最佳结果会根据特定的 UseCase
组合以及目标设备支持的输出尺寸数量而有所不同。 (I454f2)
以下是一些不同场景的参考结果
四个
UseCases
:Preview
+ImageCapture
+ImageAnalysis
+VideoCapture
- Google Pixel 7:大约 430 毫秒到 60 毫秒
- Samsung Galaxy S23 Ultra:大约 540 毫秒到 45 毫秒
- Samsung A53 5G:大约 115 毫秒到 70 毫秒
三个
UseCases
:Preview
+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 以来重要更改
- 视频功能,包括 10 位 HDR、裁剪、镜像/非镜像、静音/取消静音、设置帧率等等。
- 双并发相机
- 效果库
- 分辨率选择器
- 超广角和长焦相机选择
- 录制视频期间切换相机(实验性功能)
版本 1.3.0-rc02
2023 年 9 月 20 日
androidx.camera:camera-*:1.3.0-rc02
已发布。 版本 1.3.0-rc02 包含以下提交。
错误修复
- 通过确保初始化和反初始化事件按正确的顺序触发来提高扩展程序的稳定性。这修复了在切换扩展程序模式或切换相机时的一些黑屏预览问题。 (Iddaac)
- 修复了在某些设备上启用某些扩展模式时,
ImageAnalysis
无法与ImageCapture
和预览一起绑定 的问题。此修复将在应用通过ExtensionsManager#isImageAnalysisSupported()
查询ImageAnalysis
可用性时返回正确的值。 (I7d538) - 修复了在 Xiaomi 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
以允许录制在与其 Recorder 附加的VideoCapture
重新绑定时连续录制。 (I517c6)
错误修复
- 修复了当流与
VideoCapture
和预览共享时发生的崩溃。还修复了在启用流共享时 LEGACY 设备上的黑屏问题。 - 修复了 Samsung S7 (SM-G930T, SM-G930V) 系列设备上捕获的 JPEG 图片大小过大的问题。捕获的 JPEG 图片在 JFIF 压缩数据段中包含冗余的 0 填充数据。这会导致捕获的图片文件大小过大。这些冗余的 0 填充数据将被移除,使捕获的图片具有正常的图片文件大小。 (I407b0, b/288828159)
- 修复了 Samsung S22 (SM-S901B, SM-S901B/DS) 和 S22+ (SM-S906B) 系列设备上捕获的 JPEG 图片大小过大的问题。捕获的 JPEG 图片在 JFIF 压缩数据段中包含冗余的 0 填充数据。这会导致捕获的图片文件大小过大,在 S22 SM-S901B/DS 设备上约为 13MB。这些冗余的 0 填充数据将被移除,使捕获的图片具有正常的图片文件大小。 (I73be9, b/288828159)
- 修复了 Samsung A5、A52、A70 和 A72 系列设备上捕获的 JPEG 图片大小过大的问题。捕获的 JPEG 图片在 JFIF 压缩数据段中包含冗余的 0 填充数据。这会导致捕获的图片文件大小极大(例如约 32MB 或甚至 96 MB)。这些冗余的 0 填充数据将被移除,使捕获的图片具有正常的图片文件大小。 (I97c4d, b/288828159)
- 修复了启用扩展程序时拍摄照片时的原生崩溃 (I698f5)
版本 1.3.0-beta02
2023年7月26日
androidx.camera:camera-*:1.3.0-beta02
已发布。 版本 1.3.0-beta02 包含以下提交。
错误修复
- 使用手电筒作为 Pixel 4 和 5 变体的闪光灯,以提高弱光环境下的捕获质量 (I56ff5, b/280221967)
- 修复了 Samsung 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
用例是否可以与预览和ImageCapture
一起绑定。 (I1bc63) - 从
Recorder
获取的新VideoCapabilities
类可用于查询设备上视频录制支持的动态范围和质量。QualitySelector
的getSupportedQualities()
和isQualitySupported()
方法已弃用。请改用VideoCapabilities
的getSupportedQualities()
和isQualitySupported()
方法。(I04014) CameraController#setVideoCaptureTargetQuality()
重命名为setVideoCaptureQualitySelector
并且接受参数QualitySelector
,这为视频质量设置提供了更大的灵活性。CameraController#getVideoCaptureTargetQuality()
相应地更改为getVideoCaptureQualitySelector
。(I520ed)- 删除了视频功能的实验性注释。视频功能现已稳定。(I1a113)
错误修复
- 在三星 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
的用法,并弃用 APIImageAnalysis.setTargetRotationDegrees(int)
、ImageCapture.setTargetRotationDegrees(int)
和VideoCapture.setTargetRotationDegrees(int)
。(Ia9010) - 添加了新的 API
Preview#getTargetFrameRate
和Preview.Builder#setTargetFrameRate
以能够设置和检索预览用例的目标帧率(If4f22) VideoRecordEvent.Finalize
现在将在Recording
对象因垃圾回收而停止时使用错误代码ERROR_RECORDING_GARBAGE_COLLECTED
完成。(Iba974)
错误修复
- 修复了当
StreamConfigurationMapCompat
中缓存的输出大小为 null 时发生的NullPointerException
。(Idf124,b/282025204) - 修复了
Preview.setSurfaceProvider(null)
在扩展程序中不会暂停预览的问题(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 使在使用前置摄像头时能够与摄像头预览对齐。有三种MirrorMode
,OFF
、ON
和ON_FRONT_ONLY
。为了与摄像头预览对齐,建议使用ON_FRONT_ONLY
,这意味着后置摄像头未启用镜像,但前置摄像头已启用镜像。
API 更改
- 公开了新的
ResolutionSelector
API。应用程序可以使用带回退规则或自定义分辨率过滤器的纵横比和分辨率策略来获得所需的结果。应用程序可以指定一个标志以启用高分辨率捕获。这将允许 CameraX 在拍摄照片或视频时选择更高的分辨率。但是,请注意,使用高分辨率可能会导致捕获时间变慢。(Ibed95) - AE 算法支持的 FPS 范围现在可以通过
CameraInfo#getSupportedFrameRateRanges()
查询。(Iaa67f) - 将所有帧率方法的名称统一为使用“FrameRate”。更正了
VideoCapture#getTargetFrameRate()
中的 javadoc 错误(I83304) - 弃用了旧的
setTargetAspectRatio
和setTargetResolution
API。请改用新的ResolutionSelector
API。(I542c3) - 添加了并发双摄像头的公共 API,包括
List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
boolean isConcurrentCameraModeOn()
和ConcurrentCameraConfig
、SingleCameraConfig
和ConcurrentCamera
(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)
错误修复
- 修复了当关闭摄像头时调用扩展程序 API 的应用程序可能会崩溃的问题(Ib27e5)
- 修复了
VideoCapture
在某些设备上无法与前置摄像头一起使用的问题。例如,在三星 Galaxy S23 和小米 2107113SG 上。(Ibec7e,b/270656244) - 修复了在 Android 10 或更高版本中使用外部存储公共文件夹中的 File 拍摄照片始终失败的问题。请注意,在 Android 10 中,使用外部存储公共文件夹中的 File 拍摄照片还需要在 application 标签中将
requestLegacyExternalStorage
设置为 true。(I11b2c) - 修复了
DefaultSurfaceProcessor
中的RejectedExecutionException
崩溃。当绑定VideoCapture
并暂停 Activity 时,可能会发生此崩溃。(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_CAPTURE
和PREVIEW|VIDEO_CAPTURE
作为效果目标。目标为VIDEO_CAPTURE
的效果将应用于VideoCapture
UseCase;目标为PREVIEW|VIDEO_CAPTURE
的效果将在复制到预览和VideoCapture
流之前应用于共享流。(Iee6f3)
错误修复
- 从 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 将共享流复制到预览和 VideoCapture。
- 由于缓冲区复制的成本,应用程序可能会看到延迟和功耗增加。
API 更改
- 添加 API 用于将
ImageProxy
转换为Bitmap
。支持的ImageProxy
格式为ImageFormat.YUV_420_888
和PixelFormat.RGBA_8888
。如果格式无效,将抛出IllegalArgumentException
。(Ic7110) - 添加
CoroutineCameraViewfinder
以支持在 Kotlin 中使用挂起函数配置取景器。(I657bc) - 为
ViewfinderSurfaceRequest
添加新的公共构造函数。当用户无法提供CameraCharacteristics
时,它提供了灵活性。(Ie6549)
错误修复
- 修复了在某些三星设备上,当应用程序过快暂停/恢复时发生的扩展崩溃问题。(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)
错误修复
- 修复了当没有闪光灯单元且闪光灯模式打开时
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
、OutputFileOptions
和OutputFileResults
类。(I38cd8) - 应用新的视频捕获 API。
getVideoCaptureTargetSize
和setVideoCaptureTargetSize
方法分别替换为getVideoCaptureTargetQuality
和setVideoCaptureTargetQuality
方法,因为setTargetResolution
不再受支持。(I2a1d5)
错误修复
- 删除已弃用的
core.VideoCapture
API。(I531e0) - 修复了在没有存储权限的情况下拍摄照片时不调用
onError
回调的问题。(I936db,b/244807669) - 改进摄像头扩展的质量和可靠性。由于 Bokeh 支持、图像捕获和预览无法恢复的问题,在使用 Camera Extensions v1.1.0 及更早版本的摩托罗拉设备上禁用了摄像头扩展。(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)
错误修复
- 添加了一个特性,允许某些有问题的设备在遇到捕获失败时重试一次捕获。(Id4795)
- 修复了
PreviewView
SurfaceView
实现ViewPager2
上的黑屏问题。作为修复的一部分,如果请求的分辨率没有更改,PreviewView
将重用其SurfaceView
。(Ib3f27) - 支持使用
ViewPort
或CameraController
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 包含以下提交。
错误修复
- 修复了
VideoCapture
在某些设备上无法与前置摄像头一起使用的问题。例如,在三星 Galaxy S23 和小米 2107113SG 上。(Ibec7e,b/270656244)
版本 1.2.2
2023 年 3 月 22 日
androidx.camera:camera-*:1.2.2
已发布。版本 1.2.2 包含以下提交。
错误修复
- 修复了在某些设备(例如 Pixel)上启用 Proguard 后,CameraX 扩展无法正常工作的问题(I90aa2)。
版本 1.2.1
2023 年 1 月 25 日
androidx.camera:camera-*:1.2.1
已发布。版本 1.2.1 包含这些提交。
错误修复
- 修复了在某些三星 Android 12 设备上写入 Exif 位置数据时 JPEG 图像损坏的问题。(b/263289024)。
版本 1.2.0
2022 年 12 月 7 日
androidx.camera:camera-*:1.2.0
已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来重要的更改
- 新增库 camera-mlkit-vision。轻松地将 CameraX 与许多 MLKit 功能集成,包括条形码扫描、人脸检测、文本检测等。添加了
MLKitAnalyzer
作为新的 API。 - 新增实验性零快门延迟 API。优化捕获管道以获得更好的延迟,同时保持良好的图像质量。当捕获模式设置为
CAPTURE_MODE_ZERO_SHUTTER_LAG
时,与其他捕获模式相比,预计快门按钮被点击到拍摄照片之间的延迟将最小化。在不支持ZERO_SHUTTER_LAG
的设备上,它将回退到CAPTURE_MODE_MINIMIZE_LATENCY
。 - 弃用
android.camera.core.VideoCapture
。 - 添加
setStreamUseCase()
作为公共Camera2Interop
API。 - 添加了
setOutputImageRotationEnabled
的 API 级别要求。 - 将
ImageAnalysis.Analyzer#getTargetResolutionOverride()
重命名为ImageAnalysis.Analyzer#getDefaultTargetResolution()
。 - 添加了用于将位置元数据设置为已保存视频的 API。
- 修复了使用
VideoCapture
和 Preview 用例且纵横比为 16:9 时的低帧率问题。 - 修复了在某些三星设备上启用 BOKEH 扩展程序且用户切换摄像头时出现的预览变黑问题。
- 修复了 Samsung J7 Prime (SM-G610M) 和 J7 (SM-J710MN) 在 API 级别 27 设备上
Preview/VideoCapture
拉伸问题。 - 禁用了解决三星 Android T 上前置摄像头水平翻转自动对焦区域的解决方法,因为该问题已修复。
版本 1.2.0-rc01
2022 年 10 月 24 日
androidx.camera:camera-*:1.2.0-rc01
已发布。版本 1.2.0-rc01 包含这些提交。
API 更改
- 为
OutputConfiguration
添加setStreamUseCase
API。用户可以为流会话指定流用例,覆盖 CameraX 的内部逻辑以选择流用例,以便根据需要进行优化。(Ib1a95)。
错误修复
- 修复了 Samsung J7 Prime (SM-G610M) 和 J7 (SM-J710MN) 在 API 级别 27 设备上
Preview/VideoCapture
拉伸问题。分辨率 1920x1080 导致Preview/VideoCapture
图像被拉伸。添加了解决方法,不为 Preview 或VideoCapture
选择 1920x1080 分辨率,以避免图像拉伸问题。(I0e04e)。 - 修复了在某些华为设备上使用
VideoCapture
和 Preview 用例且纵横比为 16:9 时的低帧率问题。(If8c88,b/223643510)。 - 修复了当 Preview 的
SurfaceProvider
未设置时,相机打开失败的问题。作为修复的一部分,现在不会将未设置SurfaceProvider
的 Preview 配置到相机捕获会话中。(I99681)。
版本 1.2.0-beta02
2022 年 9 月 21 日
androidx.camera:camera-*:1.2.0-beta02
已发布。版本 1.2.0-beta02 包含这些提交。
API 更改
- 添加
setOutputImageRotationEnabled
的 API 级别要求(I26e3e,b/240993561)。
错误修复
- 禁用了解决三星 Android T 上前置摄像头水平翻转自动对焦区域的解决方法,因为该问题已修复。(I05f69)。
- 修复了在某些三星设备上启用
BOKEH
扩展程序且用户切换摄像头时出现的预览变黑问题。(If6168)。
版本 1.2.0-beta01
2022 年 8 月 24 日
androidx.camera:camera-*:1.2.0-beta01
已发布。版本 1.2.0-beta01 包含这些提交。
新功能
- 新增库
camera-mlkit-vision
。轻松地将 CameraX 与许多 MLKit 功能集成,包括条形码扫描、人脸检测、文本检测等。请在此处找到示例代码 here。 - 新增实验性 零快门延迟 API。优化捕获管道以获得更好的延迟,同时保持良好的图像质量。当捕获模式设置为 CAPTURE_MODE_ZERO_SHUTTER_LAG 时,预计快门按钮被点击到拍摄照片之间的延迟将最小化,与其他捕获模式相比。在不支持 ZERO_SHUTTER_LAG 的设备上,它将回退到 CAPTURE_MODE_MINIMIZE_LATENCY。
- 将
ImageAnalysis.Analyzer
和MLKitAnalyzer
设为正式 API。 - 公开用于将位置元数据设置为已保存视频的 API。
- 将
ImageAnalysis.Analyzer#getTargetResolutionOverride()
重命名为ImageAnalysis.Analyzer#getDefaultTargetResolution()
。
错误修复
- 修复了 Alps k61v1_basic_ref 图像捕获问题。从 HAL 捕获的 JPEG 图像具有不正确的 Exif 元数据。Exif 元数据没有 0xffd9 或 0xffda 标记,导致
ExifInterface
无法正确解析属性。以 YUV 格式捕获图像,然后将其压缩为 JPEG 输出图像以解决此问题。(I45abb)。
版本 1.2.0-alpha04
2022 年 7 月 27 日
androidx.camera:camera-*:1.2.0-alpha04
已发布。版本 1.2.0-alpha04 包含这些提交。
API 更改
- 将
ImageAnalysis.Analyzer#getTargetResolutionOverride()
重命名为ImageAnalysis.Analyzer#getDefaultTargetResolution()
。行为也已更改,因此此方法返回的值可以被ImageAnalysis#setTargetResolution()
的值覆盖。(If1d36)。 - 公开用于将位置元数据设置为已保存视频的 API。可以通过新的 API
androidx.camera.video.OutputOptions.Builder.setLocation(Location)
设置android.location.Location
对象。(I313a0,b/204197544)。
错误修复
- 修复了在解除绑定预览的情况下拍摄照片的问题(Ie70b6,b/235119898)。
- 修复了当尝试在音频源不可用时录制时,
Recorder
中发生的崩溃。(I9f652)。
版本 1.2.0-alpha03
2022 年 6 月 29 日
androidx.camera:camera-*:1.2.0-alpha03
已发布。版本 1.2.0-alpha03 包含这些提交。
API 更改
- 删除了
ImageAnalysis.Analyzer
和MLKitAnalyzer
的实验性注释。(I0ff22)。
错误修复
- 添加了自动对焦默认超时 5000 毫秒,如果
FocusMeteringAction
未取消且自动对焦部分在此期间未收敛,则将使用isFocusSuccessful
false 完成自动对焦部分。(Ibc2e3)。 - 修复了在解除绑定预览的情况下拍摄照片的问题(I1d3a2,b/235119898)。
- 启用高级扩展程序实现并将 CameraX 支持扩展程序接口版本更新到 1.2(I92256)。
版本 1.2.0-alpha02
2022 年 6 月 1 日
androidx.camera:camera-*:1.2.0-alpha02
已发布。版本 1.2.0-alpha02 包含这些提交。
新功能
- 公开 CameraX 零快门延迟 API 作为实验性功能。
API 更改
- 在
ImageCapture
中添加新的捕获模式CAPTURE_MODE_ZERO_SHUTTER_LAG
,并在CameraInfo
中添加isZslSupported
以查询设备功能。CAPTURE_MODE_ZERO_SHUTTER_LAG
模式旨在为即时捕获提供最小的延迟。它是基于环形缓冲区实现的,该缓冲区缓存中间捕获结果,以便在用户按下按钮拍摄照片时进行后期重新处理。如果绑定了 {@link VideoCapture} 或闪光灯模式不是关闭状态或 OEM 扩展程序已打开,则此模式将自动禁用。(I9ae74)。 - 添加
ImageAnalysis.getBackgroundExecutor()
方法(Icc945)。
错误修复
- 修复了
ImageCapture
takePicture 方法在报告的设备上关闭手电筒的问题。(Ib5eb5,b/228272227)。 - 修复了一个错误,即在获取
CONTROL_ZOOM_RATIO_RANGE
特性时未处理AssertionError
。(/Ia248a,b/231701345)。
版本 1.2.0-alpha01
2022 年 5 月 18 日
androidx.camera:camera-*:1.2.0-alpha01
已发布。版本 1.2.0-alpha01 包含这些提交。
新功能
- 新库 camera-mlkit-vision 已发布
错误修复
- 修复了当启用回退策略时,
QualitySelector
无法录制 UHD 视频的问题。当VideoCapture
在 FULL 或更高硬件级别的摄像头设备上与ImageCapture
和 Preview 绑定时,会出现此问题。QualitySelector
的回退策略导致VideoCapture
错误地获取 FHD 分辨率。实际上,此用例组合支持 UHD 分辨率,并且应采用该分辨率。(I0e788,b/230651237)。 - 修复了
ImageCapture.takePicture()
上的NullPointerException
。(I92366,b/230454568,b/229766155)。 - 修复
androidx.camera.video.Recorder
的异步暂停行为(Ia8ce8)。
Camera-Camera2、Camera-Core、Camera-Lifecycle 和 Camera-Video 版本 1.1.0
版本 1.1.0
2022 年 6 月 29 日
androidx.camera:camera-*:1.1.0
已发布。 版本 1.1.0 包含以下提交。
自 1.0.0 以来重要更改
- View、Extension 和 Video Capture 库发布了第一个 RC 版本。从 1.1.0-beta01 开始,所有 CameraX 库将统一版本号。这将帮助开发者更容易跟踪版本,并降低大型版本兼容性矩阵的复杂性。
- 引入了新的公共 API 和功能,包括
- 添加了官方 camera-video 库以支持视频捕获用例。
- YUV 到 RGB 的转换和旋转功能(
ImageAnalysis.Builder.setOutputImageRotationEnabled
和setOutputImageFormat
) - 通过允许 CameraX 应用程序在相机被其他应用程序中断并焦点返回时恢复相机,支持多窗口模式。
- 通过修复一些预览问题,确保 CameraX 在折叠设备上正常工作。
- 添加了一个
CameraState
API,它将通过 CameraInfo 公开。 - 添加了一个 API
ProcessCameraProvider.getAvailableCameraInfos()
用于直接检索有关可用摄像头的信息 - 当启用扩展程序时,
ImageCapture#OnImageCapturedCallback
的输出 JPEG 格式。 - 在
CameraInfo
中添加了一个 APIisFocusMeteringSupported
,允许应用程序检查给定的FocusMeteringAction
是否在当前相机上受支持。 - 公开了
getResolutionInfo
API,以提供 Preview、ImageCapture
和ImageAnalysis
的分辨率信息。 - 添加了一个新的 API
ImageCapture.Builder#setJpegQuality
,允许在拍照时更改输出 JPEG 图像压缩质量。 - 将
CameraSelector#filter
添加到公共 API 中,以便根据CameraSelector
过滤CameraInfos
列表。 - 添加了
Camera2CameraControl.clearCaptureRequestOptions
用于清除现有的捕获请求选项。 - 添加了一个实验性 API,用于将
CameraController
与外部图像处理库一起使用。例如 MLKit - 添加了实验性 API
CameraInfo#getCameraSelector()
,它返回其相机唯一的CameraSelector
- 将多个实验性 API 提升为正式的公共 API
- 将注释
@Experimental
替换为@RequiresOptIn
以用于实验性 API。要调用实验性 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#getLayoutDirection
、ViewPort.Builder#setLayoutDirection
和ViewPort.Builder#setScaleType
用于自定义视口。 - 将
ExperimentalUseCaseGroupLifecycle
提升为正式的公共 API。 - 对现有 API 的更改
MediaStoreOutputOptions.getCollection
已重命名为MediaStoreOutputOptions.getCollectionUri
。ActiveRecording
已重命名为“Recording”以减少冗余。- 将
QualitySelector
创建器 API 更改为基于列表的 API
错误修复
- 修复了当启用扩展模式并设置
ImageCapture#CAPTURE_MODE_MAX_QUALITY
模式时,YuvToJpegProcessor
EOFException
问题。 - 修复了由于视频录制关闭导致编解码器配置失败的问题
- 修复了以 FHD 录制时预览/视频纵横比拉伸的问题
- 修复了某些设备上暂停和恢复后音频/视频不同步的问题
- 修复了在低光环境下闪光模式为自动或始终开启时,轻触对焦(
startFocusAndMetering
)期间触发闪光灯的问题。
版本 1.1.0-rc02
2022 年 6 月 1 日
androidx.camera:camera-*:1.1.0-rc02
已发布。 版本 1.1.0-rc02 包含以下提交。
错误修复
- 修复了
ImageCapture.takePicture()
上的NullPointerException
。(I92366,b/230454568,b/229766155)。 - 修复了获取
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 版本
错误修复
- 修复了当
VideoCapture<Recorder>
解绑时未释放视频编解码器的问题,导致随后使用VideoCapture<Recorder>
在使用MediaCodec.CodecException
进行录制时失败,尤其是在 API 21-22 设备上。(Ie7f68) - 修复
CameraExtensionsActivity
的捕获图像未在ImageCaptureTest
中删除的问题
版本 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)
错误修复
- 修复了在多窗口中旋转设备后,活动未重新启动时,
PreviewView
中预览变成侧面的问题。(I1ea36,b/223488673) - 修复了一个多窗口问题,即当焦点切换回应用程序时,它无法恢复相机,当 (1) 其他高优先级应用程序打开不同的相机 (2) 设备为三星 Android 12 设备时。(I7e9f2)
- 包含针对检查闪光灯可用性时崩溃的设备的解决方法。这些设备将无法使用手电筒。(If26a3,b/216667482)
- 修复了应用程序使用扩展程序并启用 proguard 时发生的
AbstractMethodError
问题。(I7cbaf,b/222726805) - 强制在摩托罗拉 razr 5G 设备上禁用散景扩展模式,这会导致预览屏幕变黑。(I35d49)
- 修复了某些三星 API 29 之前的设备上暂停和恢复后音频/视频不同步的问题。(I64622,b/202798609,b/202798572)
- 修复了索尼 G3125 上暂停和恢复后音频/视频不同步的问题。(I2a1a5,b/202799148)
- 修复了当 Recorder 遇到
InvalidConfigException
时发生的崩溃。但是,此修复程序仅防止应用程序崩溃,而不会解决InvalidConfigException
的根本原因。如果仍然无法配置Recorder
,应用程序将在其开始录制时收到错误回调。(I89c29,b/213617227)
外部贡献
- 更新:compose:ui:ui-test api (updateApi) 由于 test-coroutines-lib 迁移(I3366d)
版本 1.1.0-beta02
2022 年 2 月 23 日
androidx.camera:camera-*:1.1.0-beta02
已发布。 版本 1.1.0-beta02 包含以下提交。
API 更改
- 添加了通过 Camera2Interop 指定物理摄像头 ID 的功能。(I5aed8)
错误修复
版本 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)
错误修复
- 修复了在某些 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.HD
,QualitySelector.FALLBACK_STRATEGY_LOWER
已更改为FallbackStrategy.lowerQualityOrHigherThan(Quality)
返回的实例。创建QualitySelector
的 API 已更改为基于列表的 API。新的 APIQualitySelector.fromOrderedList(List<Quality>)
将引用输入质量列表的顺序,而不是QualitySelector.Procedure
创建的顺序。QualitySelector.Procedure
类已被删除。(I43343)PendingRecording.withEventListener()
方法已被移除,事件监听器现在必须传递给PendingRecording.start()
方法。此事件监听器要求旨在鼓励处理VideoRecordEvent.Finalize
事件中报告的异步错误。(I1e71d)ActiveRecording
已重命名为Recording
以减少冗余。(I77ceb)
错误修复
- 修复了在 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
无法为这些相机支持Preview
、ImageCapture
、ImageAnalysis
或VideoCapture
使用案例。因此,应过滤掉这些相机以防止错误使用。(Ib8cda) CameraSelector#filter
在结果集为空时不再抛出IllegalArgumentException
。(I27804)- 现在使用更智能的启发式方法根据 OEM 指定的配置文件选择编码器设置。(Iaeef0)
- 修复了在 Pixel 1 上启动 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} 映射到另一个 {UseCase}。例如,将使用ImageAnalysis
检测到的面部坐标映射到Preview
。(I9ff1e)添加了一个新的 API
ImageCapture.Builder#setJpegQuality
,允许在拍照时更改输出 JPEG 图像的压缩质量。(I8dcf4)将
MediaStoreOutputOptions.getCollection
重命名为MediaStoreOutputOptions.getCollectionUri
。(I16639)
错误修复
- 修复了在弱光环境下,当闪光灯模式为自动或始终开启时,在点击对焦(
startFocusAndMetering
)期间触发闪光灯的问题。(Id4c11) - 在 Pixel 2 XL/Pixel 3 XL 上禁用 HDR+ 的
MINIMIZE_LATENCY
模式以降低延迟。(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)
错误修复
- 抛出
InitializationException
以使应用程序能够优雅地处理创建CameraCharacteristics
时发生的AssertionError
。(Ibec79)
版本 1.1.0-alpha09
2021 年 9 月 29 日
androidx.camera:camera-camera2:1.1.0-alpha09
、androidx.camera:camera-core:1.1.0-alpha09
和 androidx.camera:camera-lifecycle:1.1.0-alpha09
已发布。版本 1.1.0-alpha09 包含这些提交。
API 更改
- 现在 API 不再是实验性的,因此删除了
ExperimentalUseCaseGroup
注解。(I01ef5)
错误修复
- 修复了在
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-alpha08
、androidx.camera:camera-core:1.1.0-alpha08
和 androidx.camera:camera-lifecycle:1.1.0-alpha08
已发布。版本 1.1.0-alpha08 包含这些提交。
新功能
- 为
image analysis
配置添加了setOutputImageFormat
API。用户可以选择ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888
或ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888
。默认情况下,将选择ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888
。(I7902d)
API 更改
- 现在 API 不再是实验性的,因此删除了
ExperimentalUseCaseGroupLifecycle
注解。(I17b85)
错误修复
- 修复了华为 P20 Lite 上预览屏幕过亮的问题。此问题仅在某些特殊的预览分辨率与较大的缩放值一起使用时才会发生。(Idefce,b/192129158)
- 修复了在某些设备上,将闪光灯模式设置为
FLASH_MODE_ON
后,紧接着拍照时闪光灯无法工作的问题。(Ieb49b) - 修复了如果
VideoCapture
、ImageCapture
和Preview
绑定,则在拍照时预览会暂停一段时间的问题。(I56197,b/193864120) - 允许
ImageAnalysis
选择大于 1080p 的分辨率。当与Preview
和ImageCapture
绑定时,高于 LIMITED 级别以上的设备可以为ImageAnalysis
支持 RECORD 大小的分辨率。折衷方案是ImageCapture
选择的分辨率也需要是 RECORD 大小的分辨率。要成功为ImageAnalysis
选择 RECORD 大小的分辨率,应在ImageCapture
和ImageAnalysis
上都设置 RECORD 大小的目标分辨率。这表示应用程序清楚地理解了这种折衷方案,并且更希望ImageAnalysis
具有更大的分辨率,而不是ImageCapture
具有最大的分辨率。有关 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
中,如果保存位置是文件,则返回已保存图像的 URI。(Ib5b49,b/149241379) - 修复了在许多设备上使用闪光灯拍摄的图像变暗的问题。(I4e510)
版本 1.1.0-alpha07
2021 年 7 月 21 日
androidx.camera:camera-camera2:1.1.0-alpha07
、androidx.camera:camera-core:1.1.0-alpha07
和 androidx.camera:camera-lifecycle:1.1.0-alpha07
已发布。版本 1.1.0-alpha07 包含这些提交。
错误修复
- 修复了三星 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-alpha06
、androidx.camera:camera-core:1.1.0-alpha06
和 androidx.camera:camera-lifecycle:1.1.0-alpha06
已发布。版本 1.1.0-alpha06 包含这些提交。
API 更改
- 将 camera-core 的实验性曝光补偿 API 提升为正式 API。(I08ee8)
- 在 CameraInfo 中添加了一个 isFocusMeteringSupported API,允许应用程序检查给定的 FocusMeteringAction 是否在当前相机上受支持。(Ib45ae,b/188606490)
- 公开 getResolutionInfo API 以提供预览、图像捕获和图像分析的分辨率信息。(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 提升为正式 API。添加了
ViewPort#getLayoutDirection
、ViewPort.Builder#setLayoutDirection
和ViewPort.Builder#setScaleType
用于自定义视口。(I7cee8)
版本 1.1.0-alpha05
2021年6月2日
androidx.camera:camera-camera2:1.1.0-alpha05
、androidx.camera:camera-core:1.1.0-alpha05
和 androidx.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)
错误修复
- 修复了在某些 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-alpha04
、androidx.camera:camera-core:1.1.0-alpha04
和 androidx.camera:camera-lifecycle:1.1.0-alpha04
已发布。版本 1.1.0-alpha04 包含这些提交。
错误修复
- 修复了多个线程同时访问同一集合导致的内存泄漏。内存泄漏可能导致 Activity 或 Fragment 被 Preview 实例保留。(I7b4b8)
- 将注释
@Experimental
替换为@RequiresOptIn
用于实验性 API。要调用实验性 API,请使用androidx.annotation.OptIn
而不是已弃用的androidx.annotation.experimental.UseExperimental
。(Iff226) - 修复了在三星 Galaxy S7 上,带有闪光灯开启/自动的 ImageCapture 拍摄的照片颜色过淡的问题。(I30001)
- 添加了一个相机状态 API,该 API 将通过 CameraInfo 公开。(I75392)
版本 1.1.0-alpha03
2021年3月24日
androidx.camera:camera-camera2:1.1.0-alpha03
、androidx.camera:camera-core:1.1.0-alpha03
和 androidx.camera:camera-lifecycle:1.1.0-alpha03
已发布。版本 1.1.0-alpha03 包含这些提交。
错误修复
- 在启用扩展模式时,为
ImageCapture#OnImageCapturedCallback
输出 JPEG 格式。(I0d7b1) - 修复了 UMIDIGI BISON 设备上的初始化失败问题。(I57d9e,b/180818665)
- 修复了三星 A3 上 PreviewView 预览画面拉伸的问题。(Iacb30,b/180121821)
版本 1.1.0-alpha02
2021年2月24日
androidx.camera:camera-camera2:1.1.0-alpha02
、androidx.camera:camera-core:1.1.0-alpha02
和 androidx.camera:camera-lifecycle:1.1.0-alpha02
已发布。版本 1.1.0-alpha02 包含这些提交。
API 更改
- 添加了一个 API
ProcessCameraProvider.getAvailableCameraInfos()
以直接检索有关可用相机的信息,这些信息可以是设备的所有相机,也可以是CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector)
中提供的CameraSelector
选择的相机。(Ieac08)
错误修复
- CameraX 现在尝试在初始尝试时强制打开相机,这可能导致 CameraX 在其应用程序具有更高优先级时从其他相机客户端处抢夺相机。(Iab069,b/175820568)
- 修复了在 CameraXConfig 中使用 setAvailableCamerasLimiter 时发生的 Robolectric 测试失败问题。(Ice307)
- 此更改在 ImageAnalysis 中图像队列已满时捕获异常。因此,您可能会注意到其他用例冻结或变慢,而不是崩溃。例如,预览冻结/变慢。(Ic12da,b/175851631)
- 修复了仅绑定预览或图像捕获时,ExtensionsErrorListener 报告错误的问题。(I5ae39)
- 通过在拍照前移除对已保存图像位置的验证,修复了 ImageCapture 的性能下降问题。进行此更改后,如果保存目标无效,则获取失败响应的时间会更长,因为它会在拍照后尝试保存图像。(I1fd4e,b/177061560)
- 修复了使用“文件”类型 OutputFileOptions 时的 ImageCapture 性能下降问题。(I5164a,b/177061560)
- 文档已更新,建议不要从库代码中使用
ProcessCameraProvider.configureInstance(...)
。(Ib8a9f)
版本 1.1.0-alpha01
2021年1月27日
androidx.camera:camera-camera2:1.1.0-alpha01
、androidx.camera:camera-core:1.1.0-alpha01
和 androidx.camera:camera-lifecycle:1.1.0-alpha01
已发布。版本 1.1.0-alpha01 包含这些提交。
错误修复
- 包含了对 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.2
、androidx.camera:camera-core:1.0.2
和 androidx.camera:camera-lifecycle:1.0.2
已发布。版本 1.0.2 包含这些提交。
错误修复
- 修复了在
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.1
、androidx.camera:camera-core:1.0.1
和 androidx.camera:camera-lifecycle:1.0.1
已发布。版本 1.0.1 包含这些提交。
错误修复
修复了在某些 Android 11 设备上,
setZoomRatio
和setLinearZoom
中返回的ListenableFuture
无法完成的问题。(I716d7)修复了在某些设备上,相机卡在关闭相机状态并导致预览变黑的问题。(I34c99)
Camera-Camera2、Camera-Core 和 Camera-Lifecycle 版本 1.0.0
版本 1.0.0
2021 年 5 月 5 日
androidx.camera:camera-camera2:1.0.0
、androidx.camera:camera-core:1.0.0
和 androidx.camera:camera-lifecycle:1.0.0
已发布。 版本 1.0.0 包含以下提交。
1.0.0 的主要功能
已知问题
- 请参阅 已知问题列表
版本 1.0.0-rc05
2021年4月21日
androidx.camera:camera-camera2:1.0.0-rc05
、androidx.camera:camera-core:1.0.0-rc05
和 androidx.camera:camera-lifecycle:1.0.0-rc05
已发布。 版本 1.0.0-rc05 包含以下提交。
错误修复
- 修复了在三星 Galaxy S7 上,带有闪光灯开启/自动的 ImageCapture 拍摄的照片颜色过淡的问题。(I30001)
版本 1.0.0-rc04
2021年3月24日
androidx.camera:camera-camera2:1.0.0-rc04
、androidx.camera:camera-core:1.0.0-rc04
和 androidx.camera:camera-lifecycle:1.0.0-rc04
已发布。 版本 1.0.0-rc04 包含以下提交。
错误修复
- 修复了 UMIDIGI BISON 设备上的初始化失败问题。(I57d9e,b/180818665)
版本 1.0.0-rc03
2021年2月24日
androidx.camera:camera-camera2:1.0.0-rc03
、androidx.camera:camera-core:1.0.0-rc03
和 androidx.camera:camera-lifecycle:1.0.0-rc03
已发布。 版本 1.0.0-rc03 包含以下提交。
错误修复
- 修复了
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)
- 修复了使用“文件”类型 OutputFileOptions 时的 ImageCapture 性能下降问题。(I5164a,b/177061560)
版本 1.0.0-rc02
2021年1月27日
androidx.camera:camera-camera2:1.0.0-rc02
、androidx.camera:camera-core:1.0.0-rc02
和 androidx.camera:camera-lifecycle:1.0.0-rc02
已发布。 版本 1.0.0-rc02 包含以下提交。
错误修复
- 修复了当所有预览支持的大小都小于 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-rc01
、androidx.camera:camera-core:1.0.0-rc01
和 androidx.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)
错误修复
- 包含了针对 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-beta12
、androidx.camera:camera-core:1.0.0-beta12
和 androidx.camera:camera-lifecycle:1.0.0-beta12
已发布。 版本 1.0.0-beta12 包含以下提交。
错误修复
- 在三星 A3 设备上禁用了自动闪光灯,以修复在三星 A3 设备上使用自动闪光灯 AE 模式拍摄照片时发生的崩溃。(Ia5fe3、b/157535165)
- 修复了在运行 Android L(API 级别 21 和 22)的 Nexus 4 设备上预览被拉伸的问题。(I4d407、b/158749159)
OnImageCapturedCallback#onCaptureSuccess
基类实现不再关闭图像。这是为了防止开发人员出现意外行为。开发人员不应依赖 super.onCaptureSuccess 来关闭图像。(Ifbf9c)- androidx 变体的 Experimental 注解已弃用,以与 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)
错误修复
- 修复了当相机 ID 为非整数相机 ID 时发生的 NumberFormatException 问题。(Ib2228)
- 改进了 CameraX 初始化和 bindToLifecycle 的延迟(I61dc5)
- 创建 UseCase 不需要初始化 CameraX 即可完成。所有特定于实现的配置都将在 UseCase 附加到 Camera 实例后设置,对于公共 API 而言,该实例为
ProcessCameraProvider.bindToLifecycle()
。(Ia5411) <UseCase>.getTargetRotation()
将返回Surface.ROTATION_0
,如果在附加到 Camera 实例之前调用,除非在 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)
错误修复
- 修复了当相机 ID 为非整数相机 ID 时发生的 NumberFormatException 问题。(Ib2228)
- 创建 UseCase 不需要初始化 CameraX 即可完成。所有特定于实现的配置都将在 UseCase 附加到 Camera 实例后设置,对于公共 API 而言,该实例为
ProcessCameraProvider.bindToLifecycle()
。(Ia5411) <UseCase>.getTargetRotation()
将返回Surface.ROTATION_0
,如果在附加到 Camera 实例之前调用,除非在 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 包含以下提交。
错误修复
- 修复了验证图像捕获的文件保存目标的错误(I8c565、b/167697553)
Camera-Camera2 版本 1.0.0-beta10
2020 年 9 月 23 日
androidx.camera:camera-camera2:1.0.0-beta10
已发布。 版本 1.0.0-beta10 包含以下提交。
错误修复
- 发布以支持 Camera-Core 1.0.0-beta10
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)
错误修复
- 修复了平板设备上的目标纵横比问题。当目标纵横比设置为
AspectRatio.RATIO_16_9
时,应选择 16:9 尺寸。(Ib7fcf,b/151969438) - 抛出
InitializationException
,使应用程序能够优雅地处理创建 CameraCharacteristics 时发生的 AssertionError。(I89c8c,b/160524721) - 为曝光补偿添加了实验性接口(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)
错误修复
- 修复了一些设备上闪光灯无法关闭的问题。当闪光灯模式设置为
FLASH_MODE_ON
拍照时,并在闪光灯触发时更改为FLASH_MODE_OFF
时会发生这种情况。症状类似于启用了手电筒模式。(Ib4451,b/162568128) - 如果启用了扩展效果并且供应商库实现需要对输出表面进行特殊处理,则强制 PreviewView 使用 TextureView。(I0c3cc)
- 修复了将 activity/fragment 上下文传递给
ProcessCameraProvider.getInstance(Context)
时发生的 activity/fragment 泄漏问题。
已知问题
- 设置 ViewPort 时,在 HAL 中旋转图像缓冲区的设备上,ImageCapture 的裁剪矩形可能不正确。这将在下一个版本中修复。
Camera-Camera2 版本 1.0.0-beta08
2020年8月19日
androidx.camera:camera-camera2:1.0.0-beta08
已发布。 版本 1.0.0-beta08 包含以下提交。
错误修复
- 优化了 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)
错误修复
- 对于图像捕获,基于相机方向覆盖元数据中的水平翻转标志。(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 包含以下提交。
错误修复
Camera-Core 版本 1.0.0-beta07
2020年7月22日
androidx.camera:camera-core:1.0.0-beta07
已发布。 版本 1.0.0-beta07 包含以下提交。
API 更改
- 将
FIT_CENTER
、FIT_START
和FIT_END
拟合样式与FIT
合并。FIT
表示返回的裁剪矩形将是最大可能的传感器矩形。(Ia73c3) - 预览的裁剪矩形由视口配置。只有裁剪矩形覆盖的区域对最终用户可见。(I142a4)
错误修复
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)
错误修复
- 修复了在三星 Galaxy S7 上 startFocusAndMetering 无法成功聚焦的问题。(If3be7,b/159039233)
- 修复了退出应用程序后无法关闭相机的问题。(I7a7b3)
- 修复了使用 PreviewView 的 SurfaceView 实现时,重复切换相机会导致预览中断的问题(I920ce)
- 如果指定的 MeteringPoint 都不生成有效的测光矩形,则
CameraControl#startFocusAndMetering
将失败。(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)
错误修复
- 现在可以在调用
ProcessCameraProvider#getInstance()
之前使用ProcessCameraProvider#configureInstance()
配置 CameraX。这允许自定义CameraXConfig
,而无需在应用程序的 Application 类中实现CameraXConfig.Provider
。(Ia1a8d) - 如果指定的 MeteringPoint 都不生成有效的测光矩形,则
CameraControl#startFocusAndMetering
将失败。(Id53ce)
Camera-Camera2 版本 1.0.0-beta05
2020年6月10日
androidx.camera:camera-camera2:1.0.0-beta05
已发布。 版本 1.0.0-beta05 包含以下提交。
错误修复
- 修复了在手机处于勿扰模式下初始化 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 时应用启动崩溃的问题。一个包含
CameraUnavailableException
的InitializationException
将被设置为初始化结果的ListenableFuture
,而不是导致应用崩溃。(I9909a,b/149413835)
错误修复
- 更新了
setTargetResolution
和setTargetRotation
的 javadoc。(Iae16f)
Camera-Camera2 版本 1.0.0-beta04
2020 年 5 月 27 日
androidx.camera:camera-camera2:1.0.0-beta04
已发布。 版本 1.0.0-beta04 包含以下提交。
错误修复
- 允许应用程序通过
Camera2Interop
设置任何 camera2 捕获请求参数,而不会导致崩溃。请注意,如果由于覆盖参数而导致出现问题,覆盖参数使用 Camera2Interop 时,稳定性和行为无法保证。(Ibe5a1,b/149103700) - 在使用伪本地化的设备上使用应用时,修复了自动初始化问题。(I3bef3,b/154767663)
- 将与分离用例相关的错误日志转换为 Camera2CameraImpl 上的调试日志。(I1a565,b/154422490)
- 修复了即使闪光灯已触发,有时拍摄的图像仍然过暗的问题。(I5d9fa,b/149729613)
- 修复了来自
ImageCapture
的ImageProxy
中的缓冲区未倒带的错误。(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)
错误修复
- 修复了
ImageAnalysis
中的崩溃问题,该问题在ImageReaderProxy
关闭后访问了ImageProxy
。这也使得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) - 修复了来自
ImageCapture
的ImageProxy
中的缓冲区未倒带的错误。(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 包含以下提交。
错误修复
- 支持发布
camera-core
的修复
Camera-Core 版本 1.0.0-beta03
2020 年 4 月 15 日
androidx.camera:camera-core:1.0.0-beta03
已发布。 版本 1.0.0-beta03 包含以下提交。
错误修复
- 修复了 beta03 中的回归问题,在该问题中,使用零个
UseCase
调用bindToLifecycle()
会导致抛出异常。这阻止了在不绑定UseCase
的情况下检索Camera
。
Camera-Camera2 版本 1.0.0-beta02
2020 年 4 月 1 日
androidx.camera:camera-camera2:1.0.0-beta02
已发布。 版本 1.0.0-beta02 包含以下提交。
错误修复
- 修复了由
ImageCapture
生成的ImageProxy
中的ImageInfo.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 包含以下提交。
错误修复
- 修复了由
ImageCapture
生成的ImageProxy
中的ImageInfo.getRotationDegrees()
,使其与 EXIF 方向旋转值匹配。(Id4281,b/150802561) - 修复了
bindToLifecycle
,使其仅在成功绑定时修改 UseCase。以前,当调用bindToLifecycle
以进行分辨率计算时,UseCase 会更新。现在它不再需要更新 UseCase 来进行计算。(I78d9e) - 修复了一个问题,即在多次调用
Preview.setSurfaceProvider()
后预览表面发生变化时,Preview
用例的捕获会话没有更新。
Camera-Camera2 版本 1.0.0-beta01
2020 年 2 月 26 日
androidx.camera:camera-camera2:1.0.0-beta01
已发布。 版本 1.0.0-beta01 包含以下提交。
错误修复
- 将
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
替换为Executor
和Callback
。这通过不再需要处理provideSurface()
上的异常来简化 API,并强制执行provideSurface()
回调不能被取消。这是为了防止旧设备上因过早释放表面而导致的崩溃。SurfaceRequest.Result
对象现在用于跟踪SurfaceRequest
如何使用提供的Surface
。(I7854b) - 将
SurfaceRequest.setSurface(Surface)
重命名为SurfaceRequest.provideSurface(Surface)
,并将SurfaceRequest.setWillNotComplete()
重命名为SurfaceRequest.willNotProvideSurface()
。(I224fe)
错误修复
- 修复了一个问题,即在使用
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 包含以下提交。
错误修复
- 通过确保仅在 Camera2 使用期间保留
Surface
,提高了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
以允许将图像保存到Uri
和OutputStream
。将重载的takePicture
方法合并为一个。更新了测试应用程序以使用Uri
作为规范示例。(Ia3bec) Preview.PreviewSurfaceProvider
已重命名为Preview.SurfaceProvider
。SurfaceProvider
不再需要开发人员创建自己的ListenableFuture
,并且现在通过新的SurfaceRequest
对象提供Surface
。Preview.getPreviewSurfaceProvider()
方法已删除,因为它在Preview
与其他类(如PreviewView
)配对时可能被误用。(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) Preview
和ImageCapture
类现在被标记为 final。(I2500b)- API 已更新,
CameraInfo
的getZoomRatio()
、getMaxZoomRatio()
、getMinZoomRatio()
和getLinearZoom()
方法合并到getZoomState()
中,后者返回一个ZoomState
实例。(Ib19fe) - 从
CameraXConfig
中删除了 API 字段OPTION_TARGET_CLASS
和OPTION_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 相机 ID 的 camera2 互操作路径。您可以使用
Camera2CameraInfo.extractCameraId()
从CameraInfo
中提取相机 ID。以下代码示例演示了如何使用它Camera camera = provider.bindToLifecycle(...); String cameraId = Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
Camera2CameraInfo
类需要ExperimentalCamera2Interop
markerClass。
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。 - 扩展了
setZoomRatio
和setLinearZoom
的参考文档。
错误修复
- 修复了关闭然后打开摄像头导致“先决条件”检查失败的问题。
- 修复了在使用手电筒和缩放 API 时可能发生的
ConcurrentModificationException
。 - 修复了当 mod16 尺寸可用时,现在选择更接近请求分辨率的分辨率的问题。
startFocusMetering
和cancelFocusMetering
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
错误修复
- 修复了在旋转或切换 API 级别 21 和 22 的摄像头后出现预览黑屏的问题。
API 更改
- 实验性:添加了用于提取相机 ID 的 camera2 互操作路径。
Camera-Core 版本 1.0.0-alpha08
2019 年 12 月 18 日
androidx.camera:camera-core:1.0.0-alpha08
已发布。 版本 1.0.0-alpha08 包含这些提交。
已知问题
- 使用
PreviewView
或CameraView
的应用可能具有错误的纵横比预览。这在某些 FULL 设备(例如 Pixel2)上暂停或恢复后发生。
错误修复
- 更新了
FocusMeteringAction
和CameraControl
的文档。 - 为
enableTorch()
和getTorchState()
实现了TorchControl
。
API 更改
- 隐藏了 IntDefs 并将 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
实例是使用静态方法ProcessCameraProvider.getInstance()
异步获取的,该方法返回一个可监听的 future,并在完成时提供ProcessCameraProvider
。它在典型用法中显示在onCreate()
中。您可以将对getInstance()
的调用放在 activity 生命周期的后期,以将初始化延迟推迟到稍后的时间(例如,当用户操作打开相机 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.get()
的情况下从Future
中检索相机提供程序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)
用例“配置”类已被删除。相反,直接构建用例,在每个用例构建器上设置选项。例如
preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
预览用例已更新为接受应用程序创建和管理的 surface,以确保遵循 Android 最佳实践。强烈建议使用 camera-view 包中提供的
PreviewView
视图类。preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
请参阅有关附加应用管理的 surface 的文档。在这些情况下,应用管理 surface 的生命周期。
重要提示:
ImageAnalysis
Analyzer 方法实现必须在完成使用接收到的图像时调用image.close()
。否则,可能不会接收到新图像,或者根据背压设置,相机可能会停止。有关详细信息,请参阅 参考文档。ImageAnalysis ImageReaderMode
现在已更改为反压策略intdef
。ImageProxy.getImage()
被标记为实验性功能。应用程序应使用注解来标注其使用情况,例如@androidx.camera.core.ExperimentalGetImage
Analyzer
的UIThread
注解要求已移除。添加了
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 访问器。startFocusMetering
和cancelFocusMetering
现在返回ListenableFutures
,表示调用的异步操作。MeteringPoints
现在充当测光操作的句柄,并由工厂生成。应用程序应使用现有的工厂,而不是自定义工厂。
修复了问题。
- 修复了在恢复时拍摄照片时的问题(在之前的暂停导致照片等待完成之后)。
- 已知问题:
CameraControl.enableTorch()
功能正常,但返回的ListenableFuture<Void>
始终是立即完成 (成功) 的 Future,即使没有闪光灯单元也是如此。未来的版本将修复此问题,使其符合最终行为:当没有闪光灯单元时,enableTorch(true)
会立即失败(不会向CaptureSession
发送请求),并且TorchState
保持关闭状态。 - 已知问题:
startFocusAndMetering
和cancelFocusAndMetering
启动和取消对焦测光,但返回一个立即完成 (成功) 的 Future,不代表已记录的行为。ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering()
中的FocusMeteringResult
是一个伪造的结果,其isFocusSuccessful()
始终为“false”,与预期的已记录行为不同。 - 已知问题:正在开发一个用于
PreviewView
触摸事件的测光点工厂。目前,连接自定义托管表面的应用程序可以使用现有的测光点工厂,否则PreviewView
不提供任何触摸对焦功能。
Camera-Camera2 和 Camera-Core 版本 1.0.0-alpha06
2019年10月9日
androidx.camera:camera-camera2:1.0.0-alpha06
和 androidx.camera:camera-core:1.0.0-alpha06
已发布。这些是 包含在 camera-camera2:1.0.0-alpha06
中的提交,以及 包含在 camera-core:1.0.0-alpha06
中的提交。
新增功能
纵横比设置的更改
- 添加了
setTargetAspectRatioMode()
方法,并接受枚举参数。此方法设置纵横比模式,选项包括RATIO_4_3
或RATIO_16_9
,而不是任意纵横比。这更准确地反映了相机只提供某些纵横比的事实,而不是任何任意比例。- 目前,仅提供 16:9 和 4:3 两种比例。对于 1:1 比例,只有某些设备的相机才提供此比例,并且仅限于某些分辨率。设计 1:1 界面或进行处理的应用程序应使用更灵活的 16:9 或 4:3 选项,并裁剪显示或处理子区域。
- 这些纵横比方向旨在使用最大的传感器区域。
- 添加了
getTargetAspectRatio()
方法到用例配置 API 中,返回用例输出的目标纵横比。 - ImageCapture 的
setTargetAspectRatio(Rational aspectRatio)
方法已更改为setTargetAspectRatioCustom(Rational aspectRatio)
。设置后,ImageCapture 输出将相应裁剪。
Executor API
- 以下函数接受一个 executor 参数,允许应用程序控制函数在哪个 executor 上运行。
Preview.setOnPreviewOutputUpdateListener()
API。如果该函数没有提供 executor,则它将在主线程上执行。Preview.setOnPreviewOutputUpdateListener
FocusMeteringAction.Builder.setAutoFocusCallback
ImageAnalysis.setAnalyzer
ImageCapture.takePicture
CameraView.takePicture
CameraView.startRecording
VideoCapture.startRecording
添加了 CameraInfo,并检查了闪光灯可用性和传感器旋转 API。
添加了
CameraInfo
和getCameraInfo
方法,允许应用程序检查是否可使用面向镜头的 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()
。
- 通常建议根据应用程序的 UI 设计使用
- Executor API:已从用例配置 API 中移除
setCallbackHandler()
调用。相反,应用程序可以在设置回调的其他各种 API 中将 executor 设置为参数。 - 更新了各种函数的空值注解。
- 修复了在打开相机时导致抛出
java.lang.IllegalStateException at Camera$StateCallback.onError
错误的问题。 - 修复了当应用程序请求更大或默认分辨率时,选择的分辨率过小(小于 640x480),导致预览图像出现块状或模糊的问题。需要较小分辨率的应用程序可以显式请求它们。
- 修复了从启动另一个相机应用程序的 Intent 返回后,相机显示黑屏(无法启动相机)的问题。
- 修复了当应用程序重复启动或停止时抛出以下错误的错误:
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-alpha05
和 androidx.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
添加了
CameraControl
API 和轻触对焦 API。添加了 API,用于从 CameraX 获取特定相机的
CameraControl
,该相机由镜头朝向选择。CameraX.getCameraControl(LensFacing lensFacing)
添加了
MeteringPointFactory
、MeteringPoint
、MeteringMode
和FocusMeteringAction
用于运行轻触对焦。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();
添加了 API,用于
CameraControl
启动和取消对焦测光。getCameraControl(lensFacing).startFocusAndMetering(action);
getCameraControl(lensFacing).cancelFocusAndMetering();
添加了测光点工厂 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 设置的模拟器上测试时出现的问题。
修复了分析图像时旋转导致崩溃的错误。
修复了以下错误:在启动后(无相机数据)、旋转后或在前后摄像头之间切换后,预览显示为黑色。
删除了对多个并发图像分析用例的测试。为了确保兼容性,应用程序应仅附加单个图像分析用例。
在 camera-testing 套件中为虚拟相机添加了初始 robolectric 测试(进行中)。
Camera2Inititalizer 测试已删除,因为其覆盖范围不清楚/具有误导性。
Camera-Camera2 和 Camera-Core 版本 1.0.0-alpha04
2019 年 8 月 7 日
androidx.camera:camera-camera2:1.0.0-alpha04
和 androidx.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 在内部根据设备功能考虑对请求的分辨率和纵横比进行更改时,它首先尝试保持相同的纵横比(由任何
setTargetAspectRatio
或setTargetResolution
调用确定) - 分辨率的“最近的 mod16”版本被视为相同的纵横比。
ImageAnalysis 非阻塞模式
ImageReaderMode.ACQUIRE_LATEST_IMAGE
的行为现在是非阻塞的。它获取队列中的最新图像,但会连续丢弃未使用的图像,以允许相机管道避免阻塞。- 分析器可以无限期地保存单个图像,而不会使管道停滞。
- 如果应用程序提供的执行程序随后被阻塞,则 ImageAnalysis 用例会被阻塞。
- 内部设置的默认执行程序的行为类似于非阻塞执行程序。
错误修复
- 修复了在没有自动对焦、自动曝光和自动白平衡的设备上捕获图像时,等待 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-alpha03
和 androidx.camera:camera-camera2:1.0.0-alpha03
已发布。 版本 1.0.0-alpha03 包含这些提交。
API 更改
- 添加了 setTarget 配置调用中“目标”的 javadoc 说明。
Camera-Core
- 修复了在快速打开/关闭或绑定/解除绑定时未配置的输入/输出表面崩溃的问题。
- 迁移到新的 Futures 实现。
- 测试修复,以实现更强大的测试。
- 核心集成测试现在显示照片的捕获时间。
- 为 Executor 开发了内部兼容类。
- 计时测试应用程序捕获图像等待上一个完成并提高稳定性。
扩展
- 添加了版本检查。
- 额外的测试覆盖范围 - 扩展事件回调。
- 内部对应图像和元数据的改进。
- 测试应用程序中模式切换的修复。
Camera-Camera2 和 Camera-Core 版本 1.0.0-alpha02
2019 年 6 月 5 日
androidx.camera:camera-core:1.0.0-alpha02
和 androidx.camera:camera-camera2:1.0.0-alpha02
已发布。 版本 1.0.0-alpha02 包含这些提交。
错误修复
- 修复了使用模拟器时出现的除以零错误。
- 修复了在某些设备上快速拍摄照片时,在快速解除绑定和重新绑定用例时出现的 NullPointerException/Surface Abandoned 错误。
- 修复了内部问题,以确保捕获请求更新一致地影响所有表面。
- 在新的应用程序实例中重新启动用例时的稳定性改进。
- 内部架构更改,以准备在 API 中支持执行程序。
- 关于 CameraX 类和生命周期管理的其他 Javadoc 说明。
- 为 Antelope 性能测试应用程序添加了检测测试。
- 删除了应用程序 Proguard 配置中对 '-keepattributes Signature' 的需要。
Camera-Camera2 和 Camera-Core 1.0.0-alpha01
2019 年 5 月 7 日
androidx.camera:camera-core:1.0.0-alpha01
和 androidx.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 包含这些提交。
错误修复
<UseCase>.getTargetRotation()
将返回Surface.ROTATION_0
,如果在附加到 Camera 实例之前调用,除非在 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 包含这些提交。
错误修复
- 发布以支持 Camera-Core 1.0.0-beta10
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 包含这些提交。
错误修复
- 当使用从
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 更改
- 现在可以在调用 ProcessCameraProvider#getInstance() 之前使用 ProcessCameraProvider#configureInstance() 配置 CameraX。这允许自定义 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 包含这些提交。
错误修复
- 修复了在手机处于勿扰模式下初始化 CameraX 时应用启动崩溃的问题。一个包含
CameraUnavailableException
的InitializationException
将被设置为初始化结果的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 包含这些提交。
错误修复
- 修复了 beta03 中的回归问题,在该问题中,使用零个
UseCase
调用bindToLifecycle()
会导致抛出异常。这阻止了在不绑定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 包含这些提交。
错误修复
- 修复了文档,以说明在初始化期间获取 ProcessCameraProvider 时,将使用默认配置,并且扩展 Application 是可选的。(I5e395)
Camera-Lifecycle 版本 1.0.0-beta02
2020 年 4 月 1 日
androidx.camera:camera-lifecycle:1.0.0-beta02
已发布。 版本 1.0.0-beta02 包含这些提交。
错误修复
- 更新以支持
camera-camera2:1.0.0-beta02
和camera-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-alpha32
和 androidx.camera:camera-view:1.0.0-alpha32
已发布。版本 1.0.0-alpha32 包含以下提交。
API 更改
- 从内部类/接口中删除了不必要的
@RequiresApi(21)
注释。(I8e286,b/204917951) - 更新 camera-extensions 工件的 api 文件。(If683a,b/161377155)
错误修复
- 禁止应用在绑定
VideoCapture
时启用扩展模式。CameraX Extensions 仅支持ImageCapture
和Preview
。VideoCapture
暂不支持。如果应用绑定了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-alpha31
和 androidx.camera:camera-view:1.0.0-alpha31
已发布。版本 1.0.0-alpha31 包含以下提交。
API 更改
- 将
CameraSelector#filter
添加到公共 API 中,以便根据CameraSelector
过滤CameraInfos
列表。(I105d0)
错误修复
- 修复了在某些设备上快速切换扩展模式时发生的崩溃问题。(Iebbef)
版本 1.0.0-alpha30
2021 年 10 月 13 日
androidx.camera:camera-extensions:1.0.0-alpha30
和 androidx.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)
错误修复
- 修复了启用 Proguard 时发生的 AbstractMethodError 问题。(Iae468,b/201177844)
版本 1.0.0-alpha29
2021 年 9 月 29 日
androidx.camera:camera-extensions:1.0.0-alpha29
和 androidx.camera:camera-view:1.0.0-alpha29
已发布。版本 1.0.0-alpha29 包含以下提交。
API 更改
- 现在 API 不再是实验性的,因此删除了
ExperimentalUseCaseGroup
注解。(I01ef5) - 移除
RotationProvider#removeAllListeners()
。请改用RotationProvider#removeListener(...)
。(Id9d4a) - 更新了 RotationReceiver 类:将 set/clear Listener 更改为 add/remove/removeAll,移除默认使用主线程的 setListener 变体并添加了方法注解。(Ib1669)
错误修复
- 将 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-alpha28
和 androidx.camera:camera-view:1.0.0-alpha28
已发布。版本 1.0.0-alpha28 包含以下提交。
API 更改
- 现在 API 不再是实验性的,因此删除了
ExperimentalUseCaseGroupLifecycle
注解。(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)
错误修复
- 删除了已弃用的
<EffectName><UseCase>Extender
类、ExtensionsErrorListener 和相关的 ExtensionsManager API。(I3b8c3)
版本 1.0.0-alpha27
2021 年 7 月 21 日
androidx.camera:camera-extensions:1.0.0-alpha27
和 androidx.camera:camera-view:1.0.0-alpha27
已发布。版本 1.0.0-alpha27 包含以下提交。
API 更改
- 将视口 API 从实验阶段提升到正式阶段。删除 API 的实验性注解。(I717ea)
- 将
CoordinateTransform#getTransform
重命名为CoordinateTransform#transform
并更新 JavaDoc(I864ae)
错误修复
- 修复了在与 Compose UI 结合使用时
PreviewView PERFORMANCE
模式拉伸问题。(Ie1137,b/183864890)
版本 1.0.0-alpha26
2021年6月30日
androidx.camera:camera-extensions:1.0.0-alpha26
和 androidx.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。目前,此接口仅用于监控在启用扩展模式时是否缺少 Preview 或 ImageCapture。CameraX 会自动添加额外的 Preview 或 ImageCapture 以使扩展功能正常工作。之后,不会再通过此接口报告错误。(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-alpha25
和 androidx.camera:camera-view:1.0.0-alpha25
已发布。版本 1.0.0-alpha25 包含以下提交。
API 更改
- ExperimentalCameraFilter API 现已脱离实验阶段并成为正式 API。它们可以在没有 OptIn 注解的情况下使用。(I4bc94)
- 添加了一个在用例之间转换坐标的实用程序。例如用法:转换在 ImageAnalysis 用例中检测到的坐标并在预览中突出显示检测到的对象。(I63ab1,b/137515129)
- 已移除
CameraView
。CameraView
已被CameraController
替换。有关如何迁移的信息,请参阅迁移指南。(Id5005)
错误修复
- 将
ExperimentalUseCaseGroupLifecycle
替换为ExperimentalUseCaseGroup
。(I3b2ef,b/159033688)
版本 1.0.0-alpha24
2021年4月21日
androidx.camera:camera-extensions:1.0.0-alpha24
和 androidx.camera:camera-view:1.0.0-alpha24
已发布。版本 1.0.0-alpha24 包含以下提交。
错误修复
- 将注释
@Experimental
替换为@RequiresOptIn
用于实验性 API。要调用实验性 API,请使用androidx.annotation.OptIn
而不是已弃用的androidx.annotation.experimental.UseExperimental
。(Iff226) - 修复了 Samsung J5 Prime 上的 PreviewView 拉伸问题(Ib10b6)
Camera Extensions & View 版本 1.0.0-alpha23
2021年3月24日
androidx.camera:camera-extensions:1.0.0-alpha23
和 androidx.camera:camera-view:1.0.0-alpha23
已发布。版本 1.0.0-alpha23 包含以下提交。
API 更改
- CameraView 即将弃用。请改用
LifecycleCameraController
。请参阅迁移指南(Idac2c) - 向 setLinearZoom() 添加了 FloatRange 注解(I69971)
错误修复
- 固定 camera-view 依赖项以依赖于 1.0.0 工件。依赖于 camera-view 将不再导致 Gradle 的依赖项解析自动将 camera-core、camera-camera2 和 camera-lifecycle 升级到最新的 1.1.0 工件,尽管 camera-view 如果显式设置为使用 1.1.0,则仍与这些工件兼容。(Ic8fa1,b/181599852)
- 修复了三星 A3 上 PreviewView 预览画面拉伸的问题。(Iacb30,b/180121821)
- 修复了如果在初始化相机之前无法设置相机选择器的问题。(Ic8bd0)
Camera Extensions & View 版本 1.0.0-alpha22
2021年2月24日
androidx.camera:camera-extensions:1.0.0-alpha22
和 androidx.camera:camera-view:1.0.0-alpha22
已发布。版本 1.0.0-alpha22 包含以下提交。
API 更改
- 向 CameraController 添加了一个 CameraInfo getter。(Ib8138,b/178251727)
错误修复
- 修复了仅绑定预览或图像捕获时,ExtensionsErrorListener 报告错误的问题。(I5ae39)
Camera Extensions & View 版本 1.0.0-alpha21
2021年1月27日
androidx.camera:camera-extensions:1.0.0-alpha21
和 androidx.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-alpha20
和 androidx.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-alpha19
和 androidx.camera:camera-view:1.0.0-alpha19
已发布。 版本 1.0.0-alpha19 包含以下提交。
错误修复
- 在 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 包含以下提交。
错误修复
- 改进了 CameraX 初始化和 bindToLifecycle 的延迟(I61dc5)
<UseCase>.getTargetRotation()
将返回Surface.ROTATION_0
,如果在附加到 Camera 实例之前调用,除非在 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 包含以下提交。
错误修复
- 发布以支持 Camera-Core 1.0.0-beta10
Camera-View 版本 1.0.0-alpha17
2020 年 9 月 23 日
androidx.camera:camera-view:1.0.0-alpha17
已发布。 版本 1.0.0-alpha17 包含以下提交。
错误修复
- 发布以支持 Camera-Core 1.0.0-beta10
Camera-Extensions 版本 1.0.0-alpha16
2020年9月16日
androidx.camera:camera-extensions:1.0.0-alpha16
已发布。 版本 1.0.0-alpha16 包含以下提交。
错误修复
- 在
ExtensionsManager
中添加了获取Extensions
对象的方法,该对象用于在 Camera 实例上启用和查询扩展。(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)
错误修复
- 如果启用了扩展效果并且供应商库实现需要对输出表面进行特殊处理,则强制 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 包含以下提交。
错误修复
ExtensionsManager.init()
方法现在接收 Context 作为参数,而不是没有参数。(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 包含以下提交。
错误修复
DisplayOrientedMeteringPointFactory
接收一个CameraInfo
实例而不是CameraSelector
,以便直接映射到工厂将为其生成点的摄像头。所有使用DisplayOrientedMeteringPointFactory
的类也接收一个CameraInfo
实例而不是CameraSelector
。(I400c1)- 已删除
TextureViewMeteringPointFactory
。PreviewView
提供了一个公共 API(createMeteringPointFactory()
)来创建测光点工厂,而不管它是否使用TextureView
或SurfaceView
。(Ide693) - 将 PreviewView 的
SURFACE_VIEW
/TEXTURE_VIEW
实现模式重命名为PERFORMANCE
/COMPATIBLE
。PERFORMANCE
是旧的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 包含以下提交。
错误修复
- 添加了通过相机 ID 和 CameraCharacteristics 过滤相机的实验性接口。(I28f61)
Camera-View 版本 1.0.0-alpha13
2020年6月24日
androidx.camera:camera-view:1.0.0-alpha13
已发布。 版本 1.0.0-alpha13 包含以下提交。
错误修复
- 当绑定到 LifecycleOwner 时,CameraView 不会再出现 IllegalArgumentException 崩溃,该 LifecycleOwner 的 Lifecycle 在绑定后不久就转换到 DESTROYED 状态。绑定处于 DESTROYED 状态的 Lifecycles 不会尝试打开相机。(I7c2b8)
- 现在可以通过 CameraView.getPreviewStreamState() 获取 PreviewView StreamState。(I21a2b)
Camera-Extensions 版本 1.0.0-alpha12
2020年6月10日
androidx.camera:camera-extensions:1.0.0-alpha12
已发布。 版本 1.0.0-alpha12 包含以下提交。
错误修复
- 修复了在手机处于勿扰模式下初始化 CameraX 时应用启动崩溃的问题。一个包含
CameraUnavailableException
的InitializationException
将被设置为初始化结果的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 包含以下提交。
错误修复
- 添加了
PreviewView#getBitmap()
API,该 API 返回预览表面上显示内容的 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 更改
错误修复
- 添加了
PreviewView#getBitmap()
API,该 API 返回预览表面上显示内容的 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)
错误修复
- 修复了在运行 Android 7.0 及以下版本的
FULL/LIMITED/LEVEL_3
相机上出现的预览失真问题。当 Android 版本为 7.0 或以下时,强制使用ImplementationMode#TEXTURE_VIEW
模式。(I83e30,b/155085307) - 从
PreviewView#createSurfaceProvider()
中删除了CameraInfo
参数,PreviewView
现在在内部从SurfaceRequest
中检索它。(If18f0,b/154652477) - 将 VideoCapture 的默认纵横比修复为 CameraView 中的 16:9。(Ie6a7b,b/153237864)
- 修复了在 ViewPager2 中滑动出
Preview
碎片然后滑回时PreviewView
黑屏的问题。还修复了removeView(previewview)
然后addView(previewView)
时出现的问题。(Iab555,b/149877652,b/147354615) - 更新了
CameraView#takePicture()
API,以允许将图像保存到Uri
和OutputStream
。更新测试应用程序以使用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 包含以下提交。
错误修复
- 支持 Camera-Core 发布的修复
Camera-View 版本 1.0.0-alpha10
2020 年 4 月 15 日
androidx.camera:camera-view:1.0.0-alpha010
已发布。 版本 1.0.0-alpha010 包含以下提交。
错误修复
- 修复了之前已知的一个问题,即
PreviewView
的 SurfaceView 实现某些设备上无法正常工作,并且会在恢复预览后导致应用崩溃。(I5ed6b)
Camera-Extensions 版本 1.0.0-alpha09
2020 年 4 月 1 日
androidx.camera:camera-extensions:1.0.0-alpha09
已发布。 版本 1.0.0-alpha09 包含以下提交。
错误修复
- 更新以支持
camera-camera2:1.0.0-beta02
、camera-core:1.0.0-beta02
和camera-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_VIEW
与PreviewView
结合在某些设备上可能无法正常工作,这是因为用于预览的SurfaceView
在其所在的窗口的生命周期停止时会使它的 surface 失效,当它重启时,相机将重新打开并可能尝试在SurfaceView
的 surface 再次有效之前恢复预览。目前,您应该使用ImplementationMode.TEXTURE_VIEW
。
API 更改
- 将
PreviewView.setImplementationMode()
重命名为PreviewView.setPreferredImplementationMode()
。 - 将
PreviewView.getImplementationMode()
重命名为PreviewView.getPreferredImplementationMode()
。 - 用
PreviewView.createSurfaceProvider(CameraInfo)
替换了PreviewView.getSurfaceProvider()
,它接收一个可为空的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))
已在
PreviewView.getSurfaceProvider()
中添加了@UiThread
注解,这意味着必须从主线程调用它。(I192f3)添加了
PreviewView.setScaleType()
,它允许设置预览的缩放类型。它接受PreviewView.ScaleType
中的一个值,默认为PreviewView.ScaleType.FILL_CENTER
。添加了
PreviewView.getScaleType()
。删除了使用 XML 布局中的
implementationMode
属性设置PreviewView
实现模式的支持。向 PreviewView 添加
createMeteringPointFactory()
API 以支持将PreviewView
中的 (x, y) 转换为MeteringPoint
。(Ib36d7)
错误修复
- 修复了
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 包含以下提交。
错误修复
- 将
SurfaceRequest.provideSurface()
上的ListenableFuture
替换为Executor
和Callback
。这通过不再需要处理provideSurface()
上的异常来简化 API,并强制执行provideSurface()
回调不能被取消。这是为了防止旧设备上因过早释放表面而导致的崩溃。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 包含以下提交。
错误修复
- 之前在
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 更改
PreviewView
的TextureView
实现现在会将TextureView
的大小设置为相机传感器输出大小,然后再将其缩放以填充其父PreviewView
。如果您希望相机预览填充 UI 的整个部分(例如整个屏幕),则不应将PreviewView
的大小设置为固定值,也不应使其包裹其内容(例如使用属性“wrap_content
”),这可能导致相机预览仅填充PreviewView
的一部分(如果相机传感器输出大小较小)。相反,您应该将PreviewView
设置得与其父级一样大(例如使用属性“match_parent
”)。(1204869)
错误修复
- 更新了
ImageCapture
以允许将图像保存到Uri
和OutputStream
。将重载的takePicture
方法合并为一个。更新了测试应用程序以使用Uri
作为规范示例。(Ia3bec) Preview.PreviewSurfaceProvider
已重命名为Preview.SurfaceProvider
。SurfaceProvider
不再需要开发人员创建自己的ListenableFuture
,并且现在通过新的SurfaceRequest
对象提供Surface
。Preview.getPreviewSurfaceProvider()
方法已删除,因为它在Preview
与其他类(如PreviewView
)配对时可能被误用。(I20105)- 之前在
ImageCapture.OnImageSavedCallback.onError()
和ImageCapture.OnImageCapturedCallback.onError()
中传递的参数,现在已被单个参数ImageCaptureException
替换,该参数仍然包含之前传递的所有信息。 - 之前在
ImageCapture.OnImageSavedCallback.onImageSaved()
中传递的文件参数已被移除。(I750d2) - API 已更新,
CameraInfo
的getZoomRatio()
、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 包含以下提交。
错误修复
- 更新以匹配内部 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 的 surface 的使用同步。
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
”某些方法参数已更改可空性
Camera-Extensions 和 Camera-View 版本 1.0.0-alpha03
2019年10月9日
androidx.camera:camera-extensions:1.0.0-alpha03
和 androidx.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-alpha02
和 androidx.camera:camera-view:1.0.0-alpha02
已发布。这些是 包含在 camera-extensions:1.0.0-alpha02 中的提交,这些是 包含在 camera-view:1.0.0-alpha02 中的提交。
- 添加测试以验证
PreviewImageProcessorImpl
是否已正确实现时间戳。 - 修复 Nexus 5(API 级别 21)上的
ExtensionTest
测试失败,并确保预览可用。
Camera-Extensions 和 Camera-View 版本 1.0.0-alpha01
2019 年 8 月 7 日
androidx.camera:camera-extensions:1.0.0-alpha01
和 androidx.camera:camera-view:1.0.0-alpha01
已发布。这些是 camera-extensions:1.0.0-alpha01 中包含的提交,以及这些是 camera-view:1.0.0-alpha01 中包含的提交。
- 用于未来相机扩展的新库,用于访问受支持设备上的效果。此库尚在开发中。
- 新的相机视图类。此库尚在开发中。