CameraX
這個表格列出 androidx.camera
群組中的所有構件。
構件 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
camera-camera2 | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-core | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-compose | - | - | - | 1.5.0-alpha04 |
camera-effects | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-extensions | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-feature-combination-query | - | - | - | 1.5.0-alpha04 |
camera-feature-combination-query-play-services | - | - | - | 1.5.0-alpha04 |
camera-lifecycle | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-mlkit-vision | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-view | 1.4.1 | - | - | 1.5.0-alpha04 |
camera-viewfinder | - | - | 1.3.0-beta02 | 1.4.0-alpha07 |
camera-video | 1.4.1 | - | - | 1.5.0-alpha04 |
裝置測試
我們在研究室中為許多裝置完成 CameraX 測試。如要查看目前研究室中已完成測試的裝置清單,請參閱已完成研究室測試的 CameraX 裝置。
宣告依附元件
如果要為 CameraX 新增依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一節。
在應用程式或模組的 build.gradle
檔案中,新增您需要的構件依附元件:
Groovy
dependencies { // CameraX core library using the camera2 implementation def camerax_version = "1.5.0-alpha03" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}" // If you want to additionally use the CameraX Lifecycle library implementation "androidx.camera:camera-lifecycle:${camerax_version}" // If you want to additionally use the CameraX VideoCapture library implementation "androidx.camera:camera-video:${camerax_version}" // If you want to additionally use the CameraX View class implementation "androidx.camera:camera-view:${camerax_version}" // If you want to additionally add CameraX ML Kit Vision Integration implementation "androidx.camera:camera-mlkit-vision:${camerax_version}" // If you want to additionally use the CameraX Extensions library implementation "androidx.camera:camera-extensions:${camerax_version}" }
Kotlin
dependencies { // CameraX core library using the camera2 implementation val camerax_version = "1.5.0-alpha03" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation("androidx.camera:camera-core:${camerax_version}") implementation("androidx.camera:camera-camera2:${camerax_version}") // If you want to additionally use the CameraX Lifecycle library implementation("androidx.camera:camera-lifecycle:${camerax_version}") // If you want to additionally use the CameraX VideoCapture library implementation("androidx.camera:camera-video:${camerax_version}") // If you want to additionally use the CameraX View class implementation("androidx.camera:camera-view:${camerax_version}") // If you want to additionally add CameraX ML Kit Vision Integration implementation("androidx.camera:camera-mlkit-vision:${camerax_version}") // If you want to additionally use the CameraX Extensions library implementation("androidx.camera:camera-extensions:${camerax_version}") }
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 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)
Camera 1.5 版
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
繫結至 Lifecycle 時取得解析度資訊。(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 新增輸出格式 API
ImageCapture
,ImageCaptureCapabilities#getSupportedOutputFormats
會公開裝置功能檢查。OUTPUT_FORMAT_RAW
用於擷取 RAW 圖片,格式為 Adobe DNG;OUTPUT_FORMAT_RAW_JPEG
則用於同時擷取 RAW 和 JPEG 圖片。新的ImageCapture#takePicture
API 用於同時擷取圖片,需要提供兩個OutputFileOptions
,第一個用於擷取 RAW 圖片,第二個用於擷取 JPEG 圖片。(Ib0f3d)
修正錯誤
- 修正在啟用
VideoCapture
時,TCL 裝置上預覽畫面和影片曝光不足的問題。(Id7a64)。 - 修正了以下問題:啟用效果或繫結 4 個用途 (串流共用) 時,使用
PreviewView.getMeteringPointFactory
叫用startFocusMetering
無法取得正確的傳感器座標。(I916c5、b/345993685)。 - 修正錄製影片時,當儲存空間不足而未觸發
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE
事件的問題。(I35779、b/356399842)。
1.5.0-alpha02 版
2024 年 10 月 2 日
發布 androidx.camera:camera-*:1.5.0-alpha02
。1.5.0-alpha02 版包含這些修訂項目。
新功能
- 新的 API,可用於查詢裝置支援的相機功能。例如,檢查 HDR 和 60FPS 是否可同時啟用。其中包含 2 個構件:camera-feature-combination-query 和 camera-feature-combination-query-play-services。這是相機 2 的
CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported
API 相容版本,並提供 Google Play 服務提供的額外資料。
修正錯誤
- 修正了在舊版裝置上,
Preview/VideoCapture
目標影格速率的問題。透過setTargetFrameRate
或Camera2Interop
API 設定的目標影格速率一律會覆寫為AeFpsRangeLegacyQuirk
提供的值。修正後,CameraX 程式庫會遵循透過setTargetFrameRate
或Camera2Interop
API 設定的值。(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 圖片中繼資料錯誤問題。修正後,如果發生 JPEG 圖片中繼資料不正確的問題,CameraX 就能成功儲存 JPEG 圖片,或是在這些裝置上呼叫
ImageProxy.toBitmap()
函式時傳回正確的 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 版包含這些修訂版本。
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.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:錄影設定的新控制項。
- 預覽防震功能:查詢裝置功能並啟用防震功能。
- 強化的錄影功能:更精細地控制品質,並使用更高解析度的畫面。
- CameraX 擴充功能整合:與
VideoCapture
和新的ImageCapture
功能完美整合。 - 快門聲 API:輕鬆查看各地區的快門聲規定。
- 螢幕閃光燈:改善前置鏡頭在低光源環境下拍攝的照片。
- Camera Extensions Metadata API:支援調整擴充功能強度,並在
ExtensionMode#AUTO
中取得目前擴充功能模式的通知。如要進一步瞭解錯誤修正項目,請參閱 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 位元輸出功能分開,因為 Ultra HDR 支援功能不再需要裝置具備 10 位元輸出功能。(I96ff2、I0c3b3)
1.4.0-rc02 版
2024 年 9 月 18 日
發布 androidx.camera:camera-*:1.4.0-rc02
。1.4.0-rc02 版包含這些修訂項目。
修正錯誤
- 修正了在使用已刪除的
LifecycleOwner
時,呼叫bindToLifecycle
會發生異常終止的問題。(I6e6d8) - 為
ScreenFlash#apply
在ScreenFlashView
中新增了可見度動畫,這也修正了亮度變更在一段時間後以非同步方式完成的錯誤。(I37cdb)。 - 在支援的裝置上覆寫架構中的縮放設定,改善縮放流暢度。
1.4.0-rc01 版本
2024 年 8 月 7 日
發布 androidx.camera:camera-*:1.4.0-rc01
。1.4.0-rc01 版本包含這些修訂項目。
新功能
- 新增了實驗性
CameraInfo.getCameraInfo
,可提供特定相機資訊,而無須將用途繫結至相機。(I550d1)。
API 變更
- 針對未明確新增
ScreenFlashView
的情況,新增PreviewView.getScreenFlash
和PreviewView.setScreenFlashOverlayColor
API。(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)
修正錯誤
- 修正了在
Preview
+VideoCapture
+ImageCapture
UseCase
組合下,ImageCapture
選取 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 變更
- 將輸出格式 API 新增至
ImageCapture
,並將getSupportedOutputFormats
方法新增至ImageCaptureCapabilities
,以便查詢裝置功能。預設的輸出格式值為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) - 新的
RetryPolicy
API 可讓開發人員自訂 CameraX 初始化的重試行為。(I36dd2)。 - 啟用
ImageCaptureLatencyEstimate
物件的建立功能,協助測試 (Iaba99) - 新增
ImageAnalysis#COORDINATE_SYSTEM_SENSOR
。使用此方法時,MlKitAnalyzer
會傳回相機感應器座標系統中的座標。(I3ec61)。 - 公開擴充功能中繼資料 API。新的
CameraExtensionsInfo
和CameraExtensionsControl
介面可讓應用程式監控及調整擴充功能強度設定。應用程式可以透過新增的ExtensionsManager#getCameraExtensionsInfo()
或ExtensionsManager#getCameraExtensionsControl()
方法取得CameraExtensionsInfo
或CameraExtensionsControl
例項。(I28e1a) - 新增
ProcessCameraProvider.awaitInstance
,這是ProcessCameraProvider.getInstance
的暫停版本 (Ib22b9) - 新增
PreviewView#getSensorToViewTransform()
API。矩陣代表從相機感應器座標轉換到PreviewView
的座標。可用於將座標從一個UseCase
轉換至另一個UseCase
。例如,將ImageAnalysis
中偵測到的物件座標轉換為PreviewView
重疊。(I947ab) - 讓
camera-viewfinder-core
API 更通用,以便供camera-viewfinder
和camera-viewfinder-compose
使用。(I1e295)。 - 將
getSurface
函式新增至ViewfinderSurfaceRequest
。(I781a0)。 - 在
camera-viewfinder
中使用camera-viewfinder-core
,並淘汰ViewfinderSurfaceRequest
和CameraViewfinder
。(I6198c)。 - 新增
ZoomGestureDetector
,可解讀針對捏合放大活動特別設定的縮放手勢。(Ifafbf)
修正錯誤
- 修正
ImageAnalysis
的解析度選取問題,該問題與分析器的預設目標解析度設定有關:即使應用程式已設定不同的分析器預設解析度設定,系統仍會將目標解析度誤設為 640x480。如果應用程式遇到這個問題 (1.3.0 到 1.3.2),且無法升級至含有解決方案的新版本,您可以直接設定ResolutionSelector
,並使用偏好的解析度和與ImageAnalysis
UseCase
相符的AspectRatioStrategy
,藉此解決這個問題。(I81f72、b/330091012)。 - 修正如果目前要求失敗,佇列中的
takePicture
要求可能無法執行的問題。(Ie0801)。 - 將無效的 JPEG 資料檢查套用至 Vivo X60 和 X60 Pro 裝置。這樣就能修正這些裝置上異常大型圖片的問題。(I82247、b/288828159)。
- 修正 Samsung A24 裝置上 JPEG 圖片中繼資料錯誤的問題。修正後,CameraX 就能成功儲存 JPEG 圖片,或是在 Samsung A24 裝置上呼叫
ImageProxy.toBitmap()
函式時傳回正確的 Bitmap 物件。(I8d6eb、b/309005680)。 - 如果擷取的圖片大於 10 MB,請將無效 JPEG 資料檢查套用至所有 Samsung 裝置。這麼做可以修正 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
。這個構件包含CameraEffect
API 的 OpenGL 實作項目,可有效操控相機輸出內容。 OverlayEffect
:使用 Android 的 Canvas API 繪製疊加層。這可讓應用程式在攝影機輸出內容上套用浮水印,或標示偵測到的物件。DynamicRange
API 適用於預覽用途:現在可以在預覽用途上設定動態範圍,不受影片用途影響。這樣一來,您就能單獨使用 HDR 動態範圍 (例如 HLG10) 進行預覽。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)。 - 將
ImageAnalysis
輸出格式 getter/setter 新增至CameraController
。(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)。
- 已將 Snapdragon 480 新增至
CameraUseInconsistentTimebaseQuirk
。這項修正可解決使用此晶片組的裝置在 Android 12 上發生的問題,在該問題中,錄音中的音訊會因裝置處於暫停狀態的時間長度而偏移。(I58010)
1.4.0-alpha02 版
2023 年 10 月 18 日
發布 androidx.camera:camera-*:1.4.0-alpha02
。查看 1.4.0-alpha02 版的修訂項目。
API 變更
- 將 API 重新命名為
setCameraOpenRetryMaxTimeoutInMillisWhileResuming
,並重新命名引數。(I72370)。 - 新增 API 來查詢裝置功能,並啟用影片/預覽畫面防震功能。(I87544)。
- 提供 API 以自訂攝影機開啟重試的最大逾時時間。(I0c642)。
- 我們已將
ProcessCameraProvider.shutdownAsync
釋出為公開測試 API,讓處理相機供應工具能在測試套件中使用,因為測試套件可能需要在測試之間以不同方式初始化 CameraX。(I9eca7) - 新增用於設定錄影動態範圍、影格速率和鏡像模式的 API。(Ifb8f7)。
- 淘汰
OutputSize
,並替換為ResolutionSelector
。ResolutionSelector
是選擇解析度的更全面方式,且與相機核心 API 一致。(I93abd、b/286801438)。
修正錯誤
- 修正了在後置相機上使用
ImageAnalysis
啟用擴充功能 Bokeh 或臉部修飾功能時,Samsung Galaxy S23 Ultra 5G 發生黑色預覽畫面問題。(I2e8b1)。 - 修正了 Moto E5 Play 上的預覽畫面和
VideoCapture
延伸問題。(73dce2)
1.4.0-alpha01 版
2023 年 9 月 20 日
發布 androidx.camera:camera-*:1.4.0-alpha01
。查看 1.4.0-alpha01 版的修訂項目。
API 變更
- 新增 API,以便在錄製時存取音訊振幅資訊。(Id4925)
修正錯誤
- 確保初始化和解除初始化事件以正確順序觸發,藉此改善擴充功能的穩定性。(Ib3b8e)。
- 修正在內部新增額外重複表面,導致擷取工作階段設定超出支援的表面組合時發生的失敗問題。(Id718c)。
- 修正了 Vivo S16 裝置上擷取大型 JPEG 圖片的問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。這會導致擷取的圖片檔案大小過大。系統會移除這些多餘的 0 填充資料,讓擷取的圖片擁有正常的圖片檔案大小。(I79505、b/299069235)。
- 修正了在部分裝置上啟用某些擴充模式時,
ImageAnalysis
無法與ImageCapture
和預覽畫面繫結的問題。當應用程式透過ExtensionsManager#isImageAnalysisSupported()
查詢ImageAnalysis
可用性時,修正程式會傳回正確的值。(I7d538)。 - 更新 JavaDoc 以符合行為。
#setZoomRatio
、#setLinearZoom
和#enableTorch
不會立即完成,而是等到相機就緒後再完成。另外,我們也新增了如何透過#takePicture
API 取得最大 FOV 的相關資訊。(I23588)。
1.3 版本
1.3.4 版本
2024 年 6 月 12 日
發布 androidx.camera:camera-*:1.3.4
。1.3.4 版包含這些修訂版本。
修正錯誤
- 修正了在套用縮放比例增加時,
getZoomRatio
會傳回錯誤的遞減值的問題。(I4aa0d、b/317543616) - 修正靜態拍攝/輕觸對焦未使用重複要求 FPS/穩定模式值的問題,這可能會重新建立擷取工作階段,並在部分裝置上導致延遲問題或預覽畫面凍結。(I7dc0b)
- 修正了以下問題:使用
FRAME_RATE_RANGE_UNSPECIFIED
呼叫setTargetFrameRate
時,影格速率會設為較低的值。(I78c61)
1.3.3 版本
2024 年 4 月 17 日
發布 androidx.camera:camera-*:1.3.3
。1.3.3 版包含這些修訂版本。
修正錯誤
- 修正
ImageAnalysis
的解析度選取問題,該問題與分析器的預設目標解析度設定有關:即使應用程式已設定不同的分析器預設解析度設定,系統仍會將目標解析度誤設為 640x480。如果應用程式遇到這個問題 (1.3.0 到 1.3.2),且無法升級至含有解決方案的新版本,您可以直接設定ResolutionSelector
,並使用偏好的解析度和與ImageAnalysis
UseCase 相符的AspectRatioStrategy
,藉此解決這個問題。(I81f72、b/330091012)。
1.3.2 版
2024 年 3 月 6 日
發布 androidx.camera:camera-*:1.3.2
。1.3.2 版包含這些修訂版本。
修正錯誤
- 修正 Samsung A24 裝置的 JPEG 中繼資料問題。CameraX 現在可準確儲存圖片,且
ImageProxy.toBitmap()
函式會傳回正確的 Bitmap 物件。(I8d6eb、b/309005680)。 - 由於出現問題,我們已在 Redmi Note 9 Pro 裝置上移除 9280x6944 解析度選項。(Ia23da)
1.3.1 版本
2023 年 12 月 13 日
發布 androidx.camera:camera-*:1.3.1
。查看 1.3.1 版的修訂項。
修正錯誤
提升 ProcessCameraProvider#bindToLifecycle()
效能。主要變更是針對 UseCases
找出最合適大小組合的程序進行最佳化。最佳結果會因特定 UseCase
組合和目標裝置支援的輸出大小數量而異。(I454f2)。
以下是各種情境的參考結果:
四個
UseCases
:Preview
+ImageCapture
+ImageAnalysis
+VideoCapture
- Google Pixel 7:約 430 毫秒至 60 毫秒
- Samsung Galaxy S23 Ultra:約 540 毫秒至 45 毫秒
- Samsung A53 5G:約 115 毫秒至 70 毫秒
三個
UseCases
:Preview
+ImageCapture
+ImageAnalysis
- Google Pixel 7:約 9 毫秒至 7 毫秒
- Samsung Galaxy S23 Ultra:約 6 毫秒至 5 毫秒
- Samsung A53 5G:約 32 毫秒至 12 毫秒
已將 Snapdragon 480 新增至
CameraUseInconsistentTimebaseQuirk
。這項修正可解決使用此晶片組的裝置在 Android 12 上發生的問題,在該問題中,錄音中的音訊會因裝置處於暫停狀態的時間長度而偏移。(I58010)
1.3.0 版本
2023 年 10 月 18 日
發布 androidx.camera:camera-*:1.3.0
。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要異動
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)- 將
isImageAnalysisSupported
API 新增至ExtensionsManager
,讓應用程式可在啟用擴充功能時,判斷是否可將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)
修正錯誤
- 修正
NullPointerException
,當StreamConfigurationMapCompat
中的快取輸出大小為空值時,(Idf124、b/282025204)。 - 修正
Preview.setSurfaceProvider(null)
不會在擴充功能中暫停預覽畫面的問題 (Ia903e) - 修正了在
VideoCapture
繫結時,相機開啟期間會擲回ConcurrentModificationException
的問題。(Ic8ac4)。
1.3.0-alpha06 版
2023 年 4 月 19 日
發布 androidx.camera:camera-*:1.3.0-alpha06
。1.3.0-alpha06 版包含此連結所列的修訂項目。
新功能
- 並行鏡頭是 Android 11 推出的新功能,可同時串流相機裝置,例如允許裝置同時使用前置鏡頭和後置鏡頭。CameraX 目前僅支援雙向並行鏡頭,可讓兩部相機同時運作,每部相機最多繫結兩個 {@link UseCase}。最大解析度為 720p 或 1440p,詳情請參閱以下連結的 CameraManager#getConcurrentCameraIds()
- 我們推出了新的
ResolutionSelector
API,涵蓋以下功能:- 應用程式可以指定顯示比例和解析度策略,以便根據需求選取最佳解析度。
- 所有大小和顯示比例參數皆以相機裝置感應器的座標表示。
- 應用程式可以實作自訂解析度篩選器,以所需順序排列支援的大小。
- 應用程式也可以啟用高解析度擷取功能,以便取得解析度更高的圖片。不過請注意,使用高解析度可能會導致拍攝時間變慢。
- 新增
VideoCapture
鏡像 API。根據預設,VideoCapture
錄製的影片不會鏡像。不過,根據預設,相機預覽畫面會在前置鏡頭上顯示鏡像畫面。VideoCapture
鏡像 API 可讓您在使用前置鏡頭時,將相機預覽畫面對齊。共有三個MirrorMode
、OFF
、ON
和ON_FRONT_ONLY
。為了與相機預覽畫面保持一致,建議使用ON_FRONT_ONLY
,也就是說,系統不會為後置鏡頭啟用鏡像功能,但會為前置鏡頭啟用鏡像功能。
API 變更
- 公開新的
ResolutionSelector
API。應用程式可以使用備用規則或自訂解析度篩選器,指定顯示比例和解析度策略,以便取得所需結果。應用程式可指定標記,啟用高解析度擷取功能。這樣一來,CameraX 就能在拍照或錄影時選擇較高的解析度。不過請注意,使用高解析度可能會導致拍攝時間變慢。(Ibed95)。 - 您現在可以透過
CameraInfo#getSupportedFrameRateRanges()
查詢 AE 演算法支援的 FPS 範圍。(Iaa67f) - 將所有影格速率方法的名稱合併為「FrameRate」。修正
VideoCapture#getTargetFrameRate()
中的 Javadoc 錯誤 (I83304) - 淘汰舊版
setTargetAspectRatio
和setTargetResolution
API。請改用新的ResolutionSelector
API。(I542c3) - 新增了用於雙鏡頭並行功能的公開 API,包括
List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
boolean isConcurrentCameraModeOn()
和ConcurrentCameraConfig
、SingleCameraConfig
和ConcurrentCamera
(Iab1c1)
- 將
ImageProcessor.Response#getOutputImage
設為 NonNull (Ib9c60) - 新增
VideoCapture
鏡像 API,包括VideoCapture.Builder.setMirrorMode(int)
和VideoCapture.getMirrorMode()
。這些 API 適用於需要讓錄影功能與一般相機預覽畫面行為一致的應用程式,也就是說,後置鏡頭預覽畫面不會鏡像,但前置鏡頭預覽畫面會鏡像。(I713b6、b/194634656) - 在
VideoCapture.Builder
中新增setTargetFrameRate()
API,並在VideoCapture
中新增getTargetFramerate()
API (I109d4) - 讓
SurfaceOutput
擴充 Closable,並隱藏 SurfaceOutput.Event
的公開建構函式。(I60ea8)。 - 新增
Recording.mute
,可動態將處理中的錄音設為靜音或取消靜音。如果正在處理的錄影內容已明確靜音,RecordingStats
就會包含AudioStats.AUDIO_STATE_MUTED
。(Ie17fc) - 將
#setEffects()
參數設為非空值。新增#clearEffects()
API 以清除效果。應用程式應呼叫#clearEffects()
來移除效果。(I4b4d9) - 為
ViewfinderSurfaceRequest.Builder
新增第二個建構函式,以便為複製建構函式採用建構函式 (I621a7)
修正錯誤
- 修正應用程式在關閉相機時叫用 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
的效果會套用至VideoCapture
UseCase;指定PREVIEW|VIDEO_CAPTURE
的效果會套用至共用串流,然後再複製至預覽和VideoCapture
串流。(Iee6f3)
修正錯誤
- 相機
1.2.2
:修正在部分裝置 (例如 Pixel) 上啟用 ProGuard 時,CameraX 擴充功能無法正常運作的問題 (I90aa2) - 修正
PreviewView
錯誤:如果應用程式自行處理螢幕方向,預覽畫面在旋轉時可能會扭曲。這項功能僅適用於特定裝置。這項問題可在 Pixel 4、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,支援先前不支援的表面組合。
- 先前,如果在相機硬體層級 FULL 以下繫結「Preview、VideoCapture、ImageAnalysis」,或是在硬體層級 LEGACY 繫結「Preview、VideoCapture、ImageCapture」,CameraX 就會擲回
IllegalArgumentException
。 - 新的行為是繫結會在沒有擲回例外狀況的情況下運作。相反地,CameraX 會使用 OpenGL 將共用串流複製到預覽和 VideoCapture。
- 由於緩衝區複製作業的成本,應用程式可能會出現延遲和耗電量增加的情形。
API 變更
- 新增 API 將
ImageProxy
轉換為Bitmap
。支援的ImageProxy
格式為ImageFormat.YUV_420_888
和PixelFormat.RGBA_8888
。如果格式無效,系統會擲回IllegalArgumentException
。(Ic7110)。 - 新增
CoroutineCameraViewfinder
,以便使用 Kotlin 中的暫停函式設定觀景窗。(I657bc) - 為
ViewfinderSurfaceRequest
新增新的公開建構函式。在使用者無法提供CameraCharacteristics
時,這項功能可提供彈性。(Ie6549)。
修正錯誤
- 修正了在部分 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) - 新增
ImageProcessor
API。這個介面用於將後續處理效果插入ImageCapture
管道。(I575c6) - 新增了 API
Recorder.Builder.setAspectRatio()
,可與QualitySelector
合併使用,以支援更高的影片解析度。(I8a082) - 新增了
Recorder.Builder#setTargetVideoEncodingBitRate
來設定目標影片編碼BitRate
和Recorder#getTargetVideoEncodingBitRate
,進而取得目標影片編碼 BitRate。(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.VideoCapture
API。(I531e0) - 修正了在沒有儲存空間權限的情況下拍照時,系統不會呼叫
onError
回呼的問題。(I936db、b/244807669) - 提升相機擴充功能品質和可靠性。由於 Bokeh 支援、拍照和預覽未繼續等問題,使用 Camera Extensions v1.1.0 及更早版本的 Motorola 裝置時,已停用相機擴充功能。(Id3ce3)
- 修正在舊版裝置上啟用透過
ViewPort
裁剪影片時發生的原生程式碼發生錯誤。(I16b8a、b/251357665)
1.3.0-alpha01 版
2022 年 11 月 9 日
發布了 androidx.camera:camera-*:1.3.0-alpha01
。1.3.0-alpha01 版包含此連結所列的修訂項目。
新功能
Camera-viewfinder
已正式發布。Camera-viewfinder
提供基本觀景窗小工具,可顯示 Camera2 的相機畫面。請查看程式碼範例。
API 變更
- 新增了
OutputOptions.setDurationLimit
,用來設定影片時間長度限制。一旦超過指定的時間長度上限,系統就會自動終止錄影。(I902a0) - 新增錄影音訊錯誤狀態
AudioStats.AUDIO_STATE_SOURCE_ERROR
,如果音訊來源設定失敗或發生錯誤,就會傳送這個狀態碼。(I37410)
修正錯誤
- 加入特殊處理方式,允許部分有問題的裝置在拍攝失敗時重試一次。(Id4795)
- 修正
ViewPager2
的PreviewView
SurfaceView
導入黑色畫面問題。經過修正後,如果要求的解析度未變更,PreviewView
會重複使用SurfaceView
。(Ib3f27) - 在使用
ViewPort
或CameraController
API 時,支援裁剪影片 (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 (I90aa2) 等裝置上啟用 ProGuard 時,CameraX 擴充功能無法正常運作的問題
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()
新增為公開Camera2Interop
API。 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
新增setStreamUseCase
API。使用者可以為串流工作階段指定串流用途,覆寫 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)
修正錯誤
- 修正了
ImageCapture
takePicture 方法將被舉報裝置上的手電筒關閉。(Ib5eb5、b/228272227) - 修正了取得
CONTROL_ZOOM_RATIO_RANGE
特性時無法處理AssertionError
的錯誤。(/Ia248a, b/231701345)
1.2.0-alpha01 版
2022 年 5 月 18 日
發布了 androidx.camera:camera-*:1.2.0-alpha01
。1.2.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 全新 camera-mlkit-vision 程式庫正式推出
修正錯誤
- 修正啟用備用策略時,
QualitySelector
無法錄製 UHD 超高畫質影片的問題。當VideoCapture
與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 能在折疊式裝置上正常運作。
- 新增了
CameraState
API,並透過 CameraInfo 公開。 - 新增了 API
ProcessCameraProvider.getAvailableCameraInfos()
,以便直接擷取可用相機的相關資訊。 - 啟用擴充功能時,為
ImageCapture#OnImageCapturedCallback
輸出 JPEG 格式。 - 已在
CameraInfo
中新增 APIisFocusMeteringSupported
,可讓應用程式檢查目前相機是否支援指定的FocusMeteringAction
。 - 公開了
getResolutionInfo
API,以提供 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()
、 @ExperimentalCameraFilter
API- 實驗性的曝光補償 API。
- 升級了 camera-core、camera-lifecycle 和 camera-video 適用的實驗性
UseCaseGroup
API。新增用於自訂可視區域的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
模式時發生的YuvToJpegProcessor
EOFException
問題。 - 修正了因關閉影片錄製功能而導致轉碼器設定失敗的錯誤。
- 修正了以 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 中新增
getSensorToBufferTransformMatrix
API。傳回的矩陣是從感應器座標對應到緩衝區座標,也就是從CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE
值到(0, 0, image.getWidth, image.getHeight)
。此矩陣可用於將某個 {UseCase} 的座標對應到另一個的座標。例如,使用 ImageAnalysis 對應臉部偵測座標以便預覽。(I9ff1e)新增了 API ImageCapture.Builder#setJpegQuality,以在拍照時變更輸出 JPEG 圖片壓縮品質。(I8dcf4)
已將 MediaStoreOutputOptions.getCollection 重新命名為 MediaStoreOutputOptions.getCollectionUri。(I16639)
修正錯誤
- 修正了在輕觸即可對焦 (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
模式時發生的YuvToJpegProcessor
EOFException 問題。(I538bd、b/192017012)
1.1.0-alpha06 版
2021 年 6 月 30 日
發布了 androidx.camera:camera-camera2:1.1.0-alpha06
、androidx.camera:camera-core:1.1.0-alpha06
和 androidx.camera:camera-lifecycle:1.1.0-alpha06
。1.1.0-alpha06 版包含此連結所列的修訂項目。
API 變更
- 升級 camera-core 的實驗功能曝光補償 API。(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) ExperimentalCameraFilter
API 目前已脫離實驗功能階段,成為正式 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
類別需要ExperimentalCamera2Interop
markerClass。
Camera-Core 1.0.0-alpha09 版
2020 年 1 月 22 日
發布了 androidx.camera:camera-core:1.0.0-alpha09
。1.0.0-alpha09 版包含此連結所列的修訂項目。
API 變更
SurfaceOrientedMeteringPointFactory
參數useCaseForSurface
已重新命名為useCaseForAspectRatio
,並擴充參考說明文件。FocusMeteringAction.Builder.from()
方法會由建構函式FocusMeteringAction.Builder()
取代。- 移除了
DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float)
。應用程式應採用擷取Display
參數並傳遞至目前顯示中的建構函式。 - 針對
MeteringMode
和 3A 旗標以及Display
參數的使用情況,改善 Javadoc 的對焦和計量 API。 - 擴充了
setZoomRatio
和setLinearZoom
的參考說明文件。
修正錯誤
- 修正了關閉再開啟相機導致「先決條件」檢查失敗的問題。
- 修正了使用手電筒及縮放 API 可能發生的
ConcurrentModificationException
問題。 - 修正了問題:mod16 尺寸大小可用時,現在可以選取更接近要求解析度的解析度。
startFocusMetering
和cancelFocusMetering
API 現已按照文件所述方式運作、時間碼正確,且可能在發生錯誤時傳回相關資訊。- 在不支援此大小的裝置上,修正了以裁剪顯示比例要求特定目標解析度的問題。現在,系統會選取沒有裁剪範圍的足夠解析度,以繫結原要求 (如果有的話)。
Camera-Camera2 1.0.0-alpha08 版
2019 年 12 月 18 日
發布了 androidx.camera:camera-camera2:1.0.0-alpha08
。1.0.0-alpha08 版包含此連結所列的修訂項目。
已知問題
- 使用 Camera2 互通性功能時,部分 Camera2 擷取要求選項無法正常運作。如果無法支援要求的選項,工作階段就無法開始,且可能發生如下錯誤:
09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination
修正錯誤
- 修正了旋轉或切換 API 級別 21 和 22 的相機後,會出現黑色預覽畫面的問題。
API 變更
- 實驗功能:新增了 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.OnImageCapturedCallback
ImageCapture.OnImageSavedListener
現在是ImageCapture.OnImageSavedCallback
VideoCapture.OnVideoSavedListener
現在是VideoCapture.OnVideoSavedCallback
列舉已變更為 IntDef
新增了縮放控制項:
CameraControl.setLinearZoom()
CameraControl.setZoomRatio()
CameraInfo.getLinearZoom()
CameraInfo.getMaxZoomRatio()
CameraInfo.getZoomRatio()
新增了
CameraInfo.hasFlashUnit()
,用於判斷閃光燈/手電筒硬體是否存在。已移除
CameraInfo.isFlashAvailable()
手電筒會覆寫閃光燈功能。詳情請參閱參考說明文件。系統會將
ImageCapture.Metadata
欄位替換為 get/set/is 存取子。startFocusMetering
和cancelFocusMetering
現在會傳回ListenableFutures
,代表呼叫的非同步作業。MeteringPoints
現在做為計量動作的控制代碼使用,由工廠製作。應用程式應採用現有的工廠,而非自訂工廠。
修正問題
- 修正了繼續拍照 (先前拍照暫停動作結束後,繼續待完成的拍攝) 的問題。
- 已知問題:
CameraControl.enableTorch()
可以正常使用,但傳回的ListenableFuture<Void>
一律是即時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.setOnPreviewOutputUpdateListener
FocusMeteringAction.Builder.setAutoFocusCallback
ImageAnalysis.setAnalyzer
ImageCapture.takePicture
CameraView.takePicture
CameraView.startRecording
VideoCapture.startRecording
CameraInfo 新增了檢查閃光燈可用性及感應器旋轉 API
新增了
CameraInfo
和getCameraInfo
方法,可讓應用程式檢查鏡頭面向 CameraInfo 是否可用,以及該相機有沒有可用的閃光燈。例如:try { CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing); LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable(); flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE); } catch (CameraInfoUnavailableException e) { Log.w(TAG, "Cannot get flash available information", e); flashToggle.setVisibility(View.VISIBLE); }
新增了
CameraInfo.getSensorRotationDegrees()
。用於提供相對於裝置自然方向的相機感應器方向,或基於便利性,提供相對於途徑旋轉所述方向 (描述相對於自然方向的方向) 的相機感應器方向。
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.ImageCaptureError
VideoCapture.UseCaseError
已重新命名為VideoCapture.VideoCaptureError
已利用「輕觸即可對焦」API 新增
CameraControl
API新增了 API,以便透過 CameraX 取得相機的
CameraControl
;依鏡頭朝向選取:CameraX.getCameraControl(LensFacing lensFacing)
新增了
MeteringPointFactory
、MeteringPoint
、MeteringMode
和FocusMeteringAction
,以便執行「輕觸即可對焦」功能:MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height); MeteringPoint point = factory.createPoint(x, y); FocusMeteringAction action = FocusMeteringAction.Builder.from(point, MeteringMode.AF_ONLY) .addPoint(point2, MeteringMode.AE_ONLY) // could have many .setAutoFocusCallback(new OnAutoFocusListener(){ public void onFocusCompleted(boolean isSuccess) { } }) // auto calling cancelFocusAndMetering in 5 sec. .setAutoCancelDuration(5, TimeUnit.Second) .build();
新增了
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#getInstance
API 重新命名為getInstanceAsync
,因為其會傳回ListenableFuture
。函式名稱的非同步尾碼可以清楚顯示這是非同步函式。(I279d2) - 從
ExtensionsManager#getEstimatedCaptureLatencyRange
API 中移除解析度參數,因為使用者不知道ImageCapture
用途支援哪些大小,也無法分辨傳回的延遲資訊適用於最大擷取輸出大小還是輸入解析度參數。(I74bb2) - 將
ExtensionsManager
函式的CameraProvider
參數移至getInstance()
API。如此一來,使用者就不必在每次呼叫ExtensionsManager
函式時輸入CameraProvider
參數。(Ic7e48)
1.0.0-alpha31 版
2021 年 11 月 17 日
發布了 androidx.camera:camera-extensions:1.0.0-alpha31
和 androidx.camera:camera-view:1.0.0-alpha31
。1.0.0-alpha31 版包含此連結所列的修訂項目。
API 變更
- 已在公用 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 中新增更多 camera-core 功能:適用於目標長寬比、目標解析度、拍攝模式、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#getPreviewStreamState
API,可讓應用程式觀察影片是否正在串流播放。如果 PreviewView 處於 TEXTURE_VIEW 模式,「STREAMING」狀態也可保證預覽圖片的可見度。(Ic0906、b/154652477) - 新增了
PreviewView#setDeviceRotationForRemoteDisplayMode()
API,若應用程式以遠端顯示模式執行,可提供裝置旋轉以便進行轉換計算。(I59b95、b/153514525)
修正錯誤
- 修正了在搭載 Android 7.0 以下版本的
FULL/LIMITED/LEVEL_3
相機上預覽變形問題。Android 為 7.0 以下版本時,強制使用ImplementationMode#TEXTURE_VIEW
模式。(I83e30、b/155085307) - 已從
PreviewView#createSurfaceProvider()
移除CameraInfo
參數,PreviewView
現在會從SurfaceRequest
內部擷取。(If18f0、b/154652477) - 將 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 類別。這個程式庫正在運作。