CameraX
這個表格列出 androidx.camera 群組中的所有構件。
| 構件 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| camera-camera2 | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-core | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-compose | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-effects | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-extensions | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-feature-combination-query | - | - | - | 1.5.0-alpha06 |
| camera-feature-combination-query-play-services | - | - | - | 1.5.0-alpha06 |
| camera-lifecycle | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-mlkit-vision | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-view | 1.6.2 | 1.7.0-rc01 | - | - |
| camera-viewfinder | - | - | 1.3.0-beta02 | 1.4.0-alpha07 |
| camera-video | 1.6.2 | 1.7.0-rc01 | - | - |
裝置測試
我們在研究室中為許多裝置完成 CameraX 測試。如要查看目前研究室中已完成測試的裝置清單,請參閱已完成研究室測試的 CameraX 裝置。
宣告依附元件
如果要為 CameraX 新增依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一節。
在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:
Groovy
dependencies { // CameraX core library using the camera2 implementation def camerax_version = "1.7.0-rc01" // 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.7.0-rc01" // 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。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
Camera Viewfinder Compose 1.0 版
1.0.0-alpha02 版
2024 年 6 月 12 日
發布 androidx.camera:camera-viewfinder-compose:1.0.0-alpha02。1.0.0-alpha02 版包含這些修訂項目。
1.0.0-alpha01 版
2024 年 5 月 14 日
發布 androidx.camera:camera-viewfinder-compose:1.0.0-alpha01。1.0.0-alpha01 版包含這些修訂項目。
新功能
- 新程式庫。這個程式庫導入了 Compose 原生 Viewfinder 可組合函式,可與 CameraX 和 Camera2 搭配使用。可組合的 Viewfinder 支援不同的顯示比例,並可處理觸控事件。
Camera Viewfinder 1.4 版
1.4.0-alpha07 版本
2024 年 6 月 12 日
發布 androidx.camera:camera-viewfinder:1.4.0-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.7 版
1.7.0-rc01 版
2026 年 10 月 21 日
發布 androidx.camera:camera-*:1.7.0-rc01。1.7.0-rc01 版包含這些修訂項目。
API 變更
- 將
UseCaseCamera2Interop、ImageCaptureCamera2Interop、SessionConfigCamera2Interop和CameraControlCamera2Interop從介面轉換為抽象類別。(If654e) - 修正 Camera2Interop V2 模稜兩可的問題 (I1bbe5)
修正錯誤
- 修正
SurfaceProcessor釋出輸入SurfaceTexture時,CameraXOpenGL執行緒上的原生SIGSEGV停止運作問題,該SurfaceTexture的SurfaceRequest在完成前已進行垃圾收集。(I76f73、b/563673593) - 修正 Surface 洩漏和原生
OpenGL異常終止問題,這類問題可能會在CameraEffect的執行器或HandlerThread於效果的SurfaceOutput關閉前關閉時,在垃圾收集期間發生。(Ifcc19、b/558819242) - 低光源增強行為改善:低光源增強和手電筒現在會遵循「最後設定優先」政策,啟用其中一項功能會自動停用另一項功能,而不是拒絕要求。此外,現在啟用低光源增強功能時,閃光燈可在拍攝相片時閃光。(Ie583f)
androidx.lifecycle:lifecycle-runtime依附元件已更新至 2.10.0。如要搭配 AGP 9.5.0-alpha04 以上版本執行套裝生命週期執行階段 Lint 檢查,則必須使用這個版本。(I99bfd、b/556807521)- 支援從
CameraInfo.getPhysicalCameraInfos()取得實體相機上的CameraSelector,並將UseCases繫結至實體相機。使用實體CameraSelector查詢CameraInfo時,現在會傳回實體CameraInfo,而非邏輯CameraInfo。(Ibe7f2) - 在
OutputOptions.Builder.setLocationJavadoc 中,清楚說明影片中繼資料只會儲存經緯度。(I77d3b、b/551348846) - 修正
ImageAnalysis中的錯誤:動態變更輸出旋轉角度或解除繫結用途,可能會導致 Surface/ImageReader資源外洩。(I25cef) CameraInfo.getIntrinsicZoomRatio()現在會將傳回的比率四捨五入至小數點後兩位。(Ibe9a8)- 放寬
ImageAnalysis中PRIVATE格式的HardwareBuffer.isSupported檢查,避免在某些裝置上發生偽陰性失敗。(I347a4、b/545866947) - 修正以下問題:在較新的 JDK 版本中,解析
CameraX內部欄位上傳遞匯入的 JSpecify 類型註解時,會發生編譯異常終止。(I00bb4、b/543937345)
1.7.0-alpha03 版
2026 年 8 月 12 日
發布 androidx.camera:camera-*:1.7.0-alpha03。1.7.0-alpha03 版包含這些修訂項目。
API 變更
- 淘汰舊版 Camera2Interop API (
Camera2Interop.Extender、Camera2CameraControl、Camera2CameraInfo和CaptureRequestOptions),改用Camera2Interop設定工具工廠方法和 Kotlin 擴充功能函式。(Ib0845、b/529609261) - 新增
preview、imageAnalysis、videoCapture、imageCapture和SessionConfig.Builder的 Kotlin DSLcamera2Interop擴充功能區塊,以及CameraControl.applyCamera2InteropAsync擴充功能函式。(I51af9、b/529609261) - 新增
Camera2Interop設定工具工廠方法 (forUseCase、forImageCapture、forSessionConfig、forCameraControl),以及Preview.Builder、ImageCapture.Builder、ImageAnalysis.Builder、VideoCapture.Builder、SessionConfig.Builder和CameraControl的對應setInterop/applyInteropAsync方法。(I0007b、b/529609261) - 在
Camera2Interop中新增輔助方法和對等的 Kotlin 擴充功能屬性 (CameraInfo.cameraId、CameraInfo.cameraCharacteristics和String.toCameraSelector()),以便從CameraInfo擷取 Camera2 相機 ID 和特性。(I11803、b/529609261) - 將
Preview.setMirrorMode、Preview.getMirrorMode和VideoCapture.setMirrorMode新增至公開 API,並移除ExperimentalMirrorMode註解。(I4ed60、b/519794349、b/470629643) - 新增 Kotlin DSL 建構工具
preview{ ... }、imageCapture{ ... }、imageAnalysis{ ... } 和videoCapture{ ... },用於建立UseCases。(I91df9、b/530013719) - 將 ImagePlane.buffer 修改為不可為空值的 ByteBuffer。(I98593)
- Kotlin DSL 中
SessionConfig.Builder、HighSpeedVideoSessionConfig.Builder和ExtensionSessionConfig.Builder的屬性 getter 已淘汰,以強制執行唯寫屬性。(I2875b、b/534570559)
修正錯誤
- 修正以下問題:將多個
Preview用途與OverlayEffect繫結時,會導致一個預覽串流傳送失敗。(I7a383、b/532577546、b/532924417) - 修正問題:在持續錄影期間切換相機時,
Recording.pause()和Recording.resume()會失敗。(I71004、b/532327691、b/367121726) - 修正多鏡頭裝置在實體相機邊界縮放時,使用零快門延遲 (ZSL) 導致 HAL 當機的問題。(I1c374、b/527782712、b/514757157)
- 修正 Samsung Galaxy S25、S26 和 Fold 7 裝置無法錄製 HDR 影片的問題。(Ic0827、b/529618629)
1.7.0-alpha02 版
2026 年 7 月 1 日
發布 androidx.camera:camera-*:1.7.0-alpha02。1.7.0-alpha02 版包含這些修訂項目。
API 變更
CameraXViewfinder現在支援內建手勢,可雙指撥動縮放及輕觸對焦,並新增螢幕閃光燈和串流狀態支援。FocusState現已在 viewfinder-core 中公開,可監控輕觸對焦結果。(I66a17、b/522549890)- 在
SessionConfig.Builder、HighSpeedVideoSessionConfig.Builder、ExtensionSessionConfig.Builder中新增isAutoRotationEnabled,並為這些項目導入 Kotlin DSL 工廠函式。這樣一來,系統就能根據裝置感應器自動設定適當的旋轉角度。(I5b4a3、b/510752515) - 在
TransformationInfo中新增TransformationMode屬性,支援應用程式在EMBEDDED模式下使用OpenGL管道。(Id1de1、b/487826941) - 在
CameraInfo中新增isNightModeIndicatorSupported()和getNightModeIndicator(),判斷環境條件是否符合夜間模式條件。(Iae47b、b/499389465) - 公開 ImageAnalysis.OUTPUT_IMAGE_FORMAT_PRIVATE 和 ImageProxy.getHardwareBuffer() 做為公開 API,以支援以 GPU 為基礎的 ImageAnalysis。(I41cb3、b/496022391、b/492934501)
- ExtensionsManager#getExtensionEnabledCameraSelector 現已淘汰。請使用新的 ExtensionSessionConfig API 啟用擴充功能模式。(I2b336、b/473715607)
- 新增支援功能,可在並行相機組合期間設定相機影格的視覺樣式。現在可以自訂:
- 圓角:使用 setRoundedCornerRatio(float) 將正規化圓角 (0.0 至 1.0) 套用至框架邊緣。
- 邊框:使用 setBorderWidthRatio(float) 和 setBorderColor(int) 新增厚度一致的裝飾框 (I18a07、b/366349205)
- 更新 CompositionSettings,強制執行非負 z 順序,並在 ConcurrentCamera.setCompositionSettings 中新增驗證,確保在有效的組合模式中,以正確的設定數量呼叫。(If660d、b/496951658)
- 在 CameraExtensionsInfo 中新增 getNightModeIndicator() 和 isNightModeIndicatorAvailable(),讓應用程式在使用相機擴充功能時,監控目前環境是否處於夜間模式。(I62bb4、b/499389465)
- 在 VideoCapture 中新增
QHD影片畫質支援。(I0ac20、b/501305592) - 新增
Recorder.Builder.setTargetAudioChannelCount(int)和Recorder.getTargetAudioChannelCount(),讓開發人員設定明確的音訊聲道數量。(I6bee0、b/441895100) - 新增
Recorder.Builder.setTargetAudioEncodingBitRate(int),可設定目標音訊編碼位元率。(I29062、b/241151504) - 新增 ConcurrentCamera.setCompositionSettings API,讓應用程式在生命週期繫結後,動態更新目前相機的組合。此外,CompositionSettings.Builder 中新增的 setZOrder API 可精確控制重疊攝影機串流影像的算繪順序。(I90528、b/473702287)
- 推出 API,可精細控管編碼格式。開發人員現在可以使用
Recorder.getSupportedVideoMimeTypes()和getSupportedAudioMimeTypes()(目前為實驗功能),查看裝置支援的格式。您可以透過Recorder.Builder.setVideoMimeType()和setAudioMimeType()明確設定偏好的格式。此外,Recorder.getVideoCapabilities(CameraInfo, String)可讓您查詢所選轉碼器的相機專屬功能,例如支援的品質和動態範圍。(I4620e、b/491319384) - 新增 CameraController.setAutoRotationEnabled(boolean),允許停用自動裝置旋轉事件監聽器。(Ia0c03、b/449573627)
- 透過新的 setLockingMode API,在 FocusMeteringAction 中新增 AE/AWB 鎖定支援。這也允許更新 3A 區域,而不鎖定焦點,讓相機在更新焦點區域時保持連續自動對焦模式。(I6416f、b/481624745)
修正錯誤
- 移除
compileSdk 37的需求條件 (If78b4) - 修正了在
EMBEDDED模式下,CameraX啟用OpenGL管道以繫結更多UseCases或表面處理時,CameraXViewfinder轉換問題。(I3e637、b/487826941) - 更新測試和活動,改用 ExtensionSessionConfig,而非已淘汰的 getExtensionEnabledCameraSelector API。(I765d8、b/473715607)
- 修正編譯錯誤「Cannot access class 'ListenableFuture'」。(Ic8cba、b/497571473)
- Compose compileSdk 已更新至 API 37。也就是說,使用 Compose 時,AGP 版本至少須為 9.2.0。(Id45cd、b/413674743)
1.7.0-alpha01 版
2026 年 3 月 11 日
發布 androidx.camera:camera-*:1.7.0-alpha01。1.7.0-alpha01 版包含這些修訂項目。
API 變更
- 公開
CameraController.setSessionConfig()API。這樣一來,您就能為CameraController未直接公開的進階UseCase設定提供自訂SessionConfig。SessionConfig啟用時,CameraController上的其他設定方法會停用。(I35cf1、b/448525636)
修正錯誤
- 將程式庫移至 Java 11 目標。這表示產生的位元碼將是 Java 11 (類別檔案版本 55),可能需要脫糖才能使用程式庫 (If4c2a、b/457821470)
- 修正
ImageAnalysis中的錯誤:啟用輸出圖片旋轉功能,且初始相對旋轉角度為 0 度時,圖片無法正確旋轉。(Id46c2、b/487160584)
Camera 1.6 版
1.6.2 版
2026 年 8 月 26 日
發布 androidx.camera:camera-*:1.6.2。1.6.2 版包含以下修訂項目。
修正錯誤
- 修正以下問題:在較新的 JDK 版本中,解析
CameraX內部欄位上傳遞匯入的 JSpecify 類型註解時,會發生編譯異常終止。(I00bb4、b/543937345)
1.6.1 版
2026 年 5 月 6 日
發布 androidx.camera:camera-*:1.6.1。1.6.1 版包含這些修訂項目。
修正錯誤
- 修正使用 CameraX 1.6.0 時,出現「Cannot access class
ListenableFuture」編譯錯誤的問題。(Ic8cba、b/497571473)
1.6.0 版
2026 年 3 月 25 日
發布 androidx.camera:camera-*:1.6.0。1.6.0 版包含此連結所列的修訂項目。
自 1.5.0 版之後的重要變更:
1. 遷移至高效能的整合式相機堆疊
- CameraX 現在使用
CameraPipe,這是 Pixel 相機採用的現代化高效能堆疊。這項轉換可簡化架構效率,並提供可擴充的基礎,為開發人員生態系統帶來先進的計算攝影功能。
2. Media3 Muxer 整合
- CameraX 現在預設在 VideoCapture API 中整合 Media3 Muxer。這項遷移作業有幾項優點:
- 提升效能:提高影片處理和多工處理效率。
- 當機復原:強化影片檔案損毀防護機制,確保錄製期間即使應用程式當機,資料仍能保留。
3. 特徵群組改善
- Feature Group API 現在支援影片穩定功能和 4K 錄製。
GroupableFeatures包含VIDEO_STABILIZATION、UHD_RECORDING,可讓應用程式與其他功能一起啟用。啟用特徵群組時,系統支援SessionConfig中的CameraEffect和ImageAnalysis。
4. 穩定版 SessionConfig API
SessionConfig已從實驗性升級為完全穩定的公開 API,包括SessionConfig和HighSpeedVideoSessionConfig。CameraX 擴充功能現在可透過新的ExtensionSessionConfigAP 實作。推出新的isSessionConfigSupportedAPI,讓開發人員在繫結至生命週期前,查詢裝置是否支援特定用途和功能組合 (例如 HDR、防震、特定解析度、CameraX 擴充功能或慢動作)。
修正錯誤
- 修正特定 Android 17 (API 37) 以上版本裝置發生的當機問題。當這些裝置公開 CameraX 1.5.1 以下版本未知的動態範圍設定檔 (例如 STANDARD_SMPTE_2094_50(ID 8192)) 時,程式庫先前無法妥善處理這些 ID,導致在
ProcessCameraProvider.bindToLifecycle()期間發生NullPointerException或IllegalArgumentException。這項修正可讓 CameraX 忽略無法辨識的動態範圍設定檔,避免當機並維持向前相容性。請將 CameraX 依附元件更新至 1.5.2 或 1.6.0 (或以上版本),以免在提供這些新設定檔的裝置上發生這個問題。詳情請參閱問題 519796838。(Ibd7b5) - 現在,當
PREVIEW_STABILIZATION與VideoCapture搭配使用時,特徵群組 API 會提供一致的結果。這項修正解決了預覽用途未啟用時,導致結果不一致的錯誤。(Ifed82、b/449913903) - 修正問題:不支援的偏好功能錯誤顯示為可用。現在,如果功能不符合必要用途,系統會正確篩除。(I38db8、b/449532342)
- 修正 Samsung Galaxy S6 影片搜尋結果不穩定的問題。(I612d9、b/235127608)
- 修正以下問題:如果查詢中的
SessionConfig已設有其他功能,CameraInfo#isFeatureGroupSupported可能會錯誤地為PREVIEW_STABILIZATION傳回 true。(I2c355c、b/437816469) - 排除 Samsung Z Fold 4 裝置上有問題的 YUV 格式輸出大小。使用這些輸出大小時,收到的圖片會失真。(I776bf、b/460322307)
- 修正 Samsung A53 裝置特定問題:如果繫結
VideoCapture用途,在啟用手電筒的情況下圖片拍攝有時會失敗。(I0f183、b/458197367) - 修正部分裝置使用超廣角相機搭配閃光燈時,可能導致影像曝光不足的問題。(Ib7530、b/444590340)
- 更新
ExifInterface依附元件,納入0xFF填補 JPEG 剖析修正,解決 JPEG 編碼器在標記前新增填補位元組的裝置上,圖片拍攝失敗的問題。(I0eb49)
1.6.0-rc01 版
2026 年 2 月 25 日
發布 androidx.camera:camera-*:1.6.0-rc01。1.6.0-rc01 版包含以下修訂項目。
1.6.0-beta02 版
2026 年 2 月 11 日
發布 androidx.camera:camera-*:1.6.0-beta02。1.6.0-beta02 版包含這些修訂項目。
修正錯誤
- 修正
ImageCaptureOUTPUT_FORMAT_RAW_JPEG 記憶體內擷取IllegalArgumentException問題。(Id4eec、b/479990902) - 已遷移至 AndroidX Media3 多工器。這項修正解決了以下問題:1. 發生非預期中斷或應用程式終止時,影片損毀;2. 將影片儲存至 Proxy 檔案描述元時,發生當機。(I23b63、b/433649708、b/264812009、b/475750115)
1.6.0-beta01 版
2026 年 1 月 28 日
發布 androidx.camera:camera-*:1.6.0-beta01。1.6.0-beta01 版包含這些修訂項目。
修正錯誤
- 修正 CameraX 1.6.0-alpha 中的
CameraExtensionsInfo目前類型問題,即 LiveData 物件無法接收更新後的類型資料。(I2c7a5) - 更新 ExifInterface 依附元件,納入剖析 0xFF 填補 JPEG 的修正,解決 JPEG 編碼器在標記前新增填補位元組的裝置上,圖片拍攝失敗的問題。(I0eb49)
1.6.0-alpha02 版本
2025 年 12 月 17 日
發布 androidx.camera:camera-*:1.6.0-alpha02。1.6.0-alpha02 版包含這些修訂項目。
新功能
- 新增可分組功能,用於表示工作階段設定中的影片穩定功能。開發人員現在可以要求將影片防震功能設為必要或偏好功能,與 UHD_RECORDING、PREVIEW_STABILIZATION 等其他可分組功能保持一致。(Ic6757、b/419766630)
- 新增可分組功能,用於表示工作階段設定中的錄影品質。開發人員現在可以要求特定畫質 (例如 UHD、FHD) 做為必要或偏好功能,並與 HDR 和 60 FPS 等其他可分組功能保持一致。(Ib5cd3、b/437820285)
- 新增在
SessionConfig中同時使用CameraEffect和特徵群組 API 的支援。(I17f18、b/406370934) - 新增支援,可在
SessionConfig中同時使用ImageAnalysis和特徵群組 API。(I87833、b/406371720)
API 變更
- 新增
ExtensionSessionConfig.Builder的addUseCasesetter 函式,並新增ExtensionSessionConfig缺少的 getter。(I71e07、b/453988621) - 新增
ExtensionsManager.getInstanceAPI,這是ExtensionsManager.getInstanceAsync的暫停版本 (I3a0a9、b/452208792) - 將
isFeatureGroupSupported重新命名為isSessionConfigSupported,並支援任何類型的SessionConfig。(I21616、b/448781299) - 將
ExtensionsManager轉換為 Kotlin 實作。(I73091、b/452208792) - 新增
CameraProvider#getCameraInfo(CameraSelector, SessionConfig),以便在SessionConfig可能影響相機選取時擷取CameraInfo。例如使用ExtensionSessionConfig時。(Ic548c、b/451891648) - 公開
ExtensionSessionConfigAPI。應用程式可以建立ExtensionSessionConfig,並用來建立擴充功能工作階段。(I6354c、b/448524373) androidx.camera.video.HighSpeedVideoSessionConfigAPI 已脫離實驗階段,現在是完全穩定的公開 API。(I492d4、b/447558239)androidx.camera.core.SessionConfigAPI 已脫離實驗階段,現在是完全穩定的公開 API。(Idc87a、b/447558437)
修正錯誤
- 修正 Android 17 以上版本因
IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object:導致的當機問題。(Ibd7b5、b/463465353) - 排除 Samsung Z Fold 4 裝置上有問題的 YUV 格式輸出大小。使用這些輸出大小時,收到的圖片會失真。(I776bf、b/460322307)
- 修正透過
Camera2InteropAPI 設定時,無法套用CaptureRequest.FLASH_MODE的問題。(I0004c、b/459608684) - 修正 Samsung A53 裝置特定問題:如果繫結
VideoCapture用途,在啟用手電筒的情況下圖片拍攝有時會失敗。(I0f183、b/458197367) - 修正部分裝置使用超廣角相機搭配閃光燈時,可能導致影像曝光不足的問題。(Ib7530、b/444590340)
1.6.0-alpha01 版本
October 22, 2025
發布 androidx.camera:camera-*:1.6.0-alpha01。1.6.0-alpha01 版包含這些修訂項目。
新功能
- CameraX 已遷移至統一的高效能相機堆疊,Pixel 相機應用程式也使用這個堆疊。這個新堆疊稱為
CameraPipe,由 CameraX 和 Pixel 相機團隊合作開發。這可確保所有改善項目都能共用,讓 CameraX 使用者和 Pixel 相機應用程式都能受惠。
API 變更
- 新增 API,用於偵測動態新增/移除相機。詳情請參閱
CameraPresenceListenerAPI。(I41ead、b/427182232、b/419441394)
修正錯誤
- 現在,當
PREVIEW_STABILIZATION與VideoCapture搭配使用時,特徵群組 API 會提供一致的結果。這項修正解決了Preview用途未啟用時,導致結果不一致的錯誤。(Ifed82、b/449913903) - 修正問題:系統誤提供不支援的偏好功能。現在,如果功能不符合必要用途,系統會正確篩除。(I38db8、b/449532342)
- 修正 Samsung Galaxy S6 影片搜尋結果不穩定的問題。(I612d9、b/235127608)
- 修正以下問題:如果查詢中的
SessionConfig已設有其他功能,CameraInfo#isFeatureGroupSupported可能會錯誤地為PREVIEW_STABILIZATION傳回 true。(I2c355c、b/437816469)
Camera 1.5 版
1.5.3 版本
2026 年 1 月 28 日
發布 androidx.camera:camera-*:1.5.3。1.5.3 版包含這些修訂項目。
修正錯誤
- 將 ExifInterface 依附元件更新至 1.4.2。這項修正可解決在裝置上產生 JPEG 時,標記前有額外 (且允許) 的 0xFF 位元組,導致圖片拍攝失敗的問題。(I16df4)
1.5.2 版本
2025 年 12 月 4 日
發布 androidx.camera:camera-*:1.5.2。1.5.2 版包含這些修訂項目。
修正錯誤
- 修正 Android 17 以上版本因
IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object:導致的當機問題。(Ic9184) - 修正了以下錯誤:如果新增
PREVIEW_STABILIZATION功能時,有VideoCapture用途但沒有Preview用途,會導致功能群組 API 結果不一致。(Ifed82) - 修正了偏好功能未篩除的問題,即使缺少支援功能所需的用途。(I38db8)
1.5.1 版本
2025 年 10 月 8 日
發布 androidx.camera:camera-*:1.5.1。1.5.1 版包含這些修訂項目。
修正錯誤
- 在並行相機組合模式中支援
CameraEffect。特效會套用至合成輸出內容。請注意,如果效果設為並行相機合成模式,系統會忽略VideoCapture中的mirrorMode。(If3d00、b/425565129) - 修正了在並行相機組合模式下,
mirrorMode未正確套用至次要相機的問題。(I686cd、b/446430827) - 在並行相機非組合模式下,支援同時繫結
Preview、ImageCapture和VideoCapture。(Ib410a、b/443009871) - 修正問題:
ImageCapture和VideoCapture等 UseCase 重新建立後,會遺失目標旋轉資訊。如果裝置旋轉後變更了imageCaptureMode等設定,圖片或影片的方向可能會不正確。(I477c8、b/444734537) - 修正了預覽畫面無法選取 16:9 解析度,以及
VideoCapture無法以 QUALITY_1080P 錄製的問題。這個問題發生在使用預設預覽解析度設定,且內部StreamSharing功能處於啟用狀態時 (例如同時繫結四個 UseCase)。(I493cb、b/440364875) - 修正
SurfaceProcessor關閉後啟用效果時發生的當機問題 (I2c450、b/414150174) - 修正
CameraController中的錯誤:當初始 UseCase 選取最大解析度時,會導致IllegalStateException,進而導致其他 UseCase 無法繫結。(Ifb758、b/440374234) - 排除 Nokia 7 Plus 的問題 YUV_420_888 輸出大小,這會導致無訊息失敗問題,且不會回報任何錯誤訊息。(I3af47、b/436524501)
- 修正問題:
CameraInfo#isFeatureGroupSupported可能會針對PREVIEW_STABILIZATION功能錯誤傳回 true。如果查詢的SessionConfig已設定其他功能,有時就會發生這種情況。(I2c355、b/437816469) - 在舊版 API 級別和有
SurfaceView問題的裝置上,CameraXViewfinder預設會使用TextureView,提升穩定性。這個備用機制是新的預設機制,但可以透過程式輔助方式覆寫。(Ieb476、b/437496463) - 修正
PreviewView中的記憶體流失問題,避免 Activity 遭到垃圾收集。如果新的SurfaceRequest在前一個處理完畢前抵達,就會發生這種情況。(I4aa0b、b/443112512) - 修正問題:Huawei P smart、Infinix Hot 40i 和 Realme C53 無法高速/慢動作錄影。(40a668e、b/442984200)
1.5.0 版本
2025 年 9 月 10 日
發布 androidx.camera:camera-*:1.5.0。1.5.0 版包含這些修訂項目。
1.4.0 版之後的重要變更:
- 高速和慢動作錄影:輕鬆整合高速 (120/240 fps) 和慢動作錄影功能,只需編寫少量程式碼。詳情請參閱
Recorder#getHighSpeedVideoCapabilities(CameraInfo)和HighSpeedVideoSessionConfig。 SessionConfig和FeatureGroupAPI:新的SessionConfigAPI 可讓您設定相機工作階段,並安全地同時啟用多項功能,包括 HLG (HDR)、UltraHDR、60 FPS 和預覽防震功能。您也可以設定偏好的功能群組並指定優先順序,讓 CameraX 判斷最佳的支援組合。詳情請參閱SessionConfig.Builder#setPreferredFeatureGroup、SessionConfig.Builder#setRequiredFeatureGroup和CameraInfo#isFeatureGroupSupported(SessionConfig)。- Deterministic Frame Rate API:使用
CameraInfo.getSupportedFrameRateRanges(sessionConfig)查詢,並使用SessionConfig.setExpectedFrameRateRange設定精確且支援的影格率,解決setTargetFrameRate先前的限制。 - 相機擴充功能:擴充功能現在支援 UltraHDR 格式。請檢查
ImageCapture.getImageCaptureCapabilities(cameraInfo).getSupportedOutputFormats(),並在ImageCapture.Builder.setOutputFormat中啟用。現在啟用擴充功能時,會反映縮放比例和預覽穩定功能。 - 手電筒強度:使用
CameraControl.setTorchStrengthLevel調整手電筒強度。 - 低光源增強模式:您可以透過下列 API 啟用低光源增強模式(
CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY):請參閱CameraInfo#isLowLightBoostSupported、CameraInfo#getLowLightBoostState和CameraControl#enableLowLightBoostAsync。 - 影片擷取:錄製期間儲存空間不足時,現在會觸發
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE。PendingRecording.withAudioEnabled(boolean initialMuted)可控制錄音的初始靜音狀態。 - 圖片拍攝:
ImageCapture支援 DNG (RAW) 和 JPEG + DNG (RAW) 格式。請查看ImageCaptureCapabilities(CameraInfo).getSupportedOutputFormats()是否支援 RAW。使用多個OutputFileOptions的超載takePictureAPI 擷取 RAW+DNG。 - 圖片分析:
ImageAnalysis支援 NV21 格式。使用ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21)啟用。
1.5.0-rc01 版
2025 年 8 月 13 日
發布 androidx.camera:camera-*:1.5.0-rc01。1.5.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
- 將預設 minSdk 從 API 21 移至 API 23 (Ibdfca、b/380448311、b/435705964、b/435705223)
- 移除低光源強化自動曝光模式的 10 位元輸出限制。應用程式現在可以在支援的裝置上同時啟用這兩項功能。(I5a638)
- 修正問題:搭載
UniSoc晶片組的裝置在拍攝相片時會停止運作。當VideoCapture、Preview和ImageCapture同時使用,且所有串流都設為 1280x720 解析度時,就會發生這個問題。(Ia00c4、b/380802479) - 修正了未設定高速/慢動作錄影的高速影格率時,預覽畫面會顯示黑畫面的問題。(cdf0ff2e9)
- 改善
getViewportAspectRatioInt中的錯誤處理和記錄功能 (82fca18)
1.5.0-beta02 版
2025 年 7 月 16 日
發布 androidx.camera:camera-*:1.5.0-beta02。1.5.0-beta02 版包含這些修訂項目。
API 變更
- 新增 API,可更直覺、準確地設定或查詢高畫質功能群組,因為並非所有裝置都支援這些功能的組合。
SessionConfig現在包含新的 API,可將一組功能標示為必要或偏好。CameraInfo.isFeatureGroupSupportedAPI 可讓您在繫結SessionConfig之前,先確認是否支援功能群組。SessionConfig也允許設定事件監聽器,在工作階段設定繫結時,瞭解最終選取的功能。(Ie4d60) - 新增 API
SessoinConfig.Builder.setFrameRateRange(Range<Integer>)和CameraInfo.getSupportedFrameRateRanges(SessionConfig),讓開發人員查詢受特定SessionConfig限制的保證支援影格率,然後將影格率套用至SessionConfig。(Ieacf7) - 推出新的
SessionConfigAPI,其中包含更完善的抽象化功能,可用於設定用途、工作階段參數、CameraEffect、ViewPort等。將SessionConfig繫結至 LifecycleOwner 後,系統會開啟相機工作階段,並使用指定的用途和工作階段參數進行設定,然後套用指定的CameraEffect和ViewPort。將新的SessionConfig更新至相同的LifecycleOwner時,您只需繫結新的Sessionconfig,而不必先叫用解除繫結或unbindAll。(Iedfc3) - 新增 API,用於錄製高速/慢動作影片。詳情請參閱
HighSpeedVideoSessionConfigAPI。(Ia16f3)
修正錯誤
- 修正
ImageCaptureCapabilities#getSupportedOutputFormats()API 回報部分裝置支援 RAW 格式,但實際上不支援的問題。(Ibcadb) - 修正使用
PreviewView、啟用CameraEffect或繫結 4 個用途(StreamSharing) 時發生的記憶體流失問題 (I87468) - 修正了
AssertionError導致的錄影異常終止問題:內部音訊狀態無效:IDLING。(I38d4b、b/414259796) - 修正了應用程式在外部螢幕上執行,且裝置處於橫向模式時,
PreviewView中的預覽畫面會拉伸或側向的問題 (Ia917a) - 修正了在預覽和 VideoCapture 之間共用攝影機串流影像時,預覽防震設定未正確套用的問題。(I5430e)
CameraXViewfinder現在可正確處理基礎Viewfinder中的介面替換作業。這涵蓋 API 級別 28 以下的EXTERNAL觀景窗移出螢幕,或CameraXViewfinder(含任何ImplementationMode) 是moveableContentOf()的一部分等情況。如果基礎ViewfinderSurfaceSession無法保持運作,CameraXViewfinder會使目前的 CameraXSurfaceRequest失效,讓 CameraX 使用新的Surface。(I79432)- 修正 Android 10/11 的問題:由於過早套用轉換作業 (例如縮放或轉譯),
EXTERNALCameraXViewfinder可能會出現拉伸或不正確的情況。系統現在會等待 Surface 建立完成,然後在版面配置階段套用這些轉換,確保輸出結果正確。(Icc77c) - 可組合項
CameraXViewfinder現在可與 Compose 的Pager搭配使用。這項異動可確保可組合函式能成功重設,方法是實作AndroidView的onReset回呼,同時支援EMBEDDED和EXTERNAL實作。(I0d9be) - 修正了在未關閉相機供應器的情況下,從生命週期擁有者解除繫結用途時,發生的生命週期擁有者流失問題。
1.5.0-beta01 版
2025 年 5 月 7 日
發布 androidx.camera:camera-*:1.5.0-beta01。1.5.0-beta01 版包含這些修訂項目。
API 變更
- 使用 Kotlin 2.0 發布的專案需要 KGP 2.0.0 以上版本才能使用 (Idb6b5)
- 現在可以在觀景窗中使用
ContentScale和 Alignment,縮放顯示的介面並放置在容器中,類似於androidx.compose.foundation.Image的行為。(Ibcea3) TransformationInfo現在所有引數都有預設值。這樣一來,您就能在不使用任何TransformationInfo的情況下建立觀景窗,預設來源旋轉角度為 0、不鏡像來源,且不裁剪矩形。(I2b1b2)- 新增
LifecycleCameraProvider,這個相機供應器可透過不同設定例項化,例如透過自訂情境設定存取虛擬裝置的相機。(Ia2992)
修正錯誤
- 修正了在 Samsung SM-E556B 裝置上,
ImageAnalysis與另一個使用TEMPLATE_RECORD的串流搭配使用時,預覽畫面凍結的問題。(Ic0e62、b/409478042) - 修正了在 Samsung SM-M556B 裝置上,
ImageAnalysis與另一個使用TEMPLATE_RECORD的串流搭配使用時,預覽畫面凍結的問題。(Ic1a6a、b/395822788) - 修正 Android 15 Pixel 裝置在執行縮放相關作業時,擴充功能夜間模式的
AssertError問題。(I27a5d、b/401460276) - 修正使用
CameraController時,ML Kit 分析工具定界框座標不正確的問題。(Iae91b、b/409808510)
1.5.0-alpha06 版
2025 年 2 月 26 日
發布 androidx.camera:camera-*:1.5.0-alpha06。1.5.0-alpha06 版包含這些修訂版本。
API 變更
- 新增
CameraInfo.getTorchStrengthLevel、CameraInfo.getMaxTorchStrengthLevel和CameraControl.setTorchStrengthLevel,以便自訂手電筒亮度 (I00878) - 新增 API
CameraController#setTapToFocusAutoCancelDuration,讓使用者可以控制PreviewView輕觸對焦事件的自動取消行為。根據預設,CameraX 會在 5 秒後取消對焦事件 (即重設相機對焦),而這個 API 可修改該時間長度或完全停用自動取消功能。(Icf59a) FLASH_STATE_READY已重新命名為NOT_FIRED,其他FlashState常數名稱也已簡化,方便閱讀。(I8771d)- 公開低光源增強 API。搭載 Android 15 以上版本的裝置可支援低光源強化功能。在低光源環境下,這項功能可自動調整預覽、影片或圖片分析串流的亮度。應用程式可以使用新的 API 執行下列操作:1. 使用
CameraInfo#isLowLightBoostSupported檢查功能可用性。2. 如果裝置支援,請使用CameraControl#enableLowLightBoostAsync啟用模式。3. 使用CameraInfo#getLowLightBoostState監控低光源強化狀態。(I937ed) - 新增相容性類別,以便在 camera-feature-combination-query 中加快非 Camera2 查詢。(Ie97ee)
- 針對
CameraController輕觸對焦事件,新的 APIgetTapToFocusInfoState()現在也會傳回TapToFocusInfo類別的LiveData,藉此公開對應的輕觸位置,而先前傳回getTapToFocusState()的LiveData<Integer>API 已淘汰,改用新的 API。(I238d2)
修正錯誤
- 修正了透過擴充功能啟用預覽防震功能時,系統未套用預覽防震功能的問題。(I24ad7)
- 修正以下問題:CameraX 自動取消焦點事件 (預設為 5 秒後發生) 時,
CameraController焦點狀態事件不會重設回TAP_TO_FOCUS_NOT_STARTED。(I31954) - 修正了多次拍攝後,因未釋出圖片資源,導致使用零延遲快門 (ZSL) 時預覽畫面凍結的問題。(Ic3c2a)
- 修正了在部分裝置上,當管道涉及
OpenGL時,UHD 影片會呈現紅色色調的問題。(Idcedc)
1.5.0-alpha05 版
2025 年 1 月 15 日
發布 androidx.camera:camera-*:1.5.0-alpha05。1.5.0-alpha05 版包含這些修訂項目。
API 變更
- 新增
VideoCapture.getSelectedQuality(),即可根據QualitySelector瞭解所選品質。(I70508、b/204288986) - 使用
ImageCapture.OnImageCapturedCallbackAPI 叫用圖片拍攝功能時,現在可以透過傳回的ImageProxy上的 ImageInfo,使用新的ImageInfo.getFlashState()API 瞭解是否已觸發閃光燈。(Id2c61、b/380527406) - 新增
ImageAnalysis的OUTPUT_IMAGE_FORMAT_NV21輸出格式支援。(I484ab) - 移除
featurecombinationquery構件的實驗性註解 (I4427f) - 啟用擴充功能模式時,根據擴充功能專屬特性,調整
CameraControl允許的變焦倍率範圍。(I85af1)
修正錯誤
- 將
compileSdk升級為 35,以便使用 Android 15 相關 API。使用 CameraX 程式庫的應用程式也需要升級compileSdk設定。(Ic80cd) - 這個程式庫現在使用 JSpecify 可為空值註解,屬於類型用途。Kotlin 開發人員應使用下列編譯器引數,強制執行正確用法:
-Xjspecify-annotations=strict(這是 Kotlin 編譯器 2.1.0 以上版本的預設值)。(Idc6c6、b/326456246)
1.5.0-alpha04 版
2024 年 12 月 11 日
發布 androidx.camera:camera-*:1.5.0-alpha04。1.5.0-alpha04 版包含這些修訂項目。
API 變更
- 將
ImageCapture.Builder#setOutputFormat和ImageCaptureCapabilities#getSupportedOutputFormats公開為穩定版 API (Ieb04a) - 新增
VideoCapture.getResolutionInfo(),以便在VideoCapture繫結至生命週期時取得解析度資訊。(Icb478) - 將
PreviewView.getScreenFlash和PreviewView.setScreenFlashOverlayColor公開為穩定版 API。(I74fee)
修正錯誤
- 修正了在黑暗中使用閃光燈拍照時,Vivo 1610 裝置無法擷取圖片的問題。(I366f4)
- 修正 Redmi Note 6 Pro 拍攝圖片後,手電筒意外關閉的問題。(I2e0e8、b/377144569)
- 修正 Pixel Android 15 裝置的問題:在相機對焦到附近物體前,擴充功能的夜間模式無法拍攝靜態圖片。(I228d4)
- 修正了啟用擴充功能並繫結
VideoCapture時,靜態圖片拍攝功能故障的問題。(I5c745) - 如果裝置支援,則啟用擴充功能的
UltraHDR靜態圖片拍攝支援。(I48300) - 修正了在 TCL 裝置上,使用
CameraEffect閃光燈拍照時的閃光燈時間問題。(I7698c)
1.5.0-alpha03 版
2024 年 10 月 30 日
發布 androidx.camera:camera-*:1.5.0-alpha03。1.5.0-alpha03 版包含這些修訂項目。
API 變更
- 新增 RAW 和 RAW + JPEG
ImageCapture的輸出格式 API,裝置功能檢查則在ImageCaptureCapabilities#getSupportedOutputFormats中公開。OUTPUT_FORMAT_RAW會拍攝 RAW 圖片 (Adobe DNG 格式),OUTPUT_FORMAT_RAW_JPEG則會同時拍攝 RAW 和 JPEG 圖片。新的ImageCapture#takePictureAPI 用於同時擷取圖片,需要提供兩個OutputFileOptions,第一個用於 RAW 圖片,第二個用於 JPEG 圖片。(Ib0f3d)
修正錯誤
- 修正 TCL 裝置啟用
VideoCapture時,預覽和影片曝光不足的問題。(Id7a64) - 修正了以下問題:啟用效果或繫結 4 個用途 (串流共用) 時,使用
PreviewView.getMeteringPointFactory叫用startFocusMetering無法取得正確的感應器座標。(I916c5、b/345993685) - 修正錄製影片時,如果儲存空間不足,系統不會觸發
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE事件的問題。(I35779、b/356399842)
1.5.0-alpha02 版
2024 年 10 月 2 日
發布 androidx.camera:camera-*:1.5.0-alpha02。1.5.0-alpha02 版包含這些修訂項目。
新功能
- 新增 API,用於查詢裝置支援的相機功能。例如檢查是否能同時啟用 HDR 和 60 FPS。其中包含 2 個構件:camera-feature-combination-query 和 camera-feature-combination-query-play-services。這是與 camera2 的
CameraManager#getCameraDeviceSetup#isSessionConfigurationSupportedAPI 相容的版本,並提供 Google Play 服務提供的額外資料。
修正錯誤
- 修正舊版裝置上的
Preview/VideoCapture目標影格率問題。透過setTargetFrameRate或Camera2InteropAPI 設定的目標影格率,一律會覆寫為AeFpsRangeLegacyQuirk提供的值。修正後,CameraX 程式庫會遵循透過setTargetFrameRate或Camera2InteropAPI 設定的值。(Ie2d32) - 新增閃光燈/手電筒/3A 功能,可使用
CameraEffect拍攝圖片。使用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 圖片中繼資料不正確的問題。修正後,CameraX 就能成功儲存 JPEG 圖片,或是在這些裝置上呼叫
ImageProxy.toBitmap()函式時,如果發生 JPEG 圖片中繼資料不正確的問題,則會傳回正確的 Bitmap 物件。(Iae493、b/356428987) - 已停用 Samsung A52s 後置鏡頭 (ID 為 0) 的擴充功能,因為拍攝 HDR 圖片時可能會發生原生程式碼錯誤,且 BOKEH 或 FACE_RETOUCH 模式可能無法設定拍攝工作階段。(I03ec9、b/364152642)
- 修正錄製影片時,如果儲存空間不足,系統不會觸發
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE事件的問題。(Ia5b4f、b/356399842) - 修正問題:在 Oppo A5 (CPH1931) 上第二次嘗試錄製影片失敗。(I181d6)
1.5.0-alpha01 版本
2024 年 9 月 4 日
發布 androidx.camera:camera-*:1.5.0-alpha01。1.5.0-alpha01 版包含這些修訂項目。
新功能
- CameraX Viewfinder Compose Adapter 發布新構件
camera-compose,可顯示camera-core中 CameraXSurfaceRequest的預覽串流。(I8666e) - 新增可組合函式
CameraXViewfinder,做為慣用的可組合函式,可調整 CameraXSurfaceRequest,用於可組合函式Viewfinder。(I4770f)
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)
Camera 1.4 版
1.4.2 版
2025 年 3 月 26 日
發布 androidx.camera:camera-*:1.4.2。1.4.2 版包含這些修訂項目。
修正錯誤
- 修正了在 Samsung Galaxy M55 上,
ImageAnalysis與另一個使用TEMPLATE_RECORD的串流搭配使用時,預覽畫面凍結的問題。(Ic1a6a、b/395822788)
1.4.1 版本
2024 年 12 月 11 日
發布 androidx.camera:camera-*:1.4.1。1.4.1 版包含這些修訂項目。
修正錯誤
- 修正 Pixel Android 15 裝置的問題:在相機對焦到附近物體前,擴充功能的夜間模式無法拍攝靜態圖片。(I228d4)
- 修正了啟用擴充功能且
VideoCapture繫結在一起時,ImageCapture#takePicture故障的問題。(I5c745)
1.4.0 版本
2024 年 10 月 30 日
發布 androidx.camera:camera-*:1.4.0。1.4.0 版包含此連結所列的修訂項目。
自 1.3.0 版以來的重要異動
CameraX 1.4.0 帶來許多令人期待的更新!以下是重點摘要:
主打功能:10 位元 HDR:
- 輕鬆拍出精彩的 HDR 相片和影片。
- 支援 HLG 和 10 位元 HEVC 編碼。
- 享有 10 位元 HDR 預覽和查詢裝置功能。
- 支援
UltraHDR圖片和 HDR 影片,適用裝置越來越多。
其他實用功能:
- Kotlin 擴充功能:新增
takePicture和awaitInstance暫停函式。 - 即時效果:套用浮水印和物件醒目顯示等效果。
- CameraController API:新增錄影設定控制項。
- 預覽防震功能:查詢裝置功能並啟用防震功能。
- 強化 VideoCapture:更精細地控制畫質,並可使用更高解析度。
- CameraX 擴充功能整合:與
VideoCapture和全新ImageCapture功能完美整合。 - Shutter Sound API:輕鬆查看區域快門音效規定。
- 螢幕閃光燈:改善前置鏡頭在低光源環境下的拍照效果。
- Camera Extensions Metadata API:支援調整擴充功能強度,以及在
ExtensionMode#AUTO中取得目前擴充功能模式通知的 API。如要瞭解更多錯誤修正資訊,請參閱 Beta 版和 RC 版公告。
1.4.0-rc04 版
2024 年 10 月 16 日
發布 androidx.camera:camera-*:1.4.0-rc04。1.4.0-rc04 版包含這些修訂項目。
修正錯誤
- 修正了以下問題:啟用效果或繫結 4 個用途 (串流共用) 時,使用
PreviewView.getMeteringPointFactory叫用startFocusMetering無法取得正確的感應器座標。(I916c5、b/345993685)
1.4.0-rc03 版
2024 年 10 月 2 日
發布 androidx.camera:camera-*:1.4.0-rc03。1.4.0-rc03 版本包含這些修訂項目。
修正錯誤
- 新增閃光燈/手電筒/3A 功能,可使用
CameraEffect拍攝圖片。使用CameraEffect拍攝的圖片,現在應與不使用任何CameraEffect拍攝的圖片,具有相同的拍攝前和拍攝後處理程序 (例如閃光燈觸發、3A 融合等,如適用)。(I5ff30) - 最佳化
PreviewView中的雙指撥動縮放流暢度 (I04ffc) - 將 Ultra HDR 與 10 位元輸出功能分離,因為裝置不再需要具備 10 位元輸出功能,也能支援 Ultra HDR。(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.setScreenFlashOverlayColorAPI,用於未明確新增ScreenFlashView的情況。(I43945)
修正錯誤
- 修正了在低光源環境下啟用閃光燈進行圖片拍攝,且繫結 VideoCapture 用途時,曝光和色調的問題。(Ic9814)
- 修正問題:在啟用擴充功能的情況下,中斷
takePicture要求可能無法取得結果,且下一個takePicture要求可能無法運作。(Iae78f) - 修正啟用擴充功能時發生的記憶體流失問題。(Iab276)
- 解決 Pixel 7/8 和 Samsung 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)
修正錯誤
- 修正以下問題:當
ImageCapture在Preview+VideoCapture+ImageCaptureUseCase組合下選取 1920x1080 時,應用程式無法在 Samsung Tab A8 上成功拍照。(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時,無法選取高解析度。(例如 Samsung 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 圖片。如果裝置支援 Ultra HDR,且輸出格式設為OUTPUT_FORMAT_JPEG_ULTRA_HDR,CameraX 會使用 JPEG/R 圖片格式擷取 Ultra HDR 壓縮圖片。此格式與 SDR JPEG 格式回溯相容,並支援內容的 HDR 轉譯。也就是說,在舊版應用程式或裝置上,圖片會以一般 JPEG 格式流暢顯示;在已更新為完全支援該格式的應用程式和裝置上,圖片則會以 HDR 格式顯示。(I5de50) - 在
CameraInfo中新增PhysicalCameraInfo,用於查詢實體相機資訊,並在CameraSelector中新增實體相機 ID setter/getter (Ic5b90) - 以
ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED取代CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED。 常數的值則維持不變。這是為了將所有常數整合到同一個位置。(I890bb) - 開發人員可透過新的
RetryPolicyAPI,自訂 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-coreAPI 更通用,以便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),且無法升級至包含解決方案的新版本,則可直接將ResolutionSelector設為偏好的解析度,並將相符的AspectRatioStrategy設為ImageAnalysisUseCase,即可解決這個問題。(I81f72、b/330091012) - 修正問題:如果目前要求失敗,排入佇列的
takePicture要求可能無法執行。(Ie0801) - 對 Vivo X60 和 X60 Pro 裝置套用無效 JPEG 資料檢查。這可以修正這些裝置上圖片過大的問題。(I82247、b/288828159)
- 修正 Samsung A24 裝置上 JPEG 圖片中繼資料不正確的問題。修正後,CameraX 就能成功儲存 JPEG 圖片,或是在 Samsung A24 裝置上呼叫
ImageProxy.toBitmap()函式時,傳回正確的 Bitmap 物件。(I8d6eb、b/309005680) - 如果擷取的圖片大於 10 MB,請對所有 Samsung 裝置套用無效 JPEG 資料檢查。這可以修正 Samsung 裝置上圖片異常過大的問題。(Ic2a65、b/288828159)
- 由於許多原始設備製造商 (OEM) 的擴充功能實作項目無法與
ImageAnalysis搭配運作,且可能導致不一致的問題,因此我們移除了 CameraX 擴充功能對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。這個構件包含CameraEffectAPI 的 OpenGL 實作,可有效操控相機輸出內容。 OverlayEffect:使用 Android 的 Canvas API 繪製疊加層。這樣一來,應用程式就能在相機輸出內容上套用水印,或醒目顯示偵測到的物件。- 預覽用途的
DynamicRangeAPI:現在可以為預覽用途設定動態範圍,不受影片用途影響。這樣一來,只有預覽畫面會採用 HLG10 等 HDR 動態範圍。CameraInfo也提供新的 API,可查詢每部相機支援的動態範圍。
API 變更
- 將
ScreenFlashUiCompleter重新命名為ScreenFlashListener,並將ScreenFlashUiCompleter#getExpirationTimeMillis移至ScreenFlash#apply的expirationTimeMillis參數。(I13944) - 新增 API,可在預覽用途設定動態範圍,以及查詢各相機支援的動態範圍。這樣一來,您就能單獨搭配預覽用途使用 HDR 動態範圍 (例如 HLG10),不必同時繫結
VideoCapture。(If25e3) getMirroring()重新命名為isMirroring()(I47063)- CameraX 新增即時靜態影像擷取延遲時間預估支援。應用程式可透過相機擴充功能使用 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未繫結或相機關閉時,系統會立即叫用ImageCapture#ScreenFlash#clear事件,同時修正一些錯誤,即在這些情況下,由於擷取作業未正確完成,因此系統不會叫用該事件。(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,並視需要同步處理應用程式 UI 變更的時間 (例如應用程式畫面顏色/亮度變更後的 AE 預先擷取觸發條件)。應用程式只需要在提供給 CameraX 的
ScreenFlashUiControl介面中,新增 UI 端實作項目。(I8ae84) - 在 CameraX 中新增螢幕閃光燈功能的 UI 端實作支援。應用程式可以從
PreviewView或新增的ScreenFlashView取得基本的ImageCapture.ScreenFlashUiControl實作,在螢幕閃光燈拍照期間,新增單色疊加檢視畫面並將螢幕亮度調到最高。(I1810e)
API 變更
- 支援新的擴充功能(後置檢視和擷取程序進度):新增
ImageCapture#getImageCaptureCapabilities()API,讓應用程式查詢後置檢視和擷取程序進度回呼的功能。應用程式可以使用ImageCapture.Builder#setPostviewEnabled()啟用後置檢視。您可以使用ImageCapture.Builder#setPostviewResolutionSelector()選取貼文檢視大小。叫用takePicture()時,onPostviewBitmapAvailable和onCaptureProcessProgressed可在OnImageSavedCallback或OnImageCapturedCallback中實作,以取得後置檢視和處理進度通知 (如有支援)。(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) - 在
CameraController中新增ImageAnalysis輸出格式 getter/setter。(I9a96c、b/308240643)
修正錯誤
- 相機
1.3.1:改善ProcessCameraProvider#bindToLifecycle()效能。主要異動是最佳化程序,找出最適合UseCases的大小組合。最佳結果會因特定UseCase組合和目標裝置支援的輸出大小數量而異。(I454f2) - 啟用擴充功能時,允許使用
VideoCapture。(I91f32) - 修正 Samsung A71 和 M51 系列裝置上,擷取大型 JPEG 圖片的問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填補資料。這會導致擷取的圖片檔案大小過大。系統會移除多餘的 0 填補資料,讓拍攝的圖片檔案大小恢復正常。(I01afc、b/288828159)
- 停用 Pixel 上的
ImageAnalysis支援,避免 Pixel 上的錯誤意外傳回非空白的ImageAnalysis支援大小。(I7ec31) - 修正效能問題:啟用擴充功能時,CPU 負載和耗電量增加。(Ibdccb)
- 在
CameraUseInconsistentTimebaseQuirk中新增 Snapdragon 480。這項修正解決了 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)
修正錯誤
- 修正了 Samsung Galaxy S23 Ultra 5G 在後置鏡頭上啟用 Bokeh 或修容擴充功能,並搭配
ImageAnalysis時,會出現黑色預覽畫面的問題。(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)
- 修正了因內部新增額外的重複介面,導致擷取工作階段設定失敗,超出支援的介面組合。(Id718c)
- 修正 Vivo S16 裝置上擷取的 JPEG 圖片過大的問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填補資料。因此拍攝的圖片檔案較大。系統會移除多餘的 0 填補資料,讓拍攝的圖片檔案大小恢復正常。(I79505、b/299069235)
- 修正了在某些裝置上啟用部分擴充模式時,
ImageAnalysis無法與ImageCapture和預覽畫面繫結的問題。修正後,當應用程式透過ExtensionsManager#isImageAnalysisSupported()查詢ImageAnalysis可用性時,系統會傳回正確的值。(I7d538) - 更新 JavaDoc 以符合行為。
#setZoomRatio、#setLinearZoom和#enableTorch不會立即完成,而是會等到相機準備就緒。此外,我們也新增了如何使用#takePictureAPI 取得最大視野的資訊。(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),且無法升級至包含解決方案的新版本,可以直接將ResolutionSelector設為偏好的解析度,並將相符的AspectRatioStrategy設為ImageAnalysisUseCase,即可解決這個問題。(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 毫秒
在
CameraUseInconsistentTimebaseQuirk中新增 Snapdragon 480。這項修正解決了 Android 12 裝置使用此晶片組時,錄音音訊會因裝置處於暫停狀態而偏移的問題。(I58010)
1.3.0 版本
2023 年 10 月 18 日
發布 androidx.camera:camera-*:1.3.0。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要異動
1.3.0-rc02 版本
2023 年 9 月 20 日
發布 androidx.camera:camera-*:1.3.0-rc02。查看 1.3.0-rc02 版的修訂項。
修正錯誤
- 確保初始化和取消初始化事件以正確順序觸發,提升擴充功能穩定性。這修正了切換擴充功能模式或切換相機時,部分黑色預覽畫面的問題。(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,允許在VideoCapture重新繫結時,錄製器持續錄製。(I517c6)
修正錯誤
- 修正與
VideoCapture和預先發布版共用串流時發生的當機問題。此外,也修正了在舊版裝置上啟用串流分享時,會出現黑畫面的問題。 - 修正 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 裝置上,這會導致擷取的圖片檔案大小約為 13 MB。系統會移除多餘的 0 填補資料,讓拍攝的圖片檔案大小恢復正常。(I73be9、b/288828159)
- 修正 Samsung A5、A52、A70 和 A72 系列裝置上,擷取大型 JPEG 圖片的問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填補資料。導致拍攝的圖片檔案大小極大 (例如約 32 MB 甚至 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透過VideoCapture.Builder#setDynamicRange()的輸出內容。(Ib0377)- 在
ExtensionsManager中新增isImageAnalysisSupportedAPI,讓應用程式判斷啟用擴充功能時,是否可將ImageAnalysis用途與預覽和ImageCapture繫結。(I1bc63) - 從
Recorder取得的新VideoCapabilities類別可用於查詢裝置上支援的動態範圍和影片錄製畫質。QualitySelector的getSupportedQualities()和isQualitySupported()方法即將淘汰。請改用VideoCapabilities的getSupportedQualities()和isQualitySupported()方法。(I04014) CameraController#setVideoCaptureTargetQuality()已重新命名為setVideoCaptureQualitySelector,並採用引數QualitySelector,可讓您更靈活地設定影片畫質。CameraController#getVideoCaptureTargetQuality()會隨之變更為getVideoCaptureQualitySelector。(I520ed)- 移除影片功能的實驗性註解。影片功能現已穩定。(I1a113)
修正錯誤
- 在 Samsung 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) - 當
Recording物件因垃圾收集而停止時,VideoRecordEvent.Finalize現在會完成並顯示錯誤代碼ERROR_RECORDING_GARBAGE_COLLECTED。(Iba974)
修正錯誤
- 修正
StreamConfigurationMapCompat中快取的輸出大小為空值時,會發生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()
- 隆重推出全新
ResolutionSelectorAPI,涵蓋下列功能:- 應用程式可以指定顯示比例和解析度策略,選擇最符合需求的解析度。
- 所有大小和顯示比例參數都會以相機裝置感應器的座標表示。
- 應用程式可以實作自訂解析度篩選器,按照所需順序排列支援的大小。
- 應用程式也可以啟用高解析度擷取功能,取得更高解析度的圖片。不過請注意,使用高解析度可能會導致擷取時間變慢。
- 新增
VideoCapture鏡像 API。根據預設,VideoCapture錄製的影片不會鏡像。不過,前置鏡頭的相機預覽畫面預設會鏡像顯示。使用前置鏡頭時,VideoCapture鏡像 API 可讓您對齊相機預覽畫面。有三個MirrorMode、OFF、ON和ON_FRONT_ONLY。如要與相機預覽畫面保持一致,建議使用ON_FRONT_ONLY,這表示後置鏡頭不會啟用鏡像功能,但前置鏡頭會啟用。
API 變更
- 公開新的
ResolutionSelectorAPI。應用程式可以指定顯示比例和解析度策略,並搭配備用規則或自訂解析度篩選器,取得所需結果。應用程式可以指定標記,啟用高解析度擷取功能。這樣一來,CameraX 就能在拍攝相片或影片時選取較高的解析度。不過請注意,使用高解析度可能會導致擷取時間變慢。(Ibed95) - 現在可透過
CameraInfo#getSupportedFrameRateRanges()查詢 AE 演算法支援的每秒影格數範圍。(Iaa67f) - 將所有影格率方法的名稱整合為「FrameRate」。修正
VideoCapture#getTargetFrameRate()中的 javadoc 錯誤 (I83304) - 淘汰舊版
setTargetAspectRatio和setTargetResolutionAPI。請改用新的ResolutionSelectorAPI。(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)
修正錯誤
- 修正叫用 Extensions API 的應用程式在關閉相機時可能當機的問題 (Ib27e5)
- 修正
VideoCapture無法在部分裝置上與前置鏡頭搭配運作的問題。例如 Samsung Galaxy S23 和 Xiaomi 2107113SG。(Ibec7e、b/270656244) - 修正了在 Android 10 以上版本中,使用外部儲存空間公開資料夾中的檔案拍照時,一律會失敗的問題。請注意,在 Android 10 中,如要使用外部儲存空間公開資料夾中的檔案拍照,也必須在應用程式標記中將
requestLegacyExternalStorage設為 true。(I11b2c) - 修正了
DefaultSurfaceProcessor中的RejectedExecutionException異常終止問題。當VideoCapture繫結且活動暫停時,可能會發生當機。(Idb46a、b/273713906)
1.3.0-alpha05 版
2023 年 3 月 22 日
發布 androidx.camera:camera-*:1.3.0-alpha05。1.3.0-alpha05 版包含此連結所列的修訂項目。
API 變更
- 新增
VideoCapture旋轉 API,包括VideoCapture.Builder.setTargetRotation(int)、VideoCapture.setTargetRotation(int)、VideoCapture.setTargetRotationDegrees(int)和VideoCapture.getTargetRotation()。這些 API 適用於鎖定裝置螢幕方向的應用程式。ImageCapture.setTargetRotationDegrees(int)和ImageAnalysis.setTargetRotationDegrees(int)也會一併新增。(Id3ffe、b/205242781) - 允許
VIDEO_CAPTURE和PREVIEW|VIDEO_CAPTURE做為效果目標。指定VIDEO_CAPTURE的效果會套用至VideoCaptureUseCase;指定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,將共用串流複製到 Preview 和 VideoCapture。
- 由於緩衝區複製的成本,應用程式可能會增加延遲和耗電量。
API 變更
- 新增 API,可將
ImageProxy轉換為Bitmap。支援的ImageProxy格式為ImageFormat.YUV_420_888和PixelFormat.RGBA_8888。如果格式無效,系統會擲回IllegalArgumentException。(Ic7110) - 新增
CoroutineCameraViewfinder,支援在 Kotlin 中使用暫停函式設定觀景窗。(I657bc) - 為
ViewfinderSurfaceRequest新增公用建構函式。如果使用者無法提供CameraCharacteristics,這項功能可提供彈性。(Ie6549)
修正錯誤
- 修正了在部分 Samsung 裝置上,過快暫停/繼續應用程式時發生的擴充功能異常終止問題 (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) - 將
#setEffect()新增至CameraController,這可為相機輸出新增特效。(I1d21f) - 將
invalidate()方法新增至SurfaceRequest。途徑供應商可公告先前提供的途徑不再有效。(Idc649) - 新增
ImageProcessorAPI。這個介面用於將後續處理效果插入ImageCapture管道。(I575c6) - 新增了 API
Recorder.Builder.setAspectRatio(),可與QualitySelector合併使用,以支援更高的影片解析度。(I8a082) - 新增
Recorder.Builder#setTargetVideoEncodingBitRate來設定目標影片編碼BitRate,以及Recorder#getTargetVideoEncodingBitRate來取得目標影片編碼位元率。(I5984d)
修正錯誤
- 修正了無閃光燈且閃光燈模式未開啟時
ImageCapture失敗的問題。(I9e8b4, b/263391112) - 修正了在部分 Samsung 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 後不再使用的中繼資料、
OnVideoSavedCallback、OutputFileOptions和OutputFileResults類別。(I38cd8) - 套用新的錄影 API。由於不再支援
setTargetResolution,因此getVideoCaptureTargetSize和setVideoCaptureTargetSize方法已被getVideoCaptureTargetQuality和setVideoCaptureTargetQuality方法取代。(I2a1d5)
修正錯誤
- 移除已淘汰的
core.VideoCaptureAPI。(I531e0) - 修正了在沒有儲存空間權限的情況下拍照時,系統不會呼叫
onError回呼的問題。(I936db、b/244807669) - 提升相機擴充功能品質和可靠性。由於 Bokeh 支援、拍照和預覽未繼續等問題,使用 Camera Extensions v1.1.0 及更早版本的 Motorola 裝置時,已停用相機擴充功能。(Id3ce3)
- 修正在舊版裝置上啟用透過
ViewPort裁剪影片時發生的原生程式碼發生錯誤。(I16b8a、b/251357665)
1.3.0-alpha01 版
2022 年 11 月 9 日
發布了 androidx.camera:camera-*:1.3.0-alpha01。1.3.0-alpha01 版包含此連結所列的修訂項目。
新功能
Camera-viewfinder已正式發布。Camera-viewfinder提供基本觀景窗小工具,可顯示 Camera2 的相機畫面。請查看程式碼範例。
API 變更
- 新增了
OutputOptions.setDurationLimit,用來設定影片時間長度限制。一旦超過指定的時間長度上限,系統就會自動終止錄影。(I902a0) - 新增錄影音訊錯誤狀態
AudioStats.AUDIO_STATE_SOURCE_ERROR,如果音訊來源設定失敗或發生錯誤,就會傳送這個狀態碼。(I37410)
修正錯誤
- 加入特殊處理方式,允許部分有問題的裝置在拍攝失敗時重試一次。(Id4795)
- 修正
ViewPager2的PreviewViewSurfaceView導入黑色畫面問題。經過修正後,如果要求的解析度未變更,PreviewView會重複使用SurfaceView。(Ib3f27) - 在使用
ViewPort或CameraControllerAPI 時,支援裁剪影片 (WYSIWYG 功能)。(Ifbba8、b/201085351) - 修正問題:透過 Huawei P40 lite 錄影時,前置鏡頭影片無法拍攝畫面。(I87c57、b/250807400)
1.2 版本
1.2.3 版
2023 年 5 月 24 日
發布 androidx.camera:camera-*:1.2.3。1.2.3 版本包含以下修訂項目。
修正錯誤
- 修正
VideoCapture無法在部分裝置上與前置鏡頭搭配運作的問題。例如 Samsung Galaxy S23 和 Xiaomi 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 版的修訂項目。
修正錯誤
- 修正在部分 Samsung 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。 - 新的實驗性 Zero-Shutter Lag API。最佳化拍攝管道以縮短延遲時間,同時維持良好的影像品質。將拍攝模式設為
CAPTURE_MODE_ZERO_SHUTTER_LAG時,相較於其他拍攝模式,點按快門按鈕和拍照之間的延遲時間預期將會縮短。如果裝置不支援ZERO_SHUTTER_LAG,則切換回CAPTURE_MODE_MINIMIZE_LATENCY。 - 淘汰
android.camera.core.VideoCapture。 - 已將
setStreamUseCase()新增為公開Camera2InteropAPI。 setOutputImageRotationEnabled已新增 API 級別規定。ImageAnalysis.Analyzer#getTargetResolutionOverride()已重新命名為ImageAnalysis.Analyzer#getDefaultTargetResolution()。- 新增了 API,用於設定已儲存影片的位置中繼資料。
- 修正了以 16:9 顯示比例使用
VideoCapture和預覽用途時發生的影格速率偏低的問題。 - 修正了部分 Samsung 裝置啟用 BOKEH 擴充功能,且使用者切換相機時發生的黑色預覽問題。
- 修正了 API 級別 27 裝置中的 Samsung J7 Prime (SM-G610M) 和 J7 (SM-J710MN)
Preview/VideoCapture延伸問題。 - 停用解決方法,以便在問題修正後在 Samsung Android T 上將前置鏡頭的 AF 區域水平翻轉
1.2.0-rc01 版
2022 年 10 月 24 日
發布了 androidx.camera:camera-*:1.2.0-rc01。查看 1.2.0-rc01 版的修訂項目。
API 變更
- 為
OutputConfiguration新增setStreamUseCaseAPI。使用者可以為串流工作階段指定串流用途,覆寫 CameraX 的內部邏輯,以便選擇串流用途,根據需求進行最佳化。(Ib1a95)
修正錯誤
- 修正了 API 級別 27 裝置中的 Samsung J7 Prime (SM-G610M) 和 J7 (SM-J710MN)
Preview/VideoCapture延伸問題。1920x1080 解析度會導致Preview/VideoCapture圖像延伸。新增了解決方法,就是預覽或VideoCapture不選取 1920x1080 解析度,以避免圖像延伸問題。(I0e04e) - 修正了在部分華為裝置上以 16:9 顯示比例使用
VideoCapture和預覽用途時發生的影格速率偏低的問題。(If8c88, b/223643510) - 修正了在未設定預覽的
SurfaceProvider時,相機開啟失敗的問題。經過修正後,未設定SurfaceProvider的預覽現在不會設為相機擷取工作階段。(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)
修正錯誤
- 停用解決方法,以便在問題修正後在 Samsung Android T 上將前置鏡頭的 AF 區域水平翻轉。(I05f69)
- 修正了部分 Samsung 裝置啟用
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 功能,包括條碼掃描、臉部偵測、文字偵測等。請在這裡查看程式碼範例。 - 新的實驗性 Zero-Shutter Lag 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,用於設定已儲存影片的位置中繼資料。
android.location.Location物件可透過新的 APIandroidx.camera.video.OutputOptions.Builder.setLocation(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且 AF 元件未在此期間對焦,就可透過此逾時設定將isFocusSuccessful設為 False,以完成 AF 元件的工作。(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 Zero-Shutter Lag API 公開為實驗版。
API 變更
- 在
ImageCapture中新增CAPTURE_MODE_ZERO_SHUTTER_LAG擷取模式,並在CameraInfo中新增isZslSupported來查詢裝置功能。CAPTURE_MODE_ZERO_SHUTTER_LAG模式旨在提供即時擷取的最少延遲時間。以環狀緩衝區為基礎導入,使用者按下按鈕拍照時,會快取中間擷取結果,以供日後重新處理。如果 {@link VideoCapture} 已繫結,或閃光燈模式未關閉,或 OEM 擴充功能已開啟,系統將自動停用此模式。(I9ae74) - 新增
ImageAnalysis.getBackgroundExecutor()方法 (Icc945)
修正錯誤
- 修正了
ImageCapturetakePicture 方法將被舉報裝置上的手電筒關閉。(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與ImageCapture繫結,並在完整或更高的硬體層級相機裝置上預覽時,就會發生這個問題。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 能在折疊式裝置上正常運作。
- 新增了
CameraStateAPI,並透過 CameraInfo 公開。 - 新增了 API
ProcessCameraProvider.getAvailableCameraInfos(),以便直接擷取可用相機的相關資訊。 - 啟用擴充功能時,為
ImageCapture#OnImageCapturedCallback輸出 JPEG 格式。 - 已在
CameraInfo中新增 APIisFocusMeteringSupported,可讓應用程式檢查目前相機是否支援指定的FocusMeteringAction。 - 公開了
getResolutionInfoAPI,以提供 Preview、ImageCapture和ImageAnalysis的解析度資訊。 - 新增了 API
ImageCapture.Builder#setJpegQuality,以便在拍照時變更輸出的 JPEG 圖片壓縮品質。 - 已在公用 API 中新增
CameraSelector#filter,以根據CameraSelector篩選CameraInfos清單。 - 新增了
Camera2CameraControl.clearCaptureRequestOptions以清除現有的擷取要求選項。 - 新增實驗性 API,可將
CameraController與 MLKit 等外部圖像處理程式庫搭配使用。 - 新增了實驗性 API
CameraInfo#getCameraSelector(),以傳回該相機專屬的CameraSelector。 - 將數個實驗性 API 升級為正式公開 API。
- 已將實驗性 API 的註解
@Experimental取代為@RequiresOptIn。如要呼叫實驗性 API,請使用 androidx.annotation.OptIn,而不要使用已淘汰的 androidx.annotation.experimental.UseExperimental。 - 將下列實驗性 API 升級為官方 API:
CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler()、 @ExperimentalCameraFilterAPI- 實驗性的曝光補償 API。
- 升級了 camera-core、camera-lifecycle 和 camera-video 適用的實驗性
UseCaseGroupAPI。新增用於自訂可視區域的ViewPort#getLayoutDirection、ViewPort.Builder#setLayoutDirection和ViewPort.Builder#setScaleType。 - 將
ExperimentalUseCaseGroupLifecycle升級為正式公開 API。 - 現有 API 變更
- 已將
Renamed MediaStoreOutputOptions.getCollection重新命名為MediaStoreOutputOptions.getCollectionUri。 ActiveRecording已重新命名為「Recording」,以降低詳細程度。- 已將
QualitySelector建立工具 API 變更為清單式 API。
修正錯誤
- 修正了在啟用擴充模式的情況下設定
ImageCapture#CAPTURE_MODE_MAX_QUALITY模式時發生的YuvToJpegProcessorEOFException問題。 - 修正了因關閉影片錄製功能而導致轉碼器設定失敗的錯誤。
- 修正了以 Full HD 高畫質錄影時遭到拉長的預覽/影片顯示比例。
- 修正了在部分裝置上暫停並繼續播放後音訊/視訊不同步的問題。
- 修正了在輕觸即可對焦 (
startFocusAndMetering) 期間,當閃光燈模式在低光源環境中設為 auto 或 always_on 時會觸發閃光燈的問題。
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) 該裝置是 Samsung Android 12 裝置,則焦點一旦回到應用程式,應用程式將無法使用相機。(I7e9f2)
- 針對在檢查閃光燈可用性時裝置當機的問題提供解決辦法。這些裝置將不提供手電筒功能。(If26a3、b/216667482)
- 修正應用程式使用擴充功能並啟用 Proguard 時發生的
AbstractMethodError問題。(I7cbaf、b/222726805) - 強制在 Motorola razr 5G 裝置上停用散景擴充功能模式,解決該模式會造成黑色預覽畫面的問題。(I35d49)
- 修正了在部分 Samsung 裝置 (API 29 以下級別) 上暫停並繼續播放後音訊/視訊不同步的問題。(I64622、b/202798609、b/202798572)
- 修正了在 Sony G3125 上暫停並繼續播放後音訊/視訊不同步的問題。(I2a1a5、b/202799148)
- 修正了錄音工具遇到
InvalidConfigException時當機的問題。不過,這項修正只能防止應用程式當機,但無法解決導致InvalidConfigException的問題。如果仍無法設定Recorder,應用程式會在開始錄製時收到錯誤回呼。(I89c29、b/213617227)
外部貢獻
- 由於 test-coroutines-lib 遷移,更新了 :compose:ui:ui-test API (updateApi) (I3366d)
1.1.0-beta02 版
2022 年 2 月 23 日
發布了 androidx.camera:camera-*:1.1.0-beta02。查看 1.1.0-beta02 版的修訂項。
API 變更
- 新增透過 Camera2Interop 指定實體相機 ID 的功能。(I5aed8)
修正錯誤
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)
- 修正了在 Samsung 裝置的前置鏡頭相機上使用
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)
- 修正了在 Pixel1 上開始錄製 UHD 超高畫質影片後預覽會顯示交錯色線的問題。(I833c6、b/205340278)
1.1.0-alpha11 版
2021 年 11 月 17 日
發布了 androidx.camera:camera-*:1.1.0-alpha11。1.1.0-alpha11 版包含此連結所列的修訂項目。
API 變更
- 已在公用 API 中新增 CameraSelector#filter,以根據 CameraSelector 篩選 CameraInfos 清單。(I105d0)
為 ImageAnalysis 設定新增 setOutputImageRotationEnabled API。使用者可以啟用 YUV/RGB 圖片緩衝區旋轉。旋轉角度是根據感應器旋轉和目標旋轉計算的相對旋轉角度,可以讓圖片保持在前方。
為 ImageAnalysis 設定新增 setOutputImageRotationEnabled API。使用者可以啟用 YUV/RGB 圖片緩衝區旋轉。旋轉角度是根據感應器旋轉和目標旋轉計算的相對旋轉角度,可以讓圖片保持在前方。
在 ImageInfo 中新增
getSensorToBufferTransformMatrixAPI。傳回的矩陣是從感應器座標對應到緩衝區座標,也就是從CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE值到(0, 0, image.getWidth, image.getHeight)。此矩陣可用於將某個 {UseCase} 的座標對應到另一個的座標。例如,使用 ImageAnalysis 對應臉部偵測座標以便預覽。(I9ff1e)新增了 API ImageCapture.Builder#setJpegQuality,以在拍照時變更輸出 JPEG 圖片壓縮品質。(I8dcf4)
已將 MediaStoreOutputOptions.getCollection 重新命名為 MediaStoreOutputOptions.getCollectionUri。(I16639)
修正錯誤
- 修正了在輕觸即可對焦 (startFocusAndMetering) 期間,在低光源環境中,閃光燈模式設為 auto 或 always_on 時會觸發閃光燈的問題。(Id4c11)
- 在 Pixel 2 XL/Pixel 3 XL 的 MINIMIZE_LATENCY 模式下,已停用 HDR+,縮短延遲時間。(Ib6270、b/203505523)
外部貢獻
1.1.0-alpha10 版
2021 年 10 月 13 日
發布了 androidx.camera:camera-*:1.1.0-alpha10。1.1.0-alpha10 版包含此連結所列的修訂項目。
新功能
- 正式發布
androidx.camera:camera-video:1.1.0-alpha10做為影片的第一個 Alpha 版。我們將在日後釋出的版本中修正幾項已知問題。
API 變更
- 已將
@RequiresApi(21)註解新增至所有 CameraX 類別,並捨棄 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) - 修正了 Samsung 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 版包含此連結所列的修訂項目。
新功能
- 為圖片分析設定新增 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)
修正錯誤
- Huawei P20 Lite 的固定預覽畫面太亮。這個問題只會在某些特殊預覽解析度搭配較大的放大值時發生。(Idefce、b/192129158)
- 修正了在將閃光燈模式設為 FLASH_MODE_ON 後立即拍照時,閃光燈無法在某些裝置上運作的問題。(Ieb49b)
- 修正了如果「VideoCapture」、「ImageCapture」和「預覽」設有繫結,「預覽」功能在拍照時會暫停運作一段時間的問題。(I56197、b/193864120)
- 允許 ImageAnalysis 選取大於 1080p 的解析度。有限等級以上的裝置若 ImageAnalysis 與預覽及 ImageCapture 設定繫結,就能支援「錄製」尺寸的解析度。捨棄的部分則是為 ImageCapture 選取的解析度,也必須是「錄製」尺寸的解析度。如要成功為 ImageAnalysis 選取「錄製」尺寸的解析度,應在 ImageCapture 和 ImageAnalysis 兩處設定「錄製」尺寸的目標解析度。這表示應用程式清楚瞭解權衡,且偏好 ImageAnlysis 採用較大的解析度,而非 ImageCapture 具有「最大」解析度。如需「錄製」、「最大」尺寸的定義和其他詳細資訊,請參閱 https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture。「錄製」尺寸是指相機裝置支援的錄製解析度上限 (由 CamcorderProfile 決定)。「最大」尺寸是指相機裝置針對該格式或 StreamConfigurationMap.getOutputSizes(int) 指定目標的最大輸出解析度。(I1ee97、b/192911449)
- 將 Exif 資訊加入擷取的圖片。(I01ff0、b/193342619)
- 在 ImageCapture 中,如果儲存的位置是「File」,傳回已儲存圖片的 URI。(Ib5b49、b/149241379)
- 修正了在許多裝置上,使用閃光燈拍照圖片昏暗的問題。(I4e510)
1.1.0-alpha07 版
2021 年 7 月 21 日
發布了 androidx.camera:camera-camera2:1.1.0-alpha07、androidx.camera:camera-core:1.1.0-alpha07 和 androidx.camera:camera-lifecycle:1.1.0-alpha07。1.1.0-alpha07 版包含此連結所列的修訂項目。
修正錯誤
- 修正了 Samsung Galaxy Note 5 相機在昏暗環境下,閃光燈開啟/自動開關拍照後相機卡住的問題。(If6871)
- 修正了擴充模式啟用且設定
ImageCapture#CAPTURE_MODE_MAX_QUALITY模式時發生的YuvToJpegProcessorEOFException 問題。(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。(I08ee8)
- 已在 CameraInfo 中新增 API isFocusMeteringSupport,可讓應用程式檢查目前相機是否支援指定的 FocusMeteringAction。(Ib45ae、b/188606490)
- 公開 getResolutionInfo API,提供「預覽」、「ImageCapture」和「ImageAnalysis」的解析度資訊。(I2b613、b/188600718)
- 將下列實驗性 API 升級為正式 API:CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler()。(I2ade2)
- 公開了 CameraProvider 介面,提供一組相機存取權。(I1a7b1)
- 升級 camera-core、camera-lifecycle 及 camera-video 適用的實驗功能 UseCaseGroup API。新增了
ViewPort#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) ExperimentalCameraFilterAPI 目前已脫離實驗功能階段,成為正式 API。無需加註 OptIn 即可使用。(I4bc94)- 新增了透過
CameraInfo#getCameraState()公開的相機狀態 API。(Ia86b4) - 新增了實驗功能 API
CameraInfo#getCameraSelector(),會傳回相機專屬的 CameraSelector。(I77f9f)
修正錯誤
- 修正了在部分 Android 11 裝置上 setZoomRate 中傳回 ListenableFuture 以及 setLinearZoom 無法完成的問題。(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 版包含此連結所列的修訂項目。
修正錯誤
- 修正了多個執行緒同時存取相同集合造成的記憶體流失問題。記憶體流失可能會導致 Preview 例項保留 Activity 或 Fragment。(I7b4b8)
- 已將實驗性 API 的註解
@Experimental取代為@RequiresOptIn。如要呼叫實驗功能 API,請使用androidx.annotation.OptIn而非已淘汰的androidx.annotation.experimental.UseExperimental。(Iff226) - 修正了閃光燈開啟/自動開關時 ImageCapture 在 Samsung Galaxy S7 拍出圖片偏白的問題。(I30001)
- 新增了 CameraState 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)
- 修正了 PreviewView 中的 Samsung A3 延伸預覽畫面。(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)
- 修正了只有「預覽」或「ImageCapture」設定繫結時 ExtensionErrorListener 的回報錯誤。(I5ae39)
- 修正了 ImageCapture 效能迴歸問題,方法是先移除已儲存圖片儲存位置的驗證,然後再拍照。進行此變更後,如果儲存目的地無效,則會花較久的時間收到失敗回應,這是因為系統會在拍照之後嘗試儲存圖片。(I1fd4e、b/177061560)
- 修正了 ImageCapture「File」類型為 OutputFileOptions 的效能迴歸問題。(I5164a、b/177061560)
- 已更新說明文件,建議避免使用程式庫程式碼中的
ProcessCameraProvider.configureInstance(...)。(Ib8a9f)
1.1.0-alpha01 版
2021 年 1 月 27 日
發布了 androidx.camera:camera-camera2:1.1.0-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中傳回ListenableFuture且setLinearZoom無法完成的問題。(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 的主要功能
- CameraX 支援預覽、ImageCapture 和分析
- CameraX 在方便使用的 API 當中管理相機生命週期
- CameraX 的目標是提供相容性層,可修正 Android 相機生態系統中的許多問題
已知問題
- 請參閱已知問題清單
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 版包含此連結所列的修訂項目。
修正錯誤
- 修正了閃光燈開啟/自動開關時 ImageCapture 在 Samsung Galaxy S7 拍出圖片偏白的問題。(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)
- 修正了 ImageCapture「File」類型為 OutputFileOptions 的效能迴歸問題。(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)
- 修正了使用 Samsung 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 版包含此連結所列的修訂項目。
修正錯誤
- 停用在 Samsung A3 裝置上自動開關閃光燈功能,修正 Samsung A3 裝置以自動開關閃光燈 AE 模式拍照的異常終止問題。(Ia5fe3、b/157535165)
- 修正了在搭載 Android L 的 Nexus 4 裝置 (API 級別 21 和 22) 上延伸預覽的問題。(I4d407、b/158749159)
OnImageCapturedCallback#onCaptureSuccess基礎類別實作作業不會再關閉圖片。這是為了避免開發人員預期以外的行為。開發人員不應該依賴 super.onCaptureSuccess 關閉圖片。(Ifbf9c)- 已淘汰實驗功能註解的 AndroidX 變化版本,以與 Kotlin 保持一致。該註解已由 RequiresOptIn 註解取代,而支援 Java 的 Linter 則已更新為同時支援新的 Kotlin 註解和新的 AndroidX 變化版本。(I52495、b/151331381)
Camera-Camera2 1.0.0-beta11 版
2020 年 10 月 14 日
發布了 androidx.camera:camera-camera2:1.0.0-beta11。1.0.0-beta11 版包含此連結所列的修訂項目。
新功能
- 在 Android 11 以上版本裝置上支援 Android 11
CONTROL_ZOOM_RATIO縮放 API (包含有效CONTROL_ZOOM_RATIO_RANGE)。(I62cc6)
修正錯誤
- 修正了相機 ID 是非整數相機 ID 時發生的 NumberFormatException 問題。(Ib2228)
- 已改善 CameraX 初始化與 bindToLifecycle 的延遲問題。(I61dc5)
- 建立 CaseCase 不必將 CameraX 初始化即可完成。一旦連結到「相機」例項,在 UseCase 上進行特定實作專用設定,對公用 API 來說為
ProcessCameraProvider.bindToLifecycle()。(Ia5411) - 如果在連接到「相機」例項之前呼叫,除非在 Builder 或 CaseCase 上設定 targetRotation,否則
<UseCase>.getTargetRotation()會傳回Surface.ROTATION_0。(I80fcd)
Camera-Core 1.0.0-beta11 版
2020 年 10 月 14 日
發布了 androidx.camera:camera-core:1.0.0-beta11。1.0.0-beta11 版包含此連結所列的修訂項目。
新功能 - 在 Android 11 以上版本裝置上支援 Android 11 CONTROL_ZOOM_RATIO 縮放 API (包含有效 CONTROL_ZOOM_RATIO_RANGE)。(I62cc6)
修正錯誤
- 修正了相機 ID 是非整數相機 ID 時發生的 NumberFormatException 問題。(Ib2228)
- 建立 CaseCase 不必將 CameraX 初始化即可完成。一旦連結到「相機」例項,在 UseCase 上進行特定實作專用設定,對公用 API 來說為
ProcessCameraProvider.bindToLifecycle()。(Ia5411) - 如果在連接到「相機」例項之前呼叫,除非在 Builder 或 CaseCase 上設定 targetRotation,否則
<UseCase>.getTargetRotation()會傳回Surface.ROTATION_0。(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) - 新增了 ExposureCompensation 的實驗性介面。(If96c7)
Camera-Core 1.0.0-beta09 版
2020 年 9 月 16 日
發布了 androidx.camera:camera-core:1.0.0-beta09。1.0.0-beta09 版包含此連結所列的修訂項目。
API 變更
- 修正了在 UseCaseGroup 上,可視區域標示為非空值的錯誤。開發人員應該能在不設定可視區域的情況下,建立可視區域。(Ie3d2e)
- 已為
ExposureCompensation新增實驗性功能介面 (If96c7) - 允許「預覽」任意目標旋轉。系統會透過新的
TranformationInfoListener回呼即時計算並傳回轉換資訊。(I21470)
修正錯誤
- 修正了部分裝置上的閃光燈無法關閉的問題。當閃光燈模式設為
FLASH_MODE_ON拍照時,會發生這種情形,而在閃光燈啟動時,則會變更為FLASH_MODE_OFF。問題與啟用手電筒模式類似。(Ib4451、b/162568128) - 如果啟用擴充效果,強制執行 PreviewView 使用 TextureView,且供應商程式庫實作作業必須在輸出途徑上採取特殊程序。(I0c3cc)
- 修正了將活動/片段結構定義傳遞至
ProcessCameraProvider.getInstance(Context)的活動/片段流失問題。
已知問題
- 設定 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()傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(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)
修正錯誤
- 修正了在 Android 5.0 (舊版) 裝置上預覽延伸畫面的問題。(I0c03a)
- 修正了在解除繫結用途時發生的
ConcurrentModificationException例外狀況問題。(I371c0)
Camera-Camera2 1.0.0-beta06 版
2020 年 6 月 24 日
發布了 androidx.camera:camera-camera2:1.0.0-beta06。1.0.0-beta06 版包含此連結所列的修訂項目。
API 變更
- 新增了實驗功能介面,可依相機 ID 和 CameraCharacteristics 篩選相機。(I28f61)
修正錯誤
- 修正了 StartFocusAndMetering 在 Samsung Galaxy S7 上無法成功對焦的問題。(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,而無須在應用程式的應用程式類別中實作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為空值的裝置上呼叫startFocusAndMetering時發生的異常終止問題。(Ife55e、b/157084254)
Camera-Core 1.0.0-beta05 版
2020 年 6 月 10 日
發布了 androidx.camera:camera-core:1.0.0-beta05。1.0.0-beta05 版包含此連結所列的修訂項目。
API 變更
- 修正手機處於「勿擾」模式時,初始化 CameraX 時發生的應用程式啟動異常終止問題。
InitializationException包含的CameraUnavailableException會設為初始化結果的ListenableFuture,而不會使應用程式異常終止。(I9909a、b/149413835)
修正錯誤
- 更新了
setTargetResolution和setTargetRotation的 javadocs。(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)
- 修正
ImageProxy中ImageCapture的緩衝區未反繞的錯誤。(I0c455、b/153249512) - 修正了僅繫結 ImageCapture 的問題:(1) 無法以 MAX_QUALITY 拍照;(2) 自動曝光功能無法正常運作,因此影像品質不良。(I17782、b/145326998)
- 改善了 CameraX 因其他程序或程式碼路徑竊取相機而中斷時,重新開啟相機的穩定性 (I1fbc3、b/153714651)
Camera-Core 1.0.0-beta04 版
2020 年 5 月 27 日
發布了 androidx.camera:camera-core:1.0.0-beta04。1.0.0-beta04 版包含此連結所列的修訂項目。
API 變更
- 新增實驗功能 API (
CameraXConfig.Builder#setSchedulerHandler()),用於設定 CameraX 相機堆疊在內部使用的處理常式。這個新的 API 和CameraXConfig.Builder#setCameraExecutor()可以完全控制 CameraX 相機堆疊使用的執行緒。(I7bf32、b/121160431)
修正錯誤
- 修正
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) - 修正
ImageProxy中ImageCapture的緩衝區未反繞的錯誤。(I0c455、b/153249512) - 修正了
CameraManager支援的清單中,不見得會選取使用第一相機的問題。(I4c624、b/153418028)。 - 修正因設定
Preview.SurfaceProvider不釋出先前要求的途徑而造成間歇性異常終止的問題。“java.lang.IllegalStateException: Camera surface session should only fail with request cancellation”(I8e4e7、b/155936225)
Camera-Camera2 1.0.0-beta03 版
2020 年 4 月 15 日
發布了 androidx.camera:camera-camera2:1.0.0-beta03。1.0.0-beta03 版包含此連結所列的修訂項目。
修正錯誤
- 修正以支援
camera-core的版本
Camera-Core 1.0.0-beta03 版
2020 年 4 月 15 日
發布了 androidx.camera:camera-core:1.0.0-beta03。1.0.0-beta03 版包含此連結所列的修訂項目。
修正錯誤
- 修正了來自 beta03 的迴歸問題:如果呼叫
bindToLifecycle()且UseCase為零,會導致擲回例外狀況。這能避免在未繫結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) - 使用預設的 CameraX/Camera2 實作時,不再需要在
build.gradle內明確排序 CameraX 依附元件。如果需要宣告嚴格依附元件,現在可在建構檔案中納入所有 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。這表示 API 不再需要處理provideSurface()上的例外狀況,並強制執行provideSurface()回呼不得取消,藉此簡化 API。這是為了避免因過早釋出途徑,造成較舊裝置當機。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,修正在舊版裝置上預覽曝光不足的問題。(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與其他類別 (例如PreviewView) 配對使用時可能濫用,因此已將Preview.getPreviewSurfaceProvider()方法移除。(I20105)- 將
getTargetRotation()和getTargetName()新增至Preview。(Iceee7) - 已將
getTargetRotation()、getBackpressureStrategy()和getImageQueueDepth()新增至ImageAnalysis。(I9d6d9) - 已於
ImageCapture()新增getTargetRotation()和getCaptureMode()。(I5bc17) - 先前在
ImageCapture.OnImageSavedCallback.onError()和ImageCapture.OnImageCapturedCallback.onError()中傳遞的引數現已取代為單一引數ImageCaptureException,該引數仍包含先前傳遞的所有資訊。 - 先前在
ImageCapture.OnImageSavedCallback.onImageSaved()中傳遞的檔案引數已移除。(I750d2) Preview和ImageCapture類別現已標示為最終版。(I2500b)- API 已更新,將
CameraInfo的getZoomRatio()、getMaxZoomRatio()、getMinZoomRatio()和getLinearZoom()方法合併為getZoomState(),進而傳回ZoomState例項。(Ib19fe) - 已從
CameraXConfig移除 API 欄位OPTION_TARGET_CLASS和OPTION_TARGET_NAME,因為這些欄位僅供內部程式庫使用。移除了CameraXConfig.Builder的建構函式。(I96912) - 移除了應用程式必須擴充
Application方可初始化 CameraX 的要求。現在只要camera-camera2構件納入應用程式的build.gradle中,就能以預設的 Camera2 設定初始化 CameraX。(I58ff5) (b/146923574)
Camera-Camera2 1.0.0-alpha09 版
2020 年 1 月 22 日
發布了 androidx.camera:camera-camera2:1.0.0-alpha09。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
新增 Camera2 互通性路徑,用來擷取 Camera2 相機 ID。您可以使用
Camera2CameraInfo.extractCameraId()從CameraInfo擷取相機 ID,以下程式碼範例說明如何使用:Camera camera = provider.bindToLifecycle(...); String cameraId = Camera2CameraInfo.extractCameraId(camera.getCameraInfo());Camera2CameraInfo類別需要ExperimentalCamera2InteropmarkerClass。
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參數的使用情況,改善 Javadoc 的對焦和計量 API。 - 擴充了
setZoomRatio和setLinearZoom的參考說明文件。
修正錯誤
- 修正了關閉再開啟相機導致「先決條件」檢查失敗的問題。
- 修正了使用手電筒及縮放 API 可能發生的
ConcurrentModificationException問題。 - 修正了問題:mod16 尺寸大小可用時,現在可以選取更接近要求解析度的解析度。
startFocusMetering和cancelFocusMeteringAPI 現已按照文件所述方式運作、時間碼正確,且可能在發生錯誤時傳回相關資訊。- 在不支援此大小的裝置上,修正了以裁剪顯示比例要求特定目標解析度的問題。現在,系統會選取沒有裁剪範圍的足夠解析度,以繫結原要求 (如果有的話)。
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 變更
- 實驗功能:新增了 Camera2 互通性路徑,用於擷取相機 ID。
Camera-Core 1.0.0-alpha08 版
2019 年 12 月 18 日
發布了 androidx.camera:camera-core:1.0.0-alpha08。1.0.0-alpha08 版包含此連結所列的修訂項目。
已知問題
- 使用
PreviewView或CameraView的應用程式預覽顯示比例可能有誤。部分「完整」裝置 (例如 Pixel2) 暫停或重新啟用後,就會發生這類情況。
修正錯誤
- 更新了
FocusMeteringAction和CameraControl的說明文件。 - 已為
enableTorch()和getTorchState()實作TorchControl。
API 變更
- 已隱藏 IntDef,並將 IntDef 常數移至 IntDef 定義之外。
- 已將
rotationDegrees從OnImageCaptureCallback類別移至ImageInfo。 - 已將
rotationDegrees從Analyzer類別移至ImageInfo。
Camera-Camera2 1.0.0-alpha07 版
2019 年 12 月 4 日
發布了 androidx.camera:camera-camera2:1.0.0-alpha07。camera-camera2 1.0.0-alpha07 版包含此連結所列的修訂項目
Camera2Config現可用於初始化及設定以 Camera2 為基礎的 CameraX 實作作業。如要進一步瞭解如何在初始化作業中使用此功能,請參閱版本資訊的 camera-core 部分。- Camera2 互通性功能現已標記為實驗功能,並移至獨立的套件
androidx.camera.camera2.interop.中。
Camera-Core 1.0.0-alpha07 版
2019 年 12 月 4 日
發布了 androidx.camera:camera-core:1.0.0-alpha07。camera-core 1.0.0-alpha07 版包含此連結所列的修訂項目
這個 Alpha 版有一些重大變更,由於目前 Beta 版還在準備階段,請特別注意這些異動的部分。建議您查看變更內容,並分享您對 CameraX Google 網路論壇的意見回饋。對於在 Play 商店應用程式中使用 CameraX 的開發人員,建議您先等待正式 Beta 版,然後再升級應用程式中的程式庫。
API 變更
重要事項:CameraX 初始化已變更。應用程式必須實作
CameraXConfig.Provider,並使用androidx.camera.camera2提供的預設Camera2Config。一般用途包括:import androidx.camera.camera2.Camera2Config import androidx.camera.core.CameraXConfig public class MyCameraXApplication : Application(), CameraXConfig.Provider { override fun getCameraXConfig(): CameraXConfig { return Camera2Config.defaultConfig(this) } }CameraX 類別已移除。先前由 CameraX 類別呼叫提供的
bindToLifecycle()、unbind()、unbindAll()、isBound()和hasCamera()現在可以透過ProcessCameraProvider取得。ProcessCameraProvider的程序前例項,都是使用靜態方法ProcessCameraProvider.getInstance()以非同步方式取得,後者會傳回可監聽的 Future,並於完成時提供ProcessCameraProvider。一般用途如onCreate()所示。您可以在活動生命週期後期呼叫getInstance(),以將初始化延遲至較晚時間 (例如使用者動作開啟相機 UI 時)。import androidx.camera.lifecycle.ProcessCameraProvider import com.google.common.util.concurrent.ListenableFuture class MainActivity : AppCompatActivity() { private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider> override fun onCreate(savedInstanceState: Bundle?) { cameraProviderFuture = ProcessCameraProvider.getInstance(this); }事件監聽器可以新增至
getInstance()傳回的ListenableFuture。這樣做可確保系統能夠從Future擷取相機供應者,而不會卡在Future.get()上。cameraProviderFuture.addListener(Runnable { val cameraProvider = cameraProviderFuture.get() cameraProvider.bindToLifecycle(...) }, ContextCompat.getMainExecutor(this))目前是透過相機選取器 (而非每個用途) 來選擇相機
val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()會給予
CameraProvider.bindToLifecycle生命週期擁有者、相機選取器和用途,然後繫結至指定的生命週期擁有者,並針對所選相機執行。cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, preview, imageAnalysis)已移除用途「Config」類別。改為直接建立用途,並於各用途建構工具上設定選項。例如:
preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()我們已更新「預覽」用途,以便接受應用程式所建立及管理的途徑,以確保 Android 最佳做法。強烈建議您使用 camera-view 套件提供的
PreviewView檢視類別。preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)如要瞭解如何附加應用程式代管途徑,請參閱說明文件。在這類情況下,應用程式會管理途徑的生命週期。
重要資訊:接收的圖片使用完畢後,
ImageAnalysis分析工具必須呼叫image.close()。否則可能無法接收新圖片,或相機可能會停滯 (視背壓設定而定)。詳情請參閱參考文件。ImageAnalysis ImageReaderMode現在已變更為背壓策略intdef。ImageProxy.getImage()已標示為實驗功能。應用程式應透過@androidx.camera.core.ExperimentalGetImage加註使用範例已移除
Analyzer的UIThread註解規定。系統會加入
ImageAnalysis.clearAnalyzer()函式來移除分析工具。包含超過 1 種方法的事件監聽器已重新命名為回呼:
ImageCapture.OnImageCapturedListener現在是ImageCapture.OnImageCapturedCallbackImageCapture.OnImageSavedListener現在是ImageCapture.OnImageSavedCallbackVideoCapture.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>一律是即時complete(success)Future,即使沒有閃光燈也一樣。日後版本會將此修正為最終行為:沒有閃光燈時,enableTorch(true)會立即失敗 (不會向CaptureSession傳送請求),TorchState則會保持關閉。 - 已知問題:
startFocusAndMetering和cancelFocusAndMetering會啟動並取消對焦計量,但傳回不代表記錄行為的completed (success)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 輸出會據此裁剪。
執行者 API
- 下列函式接受執行者參數,可讓應用程式控管執行函式的執行者。
Preview.setOnPreviewOutputUpdateListener()API。如果該函式的執行程式不存在,就會在主執行緒上執行。Preview.setOnPreviewOutputUpdateListenerFocusMeteringAction.Builder.setAutoFocusCallbackImageAnalysis.setAnalyzerImageCapture.takePictureCameraView.takePictureCameraView.startRecordingVideoCapture.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(),用於提供相對於裝置自然方向的相機感應器方向,或基於便利性,提供相對於途徑旋轉所述方向 (描述相對於自然方向的方向) 的相機感應器方向。
API 相關變更與修正錯誤
- 顯示比例:在每個用途中,應用程式只能呼叫
setTargetResolution()或setTargetAspectRatio()其中之一。對相同的建構工具同時呼叫兩者,就會傳回錯誤。- 一般來說,建議您根據應用程式的 UI 設計來使用
setTargetAspectRatio()。具體解析度會因用途而異。舉例來說,預覽畫面會接近螢幕解析度,拍照則提供高解析度的靜態圖像。詳情請參閱自動解析度表格。 - 使用
setTargetResolution()來處理更具體的用途,例如需要最低 (為了節省運算力) 或最高解析度 (為了處理細節) 時。
- 一般來說,建議您根據應用程式的 UI 設計來使用
- 執行者 API:已從用途設定 API 中移除
setCallbackHandler()呼叫。應用程式改將執行者設為其他各種設定回呼 API 中的參數。 - 已針對各種函式更新空值註解。
- 修正了造成相機開啟時擲回
java.lang.IllegalStateException at Camera$StateCallback.onError的問題。 - 修正了問題:應用程式要求較大或預設解析度時選取的解析度過低 (低於 640x480),導致預覽圖片過於笨重或模糊不清。特別需要較低解析度的應用程式可明確提出要求。
- 修正了試圖啟動其他相機應用程式並返回後,相機顯示黑色畫面 (無法啟動相機) 的問題。
- 修正了應用程式反覆啟動或停止時擲回以下錯誤的問題:
java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface! - 修正了停用 ImageAnlysis 時發生的以下錯誤:
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.ImageCaptureErrorVideoCapture.UseCaseError已重新命名為VideoCapture.VideoCaptureError
已利用「輕觸即可對焦」API 新增
CameraControlAPI新增了 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();新增了
CameraControl的 API,以啟動及取消對焦計量: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 也可以傳回空值。
修正了問題:在不支援 AF/AE/AWB 設定的模擬器上進行測試。
修正了分析圖片時的旋轉異常終止錯誤。
修正了在旋轉或切換前後相機後,預覽畫面在開始啟動時顯示黑色畫面 (沒有相機資料) 的問題。
移除了多項並行圖片分析用途的測試。為確保相容性,應用程式僅應附加單一圖片分析用途。
新增了針對 camera-testing 套裝組合 (WIP) 假相機的初始 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 會根據裝置功能犧牲解析度/顯示比例,以啟動擷取工作階段為第一目標,因此可能無法滿足確切的要求。原因可能包括:
- 裝置不支援要求的解析度
- 相容性問題,例如部分舊版裝置必須使用特定解析度才能正常運作
- 某些裝置僅於使用特定顯示比例時提供特定格式
- 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的問題。 - 修正了問題:舊版裝置需要特定的顯示比例做為 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 實作作業
- 測試修正方法,獲得更穩定的測試
- 核心整合測試現在會顯示相片的拍攝時間
- 已為執行者開發內部 compat 類別
- 時間碼測試應用程式擷取圖片會等候先前動作完成,並提升穩定性
擴充功能
- 新增了版本管理檢查
- 其他測試涵蓋範圍 - 擴充功能事件回呼
- 改善內部對應圖片和中繼資料
- 修正測試應用程式中的模式切換問題
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/途徑放棄錯誤。
- 修正了內部問題,確保擷取要求更新不會對所有途徑造成一致性影響
- 在新應用程式例項中重新啟動用途時,提升了穩定性
- 變更了內部架構,以便支援 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 版包含此連結所列的修訂項目。
修正錯誤
- 如果在連接到「相機」例項之前呼叫,除非在 Builder 或 CaseCase 上設定 targetRotation,否則
<UseCase>.getTargetRotation()會傳回Surface.ROTATION_0。(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()傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(I3d3c9、b/160817073)
Camera-Lifecycle 1.0.0-beta07 版
2020 年 7 月 22 日
發布了 androidx.camera:camera-lifecycle:1.0.0-beta07。1.0.0-beta07 版包含此連結所列的修訂項目。
Camera-Lifecycle 1.0.0-beta06 版
2020 年 6 月 24 日
發布了 androidx.camera:camera-lifecycle:1.0.0-beta06。1.0.0-beta06 版包含這些修訂版本。
API 變更
- CameraX 現可在呼叫 ProcessCameraProvider#getInstance() 之前使用 ProcessCameraProvider#configureInstance() 進行設定。這可讓您自訂 CameraXConfig,而不必在應用程式的「應用程式」類別中導入 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 時發生的應用程式啟動異常終止問題。
InitializationException包含的CameraUnavailableException會設為初始化結果的ListenableFuture,而不會使應用程式異常終止。(I9909a、b/149413835)
Camera-Lifecycle 1.0.0-beta04 版
2020 年 5 月 27 日
發布了 androidx.camera:camera-lifecycle:1.0.0-beta04。1.0.0-beta04 版包含此連結所列的修訂項目。
Camera-Lifecycle 1.0.0-beta03 版
2020 年 4 月 15 日
發布了 androidx.camera:camera-lifecycle:1.0.0-beta03。1.0.0-beta03 版包含此連結所列的修訂項目。
修正錯誤
- 修正了來自 beta03 的迴歸問題:如果呼叫
bindToLifecycle()且UseCase為零,會導致擲回例外狀況。這能避免在未繫結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 變更
- 已將
@MainThread註解新增至 BindToLifecycle、unbind 和 unbindAll 方法。(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。
- 請參閱「camera-core」部分中的附註,瞭解如何使用
ProcessCameraProvider執行 CameraX 初始化作業。
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 擴充功能只支援ImageCapture和Preview。目前尚未支援VideoCapture。如果應用程式繫結VideoCapture並啟用任何擴充功能模式,系統就會擲回IllegalArgumentException。(I0d87b) - 結果集為空白時,
CameraSelector#filter不再擲回IllegalArgumentException。(I27804) - 已將
ExtensionsManager#getInstanceAPI 重新命名為getInstanceAsync,因為其會傳回ListenableFuture。函式名稱的非同步尾碼可以清楚顯示這是非同步函式。(I279d2) - 從
ExtensionsManager#getEstimatedCaptureLatencyRangeAPI 中移除解析度參數,因為使用者不知道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 變更
- 已在公用 API 中新增 CameraSelector#filter,以根據 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 變更
- 已將 @RequiresApi(21) 註解新增至所有 CameraX 類別,並捨棄 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 事件監聽器變更為 add/remove/removeAll,移除預設會使用主執行緒的 setListener 變化版本,並新增方法註解。(Ib1669)
修正錯誤
- 已將 ExtensionMode#BEAUTY 重新命名為 FACE_RETOUCH,以正確顯示擴充功能模式完成的事項。(I61f54、b/198515274)
- 修正了在一次活動中多次使用 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 最終版。(I099fa)
修正錯誤
- 移除了已淘汰的
<EffectName><UseCase>Extender類別、ExtensionsErrorListener 和相關的 ExtensionManager 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)
修正錯誤
- 修正了
PreviewView PERFORMANCE模式與 Compose UI 搭配使用時的延伸問題。(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 中新增更多相機核心功能:適用於目標顯示比例、目標解析度、拍攝模式、CameraControl 和自訂執行工具的 getter/setter。(Iea8f2)
- 新增接收途徑旋轉變更的 RotationReceiver 類別。可用來在裝置固定於直向/橫向模式時,設定目標旋轉。(Ib278f)
- 在 ExtensionManager 類別中公開新的 getEstimatedCaptureLatencyRange 公用 API。(I6a8ec)
- 已淘汰 ExtensionsErrorListener。目前,這個介面只會用於監控在啟用擴充功能模式時,缺少「預覽」或「ImageCapture」的情況。CameraX 會自動新增額外的「預覽」或「ImageCapture」,讓擴充功能運作良好。之後系統即不再透過這個介面回報錯誤。(I47d9e)
- 公開新的 ExtensionManager 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 版包含此連結所列的修訂項目。
修正錯誤
- 已將實驗性 API 的註解
@Experimental取代為@RequiresOptIn。如要呼叫實驗功能 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) - 已將 FloatRange 註解新增至 setLinearZoom()。(I69971)
修正錯誤
- 已固定要在 1.0.0 構件上仰賴的 camera-view 依附元件。需要 camera-view 不會再導致 Gradle 的依附元件解析方式將 camera-core、camera-camera2 及 camera-lifecycle 自動升級為最新的 1.1.0 構件,不過 camera-view 仍與這些構件相容 (若明確設為使用 1.1.0)。(Ic8fa1、b/181599852)
- 修正了 PreviewView 中的 Samsung A3 延伸預覽畫面。(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 變更
- 將 CameraInfo getter 新增至 CameraController。(Ib8138、b/178251727)
修正錯誤
- 修正了只有「預覽」或「ImageCapture」設定繫結時 ExtensionErrorListener 的回報錯誤。(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 版包含此連結所列的修訂項目。
修正錯誤
@ExperimentalVideo註解已導入 camera-view。這個註解會標記公開實驗功能影片的 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)
- 如果在連接到「相機」例項之前呼叫,除非在 Builder 或 CaseCase 上設定 targetRotation,否則
<UseCase>.getTargetRotation()會傳回Surface.ROTATION_0。(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 做為參數,而非包含 0 引數。(Ife754)使用不會從
Context.getApplicationContext()傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(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 版包含此連結所列的修訂項目。
修正錯誤
- 當 CameraView 繫結至 LifecycleOwner,且其 Lifecycle 在完成繫結後快速轉換為 DESTROYED 狀態時,不會再因為 IllegalArgumentException 而發生當機情形。繫結「DESTROYED」狀態的「生命週期」,不會嘗試開啟相機。(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 時發生的應用程式啟動異常終止問題。
InitializationException包含的CameraUnavailableException會設為初始化結果的ListenableFuture,而不會使應用程式異常終止。(I9909a、b/149413835)
Camera-View 1.0.0-alpha12 版
2020 年 6 月 10 日
發布了 androidx.camera:camera-view:1.0.0-alpha12。1.0.0-alpha12 版包含此連結所列的修訂項目。
修正錯誤
- 新增
PreviewView#getBitmap()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,可傳回預覽介面顯示的內容 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#getPreviewStreamStateAPI,可讓應用程式觀察影片是否正在串流播放。如果 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) - 將 CameraView 中 VideoCapture 的預設顯示比例修正為 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來 set/get 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會在視窗所在的生命週期停止、重新啟動、相機重新開啟時驗證其途徑,且可能會嘗試在SurfaceView的途徑再次有效時繼續預覽。目前,您應該使用ImplementationMode.TEXTURE_VIEW。
API 變更
PreviewView.setImplementationMode()已重新命名為PreviewView.setPreferredImplementationMode()。PreviewView.getImplementationMode()已重新命名為PreviewView.getPreferredImplementationMode()。- 已將
PreviewView.getSurfaceProvider()取代為PreviewView.createSurfaceProvider(CameraInfo),這個值可在情況許可時,使用ImplementationMode.SURFACE_VIEW接受空值CameraInfo例項,將預覽功能最佳化。如果傳遞的是空值例項,或您已將偏好的實作作業模式設為ImplementationMode.TEXTURE_VIEW,則內部會使用ImplementationMode.TEXTURE_VIEW。 以下程式碼範例顯示預覽用途先前如何與 PreviewView 配合使用。
preview.setSurfaceProvider(previewView.previewSurfaceProvider) cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)目前您可以編寫以下內容:
val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview) previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))@UiThread註解新增了至PreviewView.getSurfaceProvider(),表示必須從主執行緒呼叫。(I192f3)新增了
PreviewView.setScaleType(),可讓您設定預覽的調整類型。此項目預設為PreviewView.ScaleType.FILL_CENTER,接受PreviewView.ScaleType的其中一個值。新增了
PreviewView.getScaleType()。已移除透過 XML 版面配置,使用
implementationMode屬性設定PreviewView實作作業模式的支援。將
createMeteringPointFactory()API 新增至 PreviewView,以支援將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。這表示 API 不再需要處理provideSurface()上的例外狀況,並強制執行provideSurface()回呼不得取消,藉此簡化 API。這是為了避免因過早釋出途徑,造成較舊裝置當機。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與其他類別 (例如PreviewView) 配對使用時可能濫用,因此已將Preview.getPreviewSurfaceProvider()方法移除。(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 介面使用期間保持同步。
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類別,讓您在應用程式中輕鬆顯示 Preview 用途的輸出內容。 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 包含的修訂版。
新功能
- 新增了擴充功能的結構定義初始化工具。Extensions 版已增加到 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 包含的修訂版。
- 為日後的 Camera Extensions 推出新程式庫,以便在支援的裝置上存取特效。這個程式庫正在運作。
- 新增 Camera View 類別。這個程式庫正在運作。