CameraX

CameraX 是 Jetpack 新增的程式庫,方便您在應用程式中加入相機功能。這個程式庫修正了一些相容性問題並提供變通機制,有助於確保開發人員在不同裝置上享有一致的體驗。

這個表格列出 androidx.camera 群組中的所有構件。

構件 穩定版 候選版 Beta 版 Alpha 版
camera-camera2 1.3.1 - - 1.4.0-alpha04
camera-core 1.3.1 - - 1.4.0-alpha04
相機效果 - - - 1.4.0-alpha04
camera-extensions 1.3.1 - - 1.4.0-alpha04
camera-lifecycle 1.3.1 - - 1.4.0-alpha04
camera-mlkit-vision - - 1.3.0-beta02 1.4.0-alpha04
camera-view 1.3.1 - - 1.4.0-alpha04
相機觀景窗 - - 1.3.0-beta02 1.4.0-alpha04
camera-video 1.3.1 - - 1.4.0-alpha04
本程式庫上次更新日期:2024 年 1 月 24 日

裝置測試

我們在研究室中為許多裝置完成 CameraX 測試。如要查看目前研究室中已完成測試的裝置清單,請參閱已完成研究室測試的 CameraX 裝置

宣告依附元件

如果要為 CameraX 新增依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一節。

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.4.0-alpha04"
  // 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.4.0-alpha04"
    // 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 文件

1.4 版本

1.4.0-alpha04 版本

2024 年 1 月 24 日

發布 androidx.camera:camera-*:1.4.0-alpha04查看 1.4.0-alpha04 版的修訂項目

新功能

  • 新構件:camera-Effect:這個程式庫可將即時效果套用至 CameraX 輸出內容,包括 PreviewVideoCapture 和/或 ImageCapture。這個構件包含 CameraEffect API 的 OpenGL 實作項目,可有效操控相機輸出內容。
  • OverlayEffect:使用 Android 的 Canvas API 繪製重疊元素。這項設定可讓應用程式在相機輸出內容上套用浮水印或醒目顯示偵測到的物件。
  • 適用於預覽用途的 DynamicRange API:現在可在預覽用途上設定動態範圍,不受影片用途的影響。因此可以單獨使用 HLG10 等 HDR 動態範圍。CameraInfo 中也提供新的 API,可用來查詢每款相機支援的動態範圍。

API 變更

  • 已將 ScreenFlashUiCompleter 重新命名為 ScreenFlashListener,並將 ScreenFlashUiCompleter#getExpirationTimeMillis 移至 ScreenFlash#applyexpirationTimeMillis 參數(I13944)。
  • 新增 API,允許在預覽用途上設定動態範圍,並查詢每個相機支援的動態範圍。這樣一來,即可單獨將 HDR 動態範圍 (例如 HLG10) 與預覽用途搭配使用,不再需要同時繫結 VideoCapture。(If25e3)。
  • getMirroring() 重新命名為 isMirroring() (I47063)
  • 已在 CameraX 中新增即時擷取延遲時間預估支援。相機擴充功能可讓應用程式使用 API,預估擷取所需時間。這項預估值會將目前的環境條件、相機狀態納入考量,包括處理多影格擷取要求所花費的時間,以及必要時為已處理的緩衝區進行編碼的額外時間。(I05c3a)。
  • 已將 ScreenFlashUiControl 重新命名為 ScreenFlashScreenFlashUiControl#applyScreenFlashUi 重新命名為 ScreenFlash#applyScreenFlashUiControl#clearScreenFlashUi 重新命名為 ScreenFlash#clear,並新增了 getScreenFlashUiApplyTimeoutSeconds 方法,而不是直接公開 SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS。(Iccdd0)。

修正錯誤

  • 修正了在啟用擴充功能時導致活動或片段無法釋放的記憶體流失問題 (I14215)
  • 修正了 getZoomRatio 在套用增加縮放比例時錯誤傳回降低值的問題。(I4aa0db/317543616)
  • ImageCapture 未繫結或相機關閉時,會立即叫用 ImageCapture#ScreenFlash#clear 事件,並修正因在這些情境中無法正確完成擷取而從未叫用此事件的一些錯誤。(If99f9)。
  • 修正了在完成 takePicture 要求前,生命週期停止時發生的異常終止問題 (Idf017b/306202751)
  • 修正了在部分裝置上啟用擴充功能時,相機預覽畫面變為黑色的問題。(I1ffd0)
  • 修正在使用 Snapdragon 778G SoC 的裝置上,錄影時間錯誤的問題。(If6aa7b/316057919)

1.4.0-alpha03 版

2023 年 12 月 13 日

發布 androidx.camera:camera-*:1.4.0-alpha031.4.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • 新增 CameraInfo.mustPlayShutterSound,提供資訊,說明是否必須根據地區限製播放快門音效。(Ifda84)。
  • 新增了 OnImageCapturedCallback.onCaptureStartedOnImageSavedCallback.onCaptureStarted,用於在相機開始顯示影格時發出通知。建議在這個時間點播放快門音效或快門動畫。(Ic49b3)。
  • 新增 CameraX 的 Screen Flash 功能支援,可用來擷取前置鏡頭影像。CameraX 會處理架構端 API 處理作業,並視需要將時間與應用程式的 UI 變更同步,例如:在應用程式畫面色彩/亮度改變之後觸發 AE 預先擷取作業。應用程式只需在 CameraX 提供的 ScreenFlashUiControl 介面,新增 UI 端實作項目。(I8ae84)。
  • 在 CameraX 中新增 Screen Flash 功能 UI 端實作支援。應用程式可從 PreviewView 或新增的 ScreenFlashView 取得基本的 ImageCapture.ScreenFlashUiControl 實作,在擷取螢幕閃光燈時,可新增單色重疊檢視畫面,並將螢幕亮度最大化。(I1810e)。

API 變更

  • 支援新的 Extensions 功能(發布後和擷取程序進度):為應用程式新增 ImageCapture#getImageCaptureCapabilities() API,以便查詢後檢視畫面及擷取程序進度回呼的功能。應用程式可以使用 ImageCapture.Builder#setPostviewEnabled() 啟用貼文檢視畫面。您可以使用 ImageCapture.Builder#setPostviewResolutionSelector() 選取後瀏覽大小。叫用 takePicture() 時,onPostviewBitmapAvailableonCaptureProcessProgressed 可在 OnImageSavedCallbackOnImageCapturedCallback 中實作,取得後置檢視畫面和程序進度通知 (如果支援的話)。(I5cd88)。
  • 用於計算從感應器轉換為目前緩衝區的座標 API,並有一個標記指出 Surface 是否包含相機方向資訊 (I59096)。
  • 公開 API 以在預先發布版 UseCase 中查詢 PreviewCapabitlity。(Ie5b6c)。
  • 新增了 API,以支援 VideoCapture 的更多特質。Recorder.Builder#setVideoCapabilitiesSource(int) 可與 VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES 搭配使用,建立 Recorder 例項,該例項支援比 VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE 更多的品質。常見的情況是,當應用程式盡可能在可行的情況下錄製 UHD 超高畫質影片,但裝置的 CamcorderProfile 不包含 UHD 超高畫質設定 (即使轉碼器可錄製 UHD 超高畫質影片)。(Iedbe2b/263961771)
  • ImageAnalysis 輸出格式 getter/setter 新增至 CameraController。(I9a96cb/308240643)

修正錯誤

  • 來自 相機 1.3.1:改善 ProcessCameraProvider#bindToLifecycle() 效能。主要變更是最佳化程序,找出最適合 UseCases 的大小組合。最佳結果會因特定的 UseCase 組合及目標裝置支援的輸出大小數量而異。(I454f2)。
  • 允許在啟用擴充功能時使用 VideoCapture。(I91f32)。
  • 修正了 Samsung A71 和 M51 系列裝置上的大型擷取 JPEG 圖片問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。這會使拍攝的圖片檔案較大。系統將移除多餘的 0 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I01afcb/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,並替換為 ResolutionSelectorResolutionSelector 以更全面的方式選取解析度,且與 camera-core API 一致。(I93abdb/286801438)

修正錯誤

  • 修正了在 Samsung Galaxy S23 Ultra 5G 上,透過 ImageAnalysis 在後置鏡頭上啟用擴充功能散景或修容功能時發生的黑色預覽問題。(I2e8b1)。
  • 修正 Moto E5 Play 上的預覽和 VideoCapture 延伸問題。(73dce2)。

1.4.0-alpha01 版

2023 年 9 月 20 日

發布 androidx.camera:camera-*:1.4.0-alpha01查看 1.4.0-alpha01 版的修訂項目

API 變更

  • 新增 API,以便在錄製時存取音訊振幅資訊。(Id4925)。

修正錯誤

  • 確保初始化和去初始化事件能以正確順序觸發,藉此提升擴充功能穩定性。(Ib3b8e)。
  • 修正了在內部新增額外的重複途徑,以超過支援的介面組合的擷取工作階段設定失敗。(Id718c)。
  • 修正 Vivo S16 裝置上的大型擷取 JPEG 圖片問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。這會使擷取的圖片檔案較大。系統將移除多餘的 0 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I79505b/299069235)
  • 修正了以下問題:在某些裝置上啟用部分擴充功能模式時,ImageAnalysis 無法與 ImageCapture 和預覽繫結。當應用程式透過 ExtensionsManager#isImageAnalysisSupported() 查詢 ImageAnalysis 可用性時,這項修正作業會傳回正確的值。(I7d538)。
  • 更新 JavaDoc 以比對行為。#setZoomRatio#setLinearZoom#enableTorch 會等到相機準備就緒後,才會立即完成。另外也新增了一些資訊,說明如何透過 #takePicture API 取得最大 FOV。(I23588)。

1.3 版

1.3.1 版

2023 年 12 月 13 日

發布 androidx.camera:camera-*:1.3.1查看 1.3.1 版的修訂項

修正錯誤

已提升 ProcessCameraProvider#bindToLifecycle() 效能。主要變更是最佳化程序,找出最適合 UseCases 的大小組合。最佳結果會因特定的 UseCase 組合及目標裝置支援的輸出大小數量而異。(I454f2)。

以下是各種情況的參考結果:

  • 四個 UseCasesPreview + ImageCapture + ImageAnalysis + VideoCapture

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

    • Google Pixel 7:約 9 毫秒至 7 毫秒
    • Samsung Galaxy S23 Ultra:約 6 毫秒至 5 毫秒
    • Samsung A53 5G:約 32 毫秒至 12 毫秒
  • 已將 Snapdragon 480 新增至 CameraUseInconsistentTimebaseQuirk。這修正了 Android 12 使用這個晶片組時會發生的問題,因為此晶片組中的音訊錄音時,會隨裝置處於停權狀態的時間長度偏移。(I58010)。

1.3.0 版

2023 年 10 月 18 日

發布 androidx.camera:camera-*:1.3.01.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 Po3 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 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I407b0b/288828159)
  • 修正了 Samsung S22 (SM-S901B、SM-S901B/DS) 和 S22+ (SM-S906B) 系列裝置上的大型 JPEG 圖像拍攝問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。它會造成在 S22 SM-S901B/DS 裝置上拍攝的圖片檔案較大約 13 MB。系統將移除多餘的 0 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I73be9b/288828159)
  • 修正了 Samsung A5、A52、A70 和 A72 系列裝置上的大型擷取 JPEG 圖片問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。會導致拍攝的圖片檔案較大 (例如約 32 MB,甚至 96 MB)。系統將移除多餘的 0 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I97c4db/288828159)
  • 修正了在啟用擴充功能的情況下拍照時發生的原生當機問題 (I698f5)

1.3.0-beta02 版

2023 年 7 月 26 日

發布 androidx.camera:camera-*:1.3.0-beta021.3.0-beta02 版包含此連結所列的修訂項目。

修正錯誤

  • 為 Pixel 4 和 Pixel 5 變化版本使用手電筒做為閃光燈,在低光源環境下也能拍出畫質 (I56ff5b/280221967)
  • 修正了 Samsung A5 (2017) 系列裝置上的大型擷取 JPEG 圖片問題。擷取的 JPEG 圖片在 JFIF 壓縮資料區段中包含多餘的 0 填充資料。這會使擷取的圖片檔案大小約為 32 MB。系統將移除多餘的 0 邊框間距資料,讓拍攝的圖片成為一般的圖片檔。(I29837b/288828159)
  • 修正了 CaptureFailedRetryQuirk 中所述的問題裝置發生擷取失敗時,無法正確觸發重試的問題。(I7b589)。

1.3.0-beta01 版

2023 年 6 月 21 日

發布 androidx.camera:camera-*:1.3.0-beta011.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 類別代表圖片的動態範圍。這可用來選取高動態範圍格式,做為 VideoCaptureVideoCapture.Builder#setDynamicRange() 的輸出內容。(Ib0377)。
  • ExtensionsManager 中新增 isImageAnalysisSupported API,讓應用程式可在啟用擴充功能時,判斷 ImageAnalysis 用途是否能與預覽功能以及 ImageCapture 繫結。(I1bc63)。
  • Recorder 取得的新 VideoCapabilities 類別可用於查詢裝置上錄影支援的動態範圍和畫質。QualitySelectorgetSupportedQualities()isQualitySupported() 方法即將淘汰。請改用 VideoCapabilitiesgetSupportedQualities()isQualitySupported() 方法。(I04014)。
  • CameraController#setVideoCaptureTargetQuality() 已重新命名為 setVideoCaptureQualitySelector,並使用引數 QualitySelector,以便提供更靈活的影片畫質設定。CameraController#getVideoCaptureTargetQuality() 會據此變更為 getVideoCaptureQualitySelector。(I520ed)。
  • 移除了影片功能的實驗性註解。影片功能現已穩定運作。(I1a113)。

修正錯誤

  • 在 Samsung SM-A320 型號上使用手電筒做為閃光燈,以在低光源環境下提升速度和擷取的影像品質。(I6a022b/286190938)
  • ImageProxy.toBitmap() 新增 ImageFormat.JPEG 格式支援。如果 JPEG 位元組陣列無法解碼,系統會擲回 UnsupportedOperationException。(I81958b/282057603)

1.3.0-alpha07 版

2023 年 5 月 24 日

發布 androidx.camera:camera-*:1.3.0-alpha071.3.0-alpha07 版包含此連結所列的修訂項目。

新功能

  • 新的 VideoCapture.Builder# setTargetFrameRate(Range) API 可讓你除了裝置預設設定之外,也能以其他畫面更新率擷取錄影內容。你可以透過新的 CameraInfo#getSupportedFrameRates() API 查詢可用的錄影畫面更新率。

API 變更

  • 已將 ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 常數重新命名為 ALLOWED_RESOLUTIONS_NORMAL/SLOW,並將建構工具 setHighResolutionEnabledFlag 函式名稱重新命名為 setAllowedResolutionMode。(Iae817)。
  • CameraInfo#getSupportedFrameRateRanges() 現在會傳回 Set (而不是 List),以更好地表示範圍未排序。(I02f43)。
  • 將錯誤事件監聽器新增至 CameraEffect,以處理無法復原的錯誤 (Ice471)
  • ResolutionInfo 中新增公開建構函式,可改善可測試性 (If6d1c)
  • 提供 API UseCase.snapToSurfaceRotation(int) 以取代 setTargetRotationDegrees 的用法,並淘汰 API ImageAnalysis.setTargetRotationDegrees(int)ImageCapture.setTargetRotationDegrees(int)VideoCapture.setTargetRotationDegrees(int)(Ia9010)。
  • 新增了 API Preview#getTargetFrameRatePreview.Builder#setTargetFrameRate,以便設定及擷取預覽用途的目標影格速率 (If4f22)
  • Recording 物件因垃圾收集而停止時,VideoRecordEvent.Finalize 現在會顯示錯誤代碼 ERROR_RECORDING_GARBAGE_COLLECTED,(Iba974)。

修正錯誤

  • 已修正 StreamConfigurationMapCompat 中的快取輸出大小為空值時 NullPointerException 的問題。(Idf124b/282025204)
  • 修正 Preview.setSurfaceProvider(null) 不會暫停擴充功能中的預覽畫面 (Ia903e)
  • 修正了當 VideoCapture 設有繫結時,相機開啟期間擲回 ConcurrentModificationException 的問題。(Ic8ac4)。

1.3.0-alpha06 版

2023 年 4 月 19 日

發布 androidx.camera:camera-*:1.3.0-alpha061.3.0-alpha06 版包含此連結所列的修訂項目

新功能

  • 並行鏡頭是 Android 11 推出的新功能,可支援同步相機裝置,例如可讓裝置的前置和後置鏡頭同時運作。CameraX 目前僅支援雙鏡頭並行,可同時運作兩部相機,且每個鏡頭最多只能繫結 2 個 {@link UseCase}。最大解析度為 720p 或 1440p,詳情請參閱以下連結。詳情請參閱 CameraManager#getConcurrentCameraIds()
  • 隆重推出全新的 ResolutionSelector API,提供下列功能:
    • 應用程式可以指定顯示比例和解析度策略,根據自身需求選取最佳解析度。
    • 所有大小和長寬比參數都會以相機裝置感應器的座標表示。
    • 應用程式可以實作自訂解析度篩選器,依照所需順序排列支援的尺寸。
    • 應用程式也可以啟用高解析度擷取功能,以取得解析度較高的圖片。不過請注意,使用高解析度可能會導致擷取速度變慢。
    • 新增了 VideoCapture 鏡像 API。根據預設,系統不會鏡像顯示VideoCapture錄製的影片。不過,相機預覽畫面預設會完整顯示在前置鏡頭上。VideoCapture 鏡像 API 可以在使用前置鏡頭時對齊相機預覽畫面。有三個 MirrorModeOFFONON_FRONT_ONLY。如要與相機預覽畫面對齊,建議使用 ON_FRONT_ONLY。這表示未啟用後置鏡頭的鏡像功能,但已啟用前置鏡頭的鏡像功能。

API 變更

  • 公開新的 ResolutionSelector API。應用程式可以利用備用規則或自訂解析度篩選器指定長寬比和解析度策略,取得預期的結果。應用程式可以指定標記來啟用高解析度擷取功能。這樣就能讓 CameraX 在拍照或影片時選取較高解析度。不過請注意,使用高解析度可能會導致擷取速度變慢。(Ibed95)。
  • 現在起,可透過 CameraInfo#getSupportedFrameRateRanges() 查詢 AE 演算法支援的 FPS 範圍。(Iaa67f)。
  • 將所有影格速率方法的名稱合併為「FrameRate」。修正 VideoCapture#getTargetFrameRate() 中的 javadoc 錯誤 (I83304)
  • 淘汰了舊版 setTargetAspectRatiosetTargetResolution API。請改用新的 ResolutionSelector API。(I542c3)。
  • 新增了並行雙鏡頭專用的公用 API,包括:
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() 以及 ConcurrentCameraConfigSingleCameraConfigConcurrentCamera (Iab1c1)
  • ImageProcessor.Response#getOutputImage 設為 NonNull (Ib9c60)
  • 新增了 VideoCapture 鏡像 API,包括 VideoCapture.Builder.setMirrorMode(int)VideoCapture.getMirrorMode()。根據常見的相機預覽行為 (也就是不會鏡像顯示後置鏡頭預覽畫面,但系統會雙向同步前置鏡頭預覽畫面) 的情況,這個 API 非常實用。(I713b6b/194634656)
  • VideoCaptureVideoCapture.BuildergetTargetFramerate() API 中新增 setTargetFrameRate() 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。(Ibec7eb/270656244)
  • 修正了在 Android 10 以上版本中使用檔案拍照會失敗。請注意,在 Android 10 中,使用外部儲存空間公用資料夾中的檔案拍照時,也必須在應用程式標記中將 requestLegacyExternalStorage 設為 true。(I11b2c)。
  • 修正了 DefaultSurfaceProcessor 中的 RejectedExecutionException 當機問題。當 VideoCapture 繫結並暫停活動時,就可能出現當機情形。(Idb46ab/273713906)

1.3.0-alpha05 版

2023 年 3 月 22 日

發布 androidx.camera:camera-*:1.3.0-alpha051.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)。(Id3ffeb/205242781)。
  • 允許以 VIDEO_CAPTUREPREVIEW|VIDEO_CAPTURE 做為特效目標。指定 VIDEO_CAPTURE 的特效將套用至 VideoCapture 用途;指定 PREVIEW|VIDEO_CAPTURE 的效果會先套用到共用串流,再複製到預覽和 VideoCapture 串流。(Iee6f3)。

修正錯誤

  • 相機 1.2.2 起:修正了在部分裝置 (例如 Pixel) 上啟用 Proguard 時,CameraX 擴充功能無法正常運作的問題 (I90aa2)
  • 修正 PreviewView 錯誤:如果應用程式自行處理螢幕方向,預覽畫面可能會在旋轉時變形。這只會在特定裝置上進行。且可在 Pixel a4、Pixel 5 和 Pixel 6a 上重現。(I14340b/223488673)

1.3.0-alpha04 版

2023 年 2 月 22 日

發布 androidx.camera:camera-*:1.3.0-alpha041.3.0-alpha04 版包含此連結所列的修訂項目

新功能

新功能:將一個串流分享給多個 UseCase,以支援先前不支援的 Surface 組合。

  • 先前在相機硬體層級 FULL 及以下繫結時,將「Preview、VideoCapture、ImageAnalysis」繫結,或是在硬體層級 LEGACY 以下建立「Preview、VideoCapture、ImageCapture」繫結時,CameraX 會擲回 IllegalArgumentException
  • 新的行為是繫結能夠正常運作,而不會擲回例外狀況。而是使用 OpenGL,將共用的串流複製到「預覽」和「VideoCapture」。
  • 隨著緩衝區複製作業的成本增加,應用程式的延遲時間和耗電量可能會增加。

API 變更

  • 新增 API,以便將 ImageProxy 轉換為 Bitmap。支援的 ImageProxy 格式為 ImageFormat.YUV_420_888PixelFormat.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-alpha031.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 來設定目標影片編碼 BitRateRecorder#getTargetVideoEncodingBitRate,進而取得目標影片編碼 BitRate。(I5984d)

修正錯誤

  • 修正了無閃光燈且閃光燈模式未開啟時 ImageCapture 失敗的問題。(I9e8b4, b/263391112)
  • 修正了在部分 Samsung Android 12 裝置上寫入 Exif 位置資料時,JPEG 圖片損毀的問題。(Ib7086b/263747161b/263289024)
  • 在相機初始化完成之前 (例如呼叫 CameraController#enableTorch),設定手電筒/變焦,在初始化完成之後,待處理動作即會被快取並提交。(I11e92b/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 後不再使用的中繼資料、OnVideoSavedCallbackOutputFileOptionsOutputFileResults 類別。(I38cd8)
  • 套用新的錄影 API。由於不再支援 setTargetResolution,因此 getVideoCaptureTargetSizesetVideoCaptureTargetSize 方法已被 getVideoCaptureTargetQualitysetVideoCaptureTargetQuality 方法取代。(I2a1d5)

修正錯誤

  • 移除已淘汰的 core.VideoCapture API。(I531e0)
  • 修正了在沒有儲存空間權限的情況下拍照時,系統不會呼叫 onError 回呼的問題。(I936dbb/244807669)
  • 提升相機擴充功能品質和可靠性。由於 Bokeh 支援、拍照和預覽未繼續等問題,使用 Camera Extensions v1.1.0 及更早版本的 Motorola 裝置時,已停用相機擴充功能。(Id3ce3)
  • 修正在舊版裝置上啟用透過 ViewPort 裁剪影片時發生的原生程式碼發生錯誤。(I16b8ab/251357665)

1.3.0-alpha01 版

2022 年 11 月 9 日

發布了 androidx.camera:camera-*:1.3.0-alpha011.3.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • Camera-viewfinder 已正式發布。Camera-viewfinder 提供基本觀景窗小工具,可顯示 Camera2 的相機畫面。請查看程式碼範例

API 變更

  • 新增了 OutputOptions.setDurationLimit,用來設定影片時間長度限制。一旦超過指定的時間長度上限,系統就會自動終止錄影。(I902a0)
  • 新增錄影音訊錯誤狀態 AudioStats.AUDIO_STATE_SOURCE_ERROR,如果音訊來源設定失敗或發生錯誤,就會傳送這個狀態碼。(I37410)

修正錯誤

  • 加入特殊處理方式,允許部分有問題的裝置在拍攝失敗時重試一次。(Id4795)
  • 修正 ViewPager2PreviewView SurfaceView 導入黑色畫面問題。經過修正後,如果要求的解析度未變更,PreviewView 會重複使用 SurfaceView。(Ib3f27)
  • 在使用 ViewPortCameraController API 時,支援裁剪影片 (WYSIWYG 功能)。(Ifbba8b/201085351)
  • 修正問題:透過 Huawei P40 lite 錄影時,前置鏡頭影片無法拍攝畫面。(I87c57b/250807400)

1.2 版本

1.2.3 版

2023 年 5 月 24 日

發布 androidx.camera:camera-*:1.2.31.2.3 版本包含以下修訂項目。

修正錯誤

  • 修正了 VideoCapture 在部分裝置上無法搭配前置鏡頭使用的問題。例如 Samsung Galaxy S23 和 Xiaomi 2107113SG。(Ibec7eb/270656244)

1.2.2 版

2023 年 3 月 22 日

發布 androidx.camera:camera-*:1.2.21.2.2 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了在部分裝置 (例如 Pixel) 上啟用 ProGuard 時,CameraX 擴充功能無法正常運作的問題。(I90aa2)

1.2.1 版

2023 年 1 月 25 日

發布 androidx.camera:camera-*:1.2.1查看 1.2.1 版的修訂項目

修正錯誤

  • 修正在部分 Samsung Android 12 裝置上寫入 Exif 位置資料時,JPEG 圖片損毀的問題。(b/263289024)

1.2.0 版

2022 年 12 月 7 日

發布了 androidx.camera:camera-*:1.2.01.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-beta021.2.0-beta02 版包含此連結所列的修訂項目。

API 變更

修正錯誤

  • 停用解決方法,以便在問題修正後在 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.AnalyzerMLKitAnalyzer 設為官方 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 物件可透過新的 API androidx.camera.video.OutputOptions.Builder.setLocation(Location) 設定 (I313a0b/204197544)。

修正錯誤

  • 修正使用解除繫結的預覽拍照時會發生的問題 (Ie70b6b/235119898)
  • 修正了 Recorder 在無法使用音訊來源時嘗試錄製的異常終止。(I9f652)

1.2.0-alpha03 版

2022 年 6 月 29 日

發布 androidx.camera:camera-*:1.2.0-alpha03查看 1.2.0-alpha03 版的修訂項

API 變更

  • 移除了 ImageAnalysis.AnalyzerMLKitAnalyzer 的實驗性註解。(I0ff22)

修正錯誤

  • 新增 5000 毫秒的自動對焦預設逾時時間,如果沒有取消 FocusMeteringAction 且 AF 元件未在此期間對焦,就可透過此逾時設定將 isFocusSuccessful 設為 False,以完成 AF 元件的工作。(Ibc2e3)
  • 修正使用解除繫結的預覽拍照時會發生的問題 (I1d3a2b/235119898)
  • 啟用了進階延伸器實作,並將 CameraX 支援擴充功能介面版更新為 1.2 版 (I92256)

1.2.0-alpha02 版

2022 年 6 月 1 日

發布 androidx.camera:camera-*:1.2.0-alpha021.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 方法將被舉報裝置上的手電筒關閉。(Ib5eb5b/228272227)
  • 修正了取得 CONTROL_ZOOM_RATIO_RANGE 特性時無法處理 AssertionError 的錯誤。(/Ia248a, b/231701345)

1.2.0-alpha01 版

2022 年 5 月 18 日

發布 androidx.camera:camera-*:1.2.0-alpha011.2.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • 全新 camera-mlkit-vision 程式庫正式推出

修正錯誤

  • 修正啟用備用策略時,QualitySelector 無法錄製 UHD 超高畫質影片的問題。當 VideoCaptureImageCapture 繫結,並在完整或更高的硬體層級相機裝置上預覽時,就會發生這個問題。QualitySelector 的備用策略會導致 VideoCapture 無法正確取得 FHD 解析度。UHD 解析度實際上適用於此用途組合,建議採用。(I0e788b/230651237)
  • 修正了 ImageCapture.takePicture()NullPointerException。(I92366b/230454568b/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.setOutputImageRotationEnabledsetOutputImageFormat)
  • 支援多視窗模式,方法是在相機被其他應用程式干擾後,允許 CameraX 應用程式恢復相機功能,並將焦點切回到應用程式。
  • 修正部分預覽問題,確保 CameraX 能在折疊式裝置上正常運作。
  • 新增了 CameraState API,並透過 CameraInfo 公開。
  • 新增了 API ProcessCameraProvider.getAvailableCameraInfos(),以便直接擷取可用相機的相關資訊。
  • 啟用擴充功能時,為 ImageCapture#OnImageCapturedCallback 輸出 JPEG 格式。
  • 已在 CameraInfo 中新增 API isFocusMeteringSupported,可讓應用程式檢查目前相機是否支援指定的 FocusMeteringAction
  • 公開了 getResolutionInfo API,以提供 Preview、ImageCaptureImageAnalysis 的解析度資訊。
  • 新增了 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#getLayoutDirectionViewPort.Builder#setLayoutDirectionViewPort.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-rc021.1.0-rc02 版包含此連結所列的修訂項目。

修正錯誤

1.1.0-rc01 版

2022 年 5 月 11 日

發布 androidx.camera:camera-*:1.1.0-rc011.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-beta031.1.0-beta03 版包含此連結所列的修訂項目。

API 變更

  • 限制了 CaptureRequestOptions 建構函式。(I261b6)
  • 新增實驗性 API,可將 CameraController 與外部圖像處理程式庫搭配使用,例如 MLKit (I4ea71)

修正錯誤

  • 修正了在多視窗模式下旋轉裝置後、且活動未重新啟動時,PreviewView 出現預覽方向有誤的問題。(I1ea36b/223488673)
  • 修正多視窗模式問題:如果 (1) 其他優先順序較高的應用程式開啟另一個相機,且 (2) 該裝置是 Samsung Android 12 裝置,則焦點一旦回到應用程式,應用程式將無法使用相機。(I7e9f2)
  • 針對在檢查閃光燈可用性時裝置當機的問題提供解決辦法。這些裝置將不提供手電筒功能。(If26a3b/216667482)
  • 修正應用程式使用擴充功能並啟用 Proguard 時發生的 AbstractMethodError 問題。(I7cbafb/222726805)
  • 強制在 Motorola razr 5G 裝置上停用散景擴充功能模式,解決該模式會造成黑色預覽畫面的問題。(I35d49)
  • 修正了在部分 Samsung 裝置 (API 29 以下級別) 上暫停並繼續播放後音訊/視訊不同步的問題。(I64622b/202798609b/202798572)
  • 修正了在 Sony G3125 上暫停並繼續播放後音訊/視訊不同步的問題。(I2a1a5b/202799148)
  • 修正了錄音工具遇到 InvalidConfigException 時當機的問題。不過,這項修正只能防止應用程式當機,但無法解決導致 InvalidConfigException 的問題。如果仍無法設定 Recorder,應用程式會在開始錄製時收到錯誤回呼。(I89c29b/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)

修正錯誤

  • 修正了 Oppo Find N 上的延伸預覽問題。(I7d004)
  • 修正了 Galaxy J7 Prime 預覽扭曲失真的問題。(I4c500)
  • 使用相容的位元率尋找影片編碼器。(d969052)

1.1.0-beta01 版

2022 年 1 月 26 日

發布 androidx.camera:camera-*:1.1.0-beta011.1.0-beta01 版包含此連結所列的修訂項目。

新功能

  • 從 1.1.0-beta01 開始,所有 CameraX 程式庫都會使用相同的版本號碼。如此一來,開發人員就能更輕鬆地追蹤版本,並降低大型版相容性矩陣的複雜度。

API 變更

  • 新增了 Camera2CameraControl.clearCaptureRequestOptions 以清除現有的擷取要求選項。(Ifa07d)

修正錯誤

  • 修正了在部分 Android O (API 26) 以下版本裝置上錄影時的異常終止問題。(I88fdfb/212328261)
  • 修正了在 Samsung 裝置的前置鏡頭相機上使用 cameraControl#startFocusAndMetering() 時 AF 區域不正確的問題。(Ifbf59b/210548792)
  • 在 Pixel 3a/Pixel 3a XL 上使用手電筒做為閃光燈,以改善在昏暗環境下的速度和擷取到的影像品質。(Ib12b6b/211474332)
  • 在多視窗模式下,當相機遭到其他優先順序較高的應用程式干擾時,讓應用程式能恢復相機功能,並將焦點切回到應用程式。請注意,由於某些架構問題,焦點功能改變和相機重新開啟之間可能有些許延遲 (1 秒到 10 秒甚至更長時間)。(I4d092)

1.1.0-alpha12 版

2021 年 12 月 15 日

發布 androidx.camera:camera-*:1.1.0-alpha121.1.0-alpha12 版包含此連結所列的修訂項目。

API 變更

  • 已從內部類別/介面中移除不必要的 @RequiresApi(21) 註解。(I8e286b/204917951)
  • QualitySelector 的品質常數和備用廣告策略常數已變更,現在會依類別物件表示。舉例來說,QualitySelector.QUALITY_HD 變更為 Quality.HDQualitySelector.FALLBACK_STRATEGY_LOWER 則變更為 FallbackStrategy.lowerQualityOrHigherThan(Quality) 傳回的例項。用於建立 QualitySelector 的 API 已變更為清單式 API。新的 API QualitySelector.fromOrderedList(List<Quality>) 會參照輸入品質清單的順序,而不是 QualitySelector.Procedure 建立的順序。移除了 QualitySelector.Procedure 類別。(I43343)
  • PendingRecording.withEventListener() 已移除,事件監聽器現在必須傳遞到 PendingRecording.start()。這個事件監聽器需求的目的是要處理 VideoRecordEvent.Finalize 事件中回報的非同步錯誤。(I1e71d)
  • 已將 ActiveRecording 重新命名為 Recording 以減少詳細程度。(I77ceb)

修正錯誤

  • 修正了昏暗環境下,在 Pixel 3a 和 Pixel 3a XL 上以 FLASH_AUTO 模式拍照的曝光不足問題。(I13f19b/205373142)
  • 請一律使用最新的顯示大小來決定 Resolution 的預覽畫面。(I4a694)
  • 已篩除沒有 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相機。提供 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相機只有每部相機裝置支援的最低功能組合。沒有 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 的相機可能會支援特殊功能,且不支援標準色彩輸出。CameraX 不支援這些相機的 PreviewImageCaptureImageAnalysisVideoCapture 用途。因此請篩除這類相機,避免誤用。(Ib8cda)
  • 結果集為空白時,CameraSelector#filter 不再擲回 IllegalArgumentException。(I27804)
  • 系統現在可根據原始設備製造商 (OEM) 的指定設定檔,以更聰明的方式選擇編碼器設定。(Iaeef0)
  • 修正了在 Pixel1 上開始錄製 UHD 超高畫質影片後預覽會顯示交錯色線的問題。(I833c6b/205340278)

1.1.0-alpha11 版

2021 年 11 月 17 日

發布 androidx.camera:camera-*:1.1.0-alpha111.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+,縮短延遲時間。(Ib6270b/203505523)

外部貢獻

1.1.0-alpha10 版

2021 年 10 月 13 日

發布 androidx.camera:camera-*:1.1.0-alpha101.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 以上的應用程式,則無須採取任何行動。(Ie7f2eb/200599470)

修正錯誤

  • 擲回 InitializationException,讓應用程式可在建立 CameraCharacteristics 時,妥善處理 AssertionError。(Ibec79)

1.1.0-alpha09 版

2021 年 9 月 29 日

發布了 androidx.camera:camera-camera2:1.1.0-alpha09androidx.camera:camera-core:1.1.0-alpha09androidx.camera:camera-lifecycle:1.1.0-alpha091.1.0-alpha09 版包含此連結所列的修訂項目。

API 變更

  • API 不再為實驗性,故已移除 ExperimentalUseCaseGroup 註解。(I01ef5)

修正錯誤

  • 修正以 MAXIMIZE_QUALITY 模式拍攝相片模糊的問題。(I173a9b/193823892)
  • 修正了 Samsung Galaxy J5 相機在昏暗環境下,閃光燈開啟/自動開關拍照後相機卡住的問題。(I3aab9)
  • 當 ImageCapture 需要裁剪時,根據指定的擷取模式,以指定的 JPEG 畫質等級壓縮輸出裁剪的圖片。如果擷取模式為 CAPTURE_MODE_MINIMIZE_LATENCY,則 JPEG 壓縮畫質為 95。如果擷取模式為 CAPTURE_MODE_MAXIMIZE_QUALITY,則 JPEG 壓縮畫質為 100。(Ieb37cb/142856426)

1.1.0-alpha08 版

2021 年 8 月 18 日

發布 androidx.camera:camera-camera2:1.1.0-alpha08androidx.camera:camera-core:1.1.0-alpha08androidx.camera:camera-lifecycle:1.1.0-alpha081.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 的固定預覽畫面太亮。這個問題只會在某些特殊預覽解析度搭配較大的放大值時發生。(Idefceb/192129158)
  • 修正了在將閃光燈模式設為 FLASH_MODE_ON 後立即拍照時,閃光燈無法在某些裝置上運作的問題。(Ieb49b)
  • 修正了如果「VideoCapture」、「ImageCapture」和「預覽」設有繫結,「預覽」功能在拍照時會暫停運作一段時間的問題。(I56197b/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) 指定目標的最大輸出解析度。(I1ee97b/192911449)
  • 將 Exif 資訊加入擷取的圖片。(I01ff0b/193342619)
  • 在 ImageCapture 中,如果儲存的位置是「File」,傳回已儲存圖片的 URI。(Ib5b49b/149241379)
  • 修正了在許多裝置上,使用閃光燈拍照圖片昏暗的問題。(I4e510)

1.1.0-alpha07 版

2021 年 7 月 21 日

發布 androidx.camera:camera-camera2:1.1.0-alpha07androidx.camera:camera-core:1.1.0-alpha07androidx.camera:camera-lifecycle:1.1.0-alpha071.1.0-alpha07 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了 Samsung Galaxy Note 5 相機在昏暗環境下,閃光燈開啟/自動開關拍照後相機卡住的問題。(If6871)
  • 修正了擴充模式啟用且設定 ImageCapture#CAPTURE_MODE_MAX_QUALITY 模式時發生的 YuvToJpegProcessor EOFException 問題。(I538bdb/192017012)

1.1.0-alpha06 版

2021 年 6 月 30 日

發布了 androidx.camera:camera-camera2:1.1.0-alpha06androidx.camera:camera-core:1.1.0-alpha06androidx.camera:camera-lifecycle:1.1.0-alpha061.1.0-alpha06 版包含此連結所列的修訂項目。

API 變更

  • 升級 camera-core 的實驗功能曝光補償 API。(I08ee8)
  • 已在 CameraInfo 中新增 API isFocusMeteringSupport,可讓應用程式檢查目前相機是否支援指定的 FocusMeteringAction。(Ib45aeb/188606490)
  • 公開了 getResolutionInfo API,以提供預覽」、「ImageCapture」和「ImageAnalysis」的解析度資訊。(I2b613b/188600718)
  • 將下列實驗性 API 升級為正式 API:CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler()。(I2ade2)
  • 公開了 CameraProvider 介面,提供一組相機存取權。(I1a7b1)
  • 升級 camera-core、camera-lifecycle 及 camera-video 適用的實驗功能 UseCaseGroup API。新增了 ViewPort#getLayoutDirectionViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType 來自訂可視區域。(I7cee8)

1.1.0-alpha05 版

2021 年 6 月 2 日

發布 androidx.camera:camera-camera2:1.1.0-alpha05androidx.camera:camera-core:1.1.0-alpha05androidx.camera:camera-lifecycle:1.1.0-alpha051.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。(I3b2efb/159033688)

1.1.0-alpha04 版

2021 年 4 月 21 日

發布 androidx.camera:camera-camera2:1.1.0-alpha04androidx.camera:camera-core:1.1.0-alpha04androidx.camera:camera-lifecycle:1.1.0-alpha041.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-alpha03androidx.camera:camera-core:1.1.0-alpha03androidx.camera:camera-lifecycle:1.1.0-alpha031.1.0-alpha03 版包含此連結所列的修訂項目。

修正錯誤

  • 啟用擴充模式時,ImageCapture#OnImageCapturedCallback 輸出 JPEG 格式。(I0d7b1)
  • 修正了 UMIDIGI BISON 裝置的初始化失敗。(I57d9eb/180818665)
  • 修正了 PreviewView 中的 Samsung A3 延伸預覽畫面。(Iacb30b/180121821)

1.1.0-alpha02 版

2021 年 2 月 24 日

發布了 androidx.camera:camera-camera2:1.1.0-alpha02androidx.camera:camera-core:1.1.0-alpha02androidx.camera:camera-lifecycle:1.1.0-alpha021.1.0-alpha02 版包含此連結所列的修訂項目

API 變更

  • 新增 API ProcessCameraProvider.getAvailableCameraInfos(),以便直接擷取可用相機的相關資訊 (可以是裝置的所有相機,或由 CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector) 中提供的 CameraSelector 選取的相機)。(Ieac08)

修正錯誤

  • 目前 CameraX 會在初次嘗試時強制執行開啟相機,如果相機應用程式的優先順序較高,CameraX 可能就會從其他相機用戶端竊取相機。(Iab069b/175820568)
  • 修正了在 CameraXConfig 中使用 setAvailableCamerasLimiter 時 Robolectric 測試失敗的問題。(Ice307)
  • 如果圖片佇列在 ImageAnalysis 中達到上限,這項變更就會捕捉例外狀況。因此,您可能會發現其他用途發生凍結或遲緩的狀況,例如預覽凍結/遲緩,但應用程式並未停止運作。(Ic12dab/175851631)
  • 修正了只有「預覽」或「ImageCapture」設定繫結時 ExtensionErrorListener 的回報錯誤。(I5ae39)
  • 修正了 ImageCapture 效能迴歸問題,方法是先移除已儲存圖片儲存位置的驗證,然後再拍照。進行此變更後,如果儲存目的地無效,則會花較久的時間收到失敗回應,這是因為系統會在拍照之後嘗試儲存圖片。(I1fd4eb/177061560)
  • 修正了 ImageCapture「File」類型為 OutputFileOptions 的效能迴歸問題。(I5164ab/177061560)
  • 已更新說明文件,建議避免使用程式庫程式碼中的 ProcessCameraProvider.configureInstance(...)。(Ib8a9f)

1.1.0-alpha01 版

2021 年 1 月 27 日

發布 androidx.camera:camera-camera2:1.1.0-alpha01androidx.camera:camera-core:1.1.0-alpha01androidx.camera:camera-lifecycle:1.1.0-alpha011.1.0-alpha01 版包含此連結所列的修訂項目。

修正錯誤

  • 已納入 SM-G930T 後置相機 JPEG 格式圖片間歇性毀損問題的變通方法。(I52001b/159831206)
  • 修正了所有支援預覽大小低於 640x480 且顯示大小超過 640x480 時發生的 IllegalArgumentException 問題。(I2a63cb/150506192)
  • 根據預設,沒有明確宣告公開資源 (例如透過 public.xml) 的程式庫中的資源目前設為不公開。(Ia1dccb/170882230)

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

1.0.2 版

2021 年 9 月 29 日

發布了 androidx.camera:camera-camera2:1.0.2androidx.camera:camera-core:1.0.2androidx.camera:camera-lifecycle:1.0.21.0.2 版包含此連結所列的修訂項目。

修正錯誤

  • 修正以 MAXIMIZE_QUALITY 模式拍攝相片模糊的問題。(I173a9b/193823892)
  • 修正了許多裝置上使用閃光燈拍照圖片昏暗的問題。(I4e510)

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

1.0.1 版

2021 年 7 月 21 日

發布 androidx.camera:camera-camera2:1.0.1androidx.camera:camera-core:1.0.1androidx.camera:camera-lifecycle:1.0.11.0.1 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了在某些 Android 11 裝置上,setZoomRatio 中傳回 ListenableFuturesetLinearZoom 無法完成的問題。(I716d7)

  • 修正了在部分裝置上,相機卡在關閉相機狀態並導致黑色預覽畫面的問題。(I34c99)

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

1.0.0 版

2021 年 5 月 5 日

發布了 androidx.camera:camera-camera2:1.0.0androidx.camera:camera-core:1.0.0androidx.camera:camera-lifecycle:1.0.01.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-rc05androidx.camera:camera-core:1.0.0-rc05androidx.camera:camera-lifecycle:1.0.0-rc051.0.0-rc05 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了閃光燈開啟/自動開關時 ImageCapture 在 Samsung Galaxy S7 拍出圖片偏白的問題。(I30001)

1.0.0-rc04 版

2021 年 3 月 24 日

發布了 androidx.camera:camera-camera2:1.0.0-rc04androidx.camera:camera-core:1.0.0-rc04androidx.camera:camera-lifecycle:1.0.0-rc041.0.0-rc04 版包含此連結所列的修訂項目。

修正錯誤

1.0.0-rc03 版

2021 年 2 月 24 日

發布 androidx.camera:camera-camera2:1.0.0-rc03androidx.camera:camera-core:1.0.0-rc03androidx.camera:camera-lifecycle:1.0.0-rc031.0.0-rc03 版包含此連結所列的修訂項目。

修正錯誤

  • 修正 ProcessCameraProvider#getInstance 文件的格式錯誤
  • 修正了在 CameraXConfig 中使用 setAvailableCamerasLimiter 時 Robolectric 測試失敗的問題。
  • 修正了 ImageCapture 效能迴歸問題,方法是先移除已儲存圖片儲存位置的驗證,然後再拍照。完成變更後,如果儲存目的地無效,儲存作業就會需要較長時間才能獲得失敗回應,因為在拍照後會嘗試儲存圖片
  • 如果圖片佇列在 ImageAnalysis 中達到上限,這項變更就會捕捉例外狀況。因此,您可能會發現其他用途發生凍結或遲緩的狀況,例如預覽凍結/遲緩,但應用程式並未停止運作。
  • 已納入 SM-G930T 後置相機 JPEG 格式圖片間歇性毀損問題的變通方法。(I52001b/159831206)
  • 如果圖片佇列在 ImageAnalysis 中達到上限,這項變更就會捕捉例外狀況。因此,您可能會發現其他用途發生凍結或遲緩的狀況,例如預覽凍結/遲緩,但應用程式並未停止運作。(Ic12dab/175851631)
  • 修正了在 CameraXConfig 中使用 setAvailableCamerasLimiter 時 Robolectric 測試失敗的問題。(Ice307)
  • 修正了 ImageCapture 效能迴歸問題,方法是先移除已儲存圖片儲存位置的驗證,然後再拍照。進行此變更後,如果儲存目的地無效,則會花較久的時間收到失敗回應,這是因為系統會在拍照之後嘗試儲存圖片。(I1fd4eb/177061560)
  • 修正了 ImageCapture「File」類型為 OutputFileOptions 的效能迴歸問題。(I5164ab/177061560)

1.0.0-rc02 版

2021 年 1 月 27 日

發布 androidx.camera:camera-camera2:1.0.0-rc02androidx.camera:camera-core:1.0.0-rc02androidx.camera:camera-lifecycle:1.0.0-rc021.0.0-rc02 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了所有預覽支援大小小於 640x480 且顯示大小大於 640x480 時發生的 IllegalArgumentException 問題。(b/150506192)
  • 限制相機重新開啟的嘗試次數。開啟相機時嘗試從特定問題中復原時,CameraX 不會再嘗試無上限重新開啟相機,而會在重試 10 秒後停止。I435d2

  • 修正了所有支援預覽大小低於 640x480 且顯示大小超過 640x480 時發生的 IllegalArgumentException 問題。(I2a63cb/150506192)

1.0.0-rc01 版

2020 年 12 月 16 日

發布 androidx.camera:camera-camera2:1.0.0-rc01androidx.camera:camera-core:1.0.0-rc01androidx.camera:camera-lifecycle:1.0.0-rc011.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 格式圖片間歇性毀損問題的變通方法。(I5aca5b/159831206)
  • 修正了使用 Samsung SM-A716 裝置,在昏暗環境下一律打開閃光燈拍照時接收不到結果的問題。(If98b2b/172036589)
  • 修正了呼叫 Preview.setSurfaceProvider(null) 無法停止「預覽」的問題。(I3ac18)
  • 修正了在部分裝置上擷取 4:3 圖片的方向問題。(I0e3fbb/171492111)

Camera Camera2、Core 和 Lifecycle 1.0.0-beta12 版

2020 年 11 月 11 日

發布了 androidx.camera:camera-camera2:1.0.0-beta12androidx.camera:camera-core:1.0.0-beta12androidx.camera:camera-lifecycle:1.0.0-beta121.0.0-beta12 版包含此連結所列的修訂項目。

修正錯誤

  • 停用在 Samsung A3 裝置上自動開關閃光燈功能,修正 Samsung A3 裝置以自動開關閃光燈 AE 模式拍照的異常終止問題。(Ia5fe3b/157535165)
  • 修正了在搭載 Android L 的 Nexus 4 裝置 (API 級別 21 和 22) 上延伸預覽的問題。(I4d407b/158749159)
  • OnImageCapturedCallback#onCaptureSuccess 基礎類別實作作業不會再關閉圖片。這是為了避免開發人員預期以外的行為。開發人員不應該依賴 super.onCaptureSuccess 關閉圖片。(Ifbf9c)
  • 已淘汰實驗功能註解的 AndroidX 變化版本,以與 Kotlin 保持一致。該註解已由 RequiresOptIn 註解取代,而支援 Java 的 Linter 則已更新為同時支援新的 Kotlin 註解和新的 AndroidX 變化版本。(I52495b/151331381)

Camera-Camera2 1.0.0-beta11 版

2020 年 10 月 14 日

發布 androidx.camera:camera-camera2:1.0.0-beta111.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-beta111.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-beta101.0.0-beta10 版包含此連結所列的修訂項目。

修正錯誤

  • 修正驗證拍照專用檔案儲存目的地時發生的錯誤 (I8c565b/167697553)

Camera-Camera2 1.0.0-beta10 版

2020 年 9 月 23 日

發布 androidx.camera:camera-camera2:1.0.0-beta101.0.0-beta10 版包含此連結所列的修訂項目。

修正錯誤

Camera-Camera2 1.0.0-beta09 版

2020 年 9 月 16 日

發布 androidx.camera:camera-camera2:1.0.0-beta091.0.0-beta09 版包含此連結所列的修訂項目。

API 變更

  • 相較於提供靜態方法,Camera2CameraInfo 會改為在建立時納入 CameraInfo 例項,以便從這個例項擷取 Camera2 相關資訊。(I5b844)

修正錯誤

  • 修正了平板電腦裝置上的目標長寬比問題。如果目標長寬比設為 AspectRatio.RATIO_16_9,則應選取 16:9 大小。(Ib7fcfb/151969438)
  • 擲回 InitializationException 可讓應用程式妥善處理建立 CameraCharacteristics 時發生的 AssertionError。(I89c8cb/160524721)
  • 新增了 ExposureCompensation 的實驗性介面。(If96c7)

Camera-Core 1.0.0-beta09 版

2020 年 9 月 16 日

發布 androidx.camera:camera-core:1.0.0-beta091.0.0-beta09 版包含此連結所列的修訂項目。

API 變更

  • 修正了在 UseCaseGroup 上,可視區域標示為非空值的錯誤。開發人員應該能在不設定可視區域的情況下,建立可視區域。(Ie3d2e)
  • 已為 ExposureCompensation 新增實驗性功能介面 (If96c7)
  • 允許「預覽」任意目標旋轉。系統會透過新的 TranformationInfoListener 回呼即時計算並傳回轉換資訊。(I21470)

修正錯誤

  • 修正了部分裝置上的閃光燈無法關閉的問題。當閃光燈模式設為 FLASH_MODE_ON 拍照時,會發生這種情形,而在閃光燈啟動時,則會變更為 FLASH_MODE_OFF。問題與啟用手電筒模式類似。(Ib4451b/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-beta081.0.0-beta08 版包含此連結所列的修訂項目。

修正錯誤

  • 已最佳化 bindToLifecycle,可在主執行緒上快速執行。(I1d57e)
  • DisplayOrientedMeteringPointFactory 接受 CameraInfo 例項而非 CameraSelector,因此可直接對應工廠會為其產生點的相機。使用 DisplayOrientedMeteringPointFactory 的所有類別也會納入 CameraInfo 例項而非 CameraSelector。(I400c1)
  • 修正了在目標解析度設定為 2016x1080 且另外支援 1920x1080 16:9 大小時,系統選取 16:9 mod16 大小 (864x480) 的自動解析度長寬比大小分組問題。(I53167b/159363774)
  • 修正因競爭狀況而無法正常運作的 CameraControl 問題。(I2279fb/152333890b/160714166)

Camera-Core 1.0.0-beta08 版

2020 年 8 月 19 日

發布 androidx.camera:camera-core:1.0.0-beta081.0.0-beta08 版包含此連結所列的修訂項目。

API 變更

  • DisplayOrientedMeteringPointFactory 納入 CameraInfo 例項,而非 CameraSelector,因此可直接對應工廠會為其產生點的相機。使用 DisplayOrientedMeteringPointFactory 的所有類別也會納入 CameraInfo 例項,而非 CameraSelector。(I400c1)

修正錯誤

  • 如要擷取圖片,請依據相機方向覆寫中繼資料中的翻轉水平旗標。(I28499)
  • 使用不會從 Context.getApplicationContext() 傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(I3d3c9b/160817073)

Camera-Camera2 1.0.0-beta07 版

2020 年 7 月 22 日

發布 androidx.camera:camera-camera2:1.0.0-beta071.0.0-beta07 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了在 Android 5.0 (舊版) 裝置上預覽延伸畫面的問題。(I0c03a)
  • 排除了在部分裝置上導致 WYSIWYG 問題的某些支援 JPEG 大小。(Ib5128)

Camera-Core 1.0.0-beta07 版

2020 年 7 月 22 日

發布 androidx.camera:camera-core:1.0.0-beta071.0.0-beta07 版包含此連結所列的修訂項目。

API 變更

  • FIT_CENTERFIT_STARTFIT_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-beta061.0.0-beta06 版包含此連結所列的修訂項目。

API 變更

  • 新增了實驗功能介面,可依相機 ID 和 CameraCharacteristics 篩選相機。(I28f61)

修正錯誤

  • 修正了 StartFocusAndMetering 在 Samsung Galaxy S7 上無法成功對焦的問題。(If3be7b/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-beta061.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-beta051.0.0-beta05 版包含此連結所列的修訂項目。

修正錯誤

  • 修正手機處於「勿擾」模式時,初始化 CameraX 時發生的應用程式啟動異常終止問題。InitializationException 包含的 CameraUnavailableException 會設為初始化結果的 ListenableFuture,而不會使應用程式異常終止。(I9909ab/149413835)
  • 修正了在 CONTROL_AF_STATE 為空值的裝置上呼叫 startFocusAndMetering 時發生的異常終止問題。(Ife55eb/157084254)

Camera-Core 1.0.0-beta05 版

2020 年 6 月 10 日

發布 androidx.camera:camera-core:1.0.0-beta051.0.0-beta05 版包含此連結所列的修訂項目。

API 變更

  • 修正手機處於「勿擾」模式時,初始化 CameraX 時發生的應用程式啟動異常終止問題。InitializationException 包含的 CameraUnavailableException 會設為初始化結果的 ListenableFuture,而不會使應用程式異常終止。(I9909ab/149413835)

修正錯誤

  • 更新了 setTargetResolutionsetTargetRotation 的 javadocs。(Iae16f)

Camera-Camera2 1.0.0-beta04 版

2020 年 5 月 27 日

發布 androidx.camera:camera-camera2:1.0.0-beta041.0.0-beta04 版包含此連結所列的修訂項目。

修正錯誤

  • 已允許應用程式透過 Camera2Interop 設定任何 Camera2 擷取要求參數,而不會造成異常終止。請注意是否有覆寫參數造成的問題,使用 Camera2Interop 覆寫參數時,無法保證穩定性和行為。(Ibe5a1b/149103700)
  • 修正了使用採用虛擬語言代碼的裝置在使用應用程式時的自動初始化。(I3bef3b/154767663)
  • 將已卸離用途的相關錯誤記錄檔轉換成 Camera2CameraImpl 的偵錯記錄檔。(I1a565, b/154422490)
  • 修正了即使閃光燈啟動時,拍攝的影像仍過暗的問題。(I5d9fab/149729613)
  • 修正 ImageProxyImageCapture 的緩衝區未反繞的錯誤。(I0c455b/153249512)
  • 修正了僅繫結 ImageCapture 的問題:(1) 無法以 MAX_QUALITY 拍照;(2) 自動曝光功能無法正常運作,因此影像品質不良。(I17782b/145326998)
  • 改善了 CameraX 因其他程序或程式碼路徑竊取相機而中斷時,重新開啟相機的穩定性 (I1fbc3b/153714651)

Camera-Core 1.0.0-beta04 版

2020 年 5 月 27 日

發布 androidx.camera:camera-core:1.0.0-beta041.0.0-beta04 版包含此連結所列的修訂項目。

API 變更

  • 新增實驗功能 API (CameraXConfig.Builder#setSchedulerHandler()),用於設定 CameraX 相機堆疊在內部使用的處理常式。這個新的 API 和 CameraXConfig.Builder#setCameraExecutor() 可以完全控制 CameraX 相機堆疊使用的執行緒。(I7bf32b/121160431)

修正錯誤

  • 修正 ImageAnalysisImageReaderProxy 關閉後存取 ImageProxy 的異常終止問題。這也會導致 Analyzer 收到的所有 ImageProxy 都必須在 ImageReaderProxy 關閉前先行關閉。(I4b299b/145956416b/154155377b/156357269)
  • 已從 PreviewView#createSurfaceProvider() 移除 CameraInfo 參數,PreviewView 現在會從 SurfaceRequest 內部擷取。(If18f0b/154652477)
  • 修正了使用採用虛擬語言代碼的裝置在使用應用程式時的自動初始化。(I3bef3b/154767663)
  • 修正了即使閃光燈啟動時,拍攝的影像仍過暗的問題。(I5d9fab/149729613)
  • 修正 ImageAnalysis 的問題:多次呼叫 setAnalyzer/clearAnalyzer 導致分析器無法接收要分析的圖片。(I6169fb/151605317b/153514544)
  • 修正 ImageProxyImageCapture 的緩衝區未反繞的錯誤。(I0c455b/153249512)
  • 修正了 CameraManager 支援的清單中,不見得會選取使用第一相機的問題。(I4c624b/153418028)。
  • 修正因設定 Preview.SurfaceProvider 不釋出先前要求的途徑而造成間歇性異常終止的問題。“java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7b/155936225)

Camera-Camera2 1.0.0-beta03 版

2020 年 4 月 15 日

發布 androidx.camera:camera-camera2:1.0.0-beta031.0.0-beta03 版包含此連結所列的修訂項目。

修正錯誤

  • 修正以支援 camera-core 的版本

Camera-Core 1.0.0-beta03 版

2020 年 4 月 15 日

發布 androidx.camera:camera-core:1.0.0-beta031.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 方向旋轉值。(Id4281b/150802561)
  • 使用預設的 CameraX/Camera2 實作時,不再需要在 build.gradle 內明確排序 CameraX 依附元件。如果需要宣告嚴格依附元件,現在可在建構檔案中納入所有 CameraX 依附元件。(I46e88)
  • 修正了顯示大小小於 640x480 的裝置發生 IllegalArgumentException 問題。(Ife3f2b/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 方向旋轉值。(Id4281b/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-beta011.0.0-beta01 版包含此連結所列的修訂項目。

修正錯誤

  • 已將 SurfaceRequest.setSurface(Surface) 重新命名為 SurfaceRequest.provideSurface(Surface),並將 SurfaceRequest.setWillNotComplete() 重新命名為 SurfaceRequest.willNotProvideSurface()。(I224fe)
  • 修正了 ImageCapture.setTargetRotation() 變更目標旋轉值後,已存圖片長寬比不正確的問題。(I474eab/148763432)
  • 透過保留設定預設 CameraXConfig 提供者標記的旗標啟用 ProGuard,以此方式修正應用程式變化版本初始化的問題。(I2d6c1)

Camera-Core 1.0.0-beta01 版

2020 年 2 月 26 日

發布 androidx.camera:camera-core:1.0.0-beta011.0.0-beta01 版包含此連結所列的修訂項目。

API 變更

  • SurfaceRequest.provideSurface() 上的 ListenableFuture 替換成 ExecutorCallback。這表示 API 不再需要處理 provideSurface() 上的例外狀況,並強制執行 provideSurface() 回呼不得取消,藉此簡化 API。這是為了避免因過早釋出途徑,造成較舊裝置當機。SurfaceRequest.Result 物件現在用於追蹤 SurfaceRequest 如何使用提供的 Surface。(I7854b)
  • 已將 SurfaceRequest.setSurface(Surface) 重新命名為 SurfaceRequest.provideSurface(Surface),並將 SurfaceRequest.setWillNotComplete() 重新命名為 SurfaceRequest.willNotProvideSurface()。(I224fe)

修正錯誤

  • 修正了 ImageCapture.setTargetRotation() 變更目標旋轉值後,已存圖片長寬比不正確的問題。(I474eab/148763432)
  • 透過保留設定預設 CameraXConfig 提供者標記的旗標啟用 ProGuard,以此方式修正應用程式變化版本初始化的問題。(I2d6c1)
  • 更新了閃光燈模式 API 的說明文件,加入可能的值。(I4a3ec)

Camera-Camera2 1.0.0-alpha10 版

2020 年 2 月 10 日

發布了 androidx.camera:camera-camera2:1.0.0-alpha101.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-alpha101.0.0-alpha10 版包含此連結所列的修訂項目

API 變更

  • 更新了 ImageCapture,允許將圖片儲存至 UriOutputStream。將超載的 takePicture 方法合而為一。更新了測試應用程式,以 Uri 做為標準範例。(Ia3bec)
  • Preview.PreviewSurfaceProvider 已重新命名為 Preview.SurfaceProviderSurfaceProvider 不再需要開發人員自行建立 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)
  • PreviewImageCapture 類別現已標示為最終版。(I2500b)
  • API 已更新,將 CameraInfogetZoomRatio()getMaxZoomRatio()getMinZoomRatio()getLinearZoom() 方法合併為 getZoomState(),進而傳回 ZoomState 例項。(Ib19fe)
  • 已從 CameraXConfig 移除 API 欄位 OPTION_TARGET_CLASSOPTION_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-alpha091.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-alpha091.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。
  • 擴充了 setZoomRatiosetLinearZoom 的參考說明文件。

修正錯誤

  • 修正了關閉再開啟相機導致「先決條件」檢查失敗的問題。
  • 修正了使用手電筒及縮放 API 可能發生的 ConcurrentModificationException 問題。
  • 修正了問題:mod16 尺寸大小可用時,現在可以選取更接近要求解析度的解析度。
  • startFocusMeteringcancelFocusMetering API 現已按照文件所述方式運作、時間碼正確,且可能在發生錯誤時傳回相關資訊。
  • 在不支援此大小的裝置上,修正了以裁剪顯示比例要求特定目標解析度的問題。現在,系統會選取沒有裁剪範圍的足夠解析度,以繫結原要求 (如果有的話)。

Camera-Camera2 1.0.0-alpha08 版

2019 年 12 月 18 日

發布了 androidx.camera:camera-camera2:1.0.0-alpha081.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-alpha081.0.0-alpha08 版包含此連結所列的修訂項目

已知問題

  • 使用 PreviewViewCameraView 的應用程式預覽長寬比可能有誤。部分「完整」裝置 (例如 Pixel2) 暫停或重新啟用後,就會發生這類情況。

修正錯誤

  • 更新了 FocusMeteringActionCameraControl 的說明文件。
  • 已為 enableTorch()getTorchState() 實作 TorchControl

API 變更

  • 已隱藏 IntDef,並將 IntDef 常數移至 IntDef 定義之外。
  • 已將 rotationDegreesOnImageCaptureCallback 類別移至 ImageInfo
  • 已將 rotationDegreesAnalyzer 類別移至 ImageInfo

Camera-Camera2 1.0.0-alpha07 版

2019 年 12 月 4 日

發布了 androidx.camera:camera-camera2:1.0.0-alpha07camera-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-alpha07camera-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 加註使用範例

  • 已移除 AnalyzerUIThread 註解規定。

  • 系統會加入 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 存取子。

  • startFocusMeteringcancelFocusMetering 現在會傳回 ListenableFutures,代表呼叫的非同步作業。

  • MeteringPoints 現在做為計量動作的控制代碼使用,由工廠製作。應用程式應採用現有的工廠,而非自訂工廠。

修正問題

  • 修正了繼續拍照 (先前拍照暫停動作結束後,繼續待完成的拍攝) 的問題。
  • 已知問題:CameraControl.enableTorch() 可以正常使用,但傳回的 ListenableFuture<Void> 一律是即時 complete(success) Future,即使沒有閃光燈也一樣。日後版本會將此修正為最終行為:沒有閃光燈時,enableTorch(true) 會立即失敗 (不會向 CaptureSession 傳送請求),TorchState 則會保持關閉。
  • 已知問題:startFocusAndMeteringcancelFocusAndMetering 會啟動並取消對焦計量,但傳回不代表記錄行為的 completed (success) Future。ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering()FocusMeteringResult 是假結果,其中 isFocusSuccessful() 一律為「false」,與預期的記錄行為不同。
  • 已知問題:正在開發與 PreviewView 觸控事件搭配使用的計量點工廠。目前,連結自訂管理途徑的應用程式可以使用現有的計量點工廠,否則 PreviewView 沒有可用的對焦功能。

Camera-Camera2 和 Camera-Core 1.0.0-alpha06 版

2019 年 10 月 9 日

發布了 androidx.camera:camera-camera2:1.0.0-alpha06androidx.camera:camera-core:1.0.0-alpha06。這些是 camera-camera2:1.0.0-alpha06 包含的修訂版,這些則是 camera-core:1.0.0-alpha06 包含的修訂版本

新功能

設定長寬比的變更:

  • 新增了 setTargetAspectRatioMode() 並接受列舉引數。這會設定包含 RATIO_4_3RATIO_16_9 選項的長寬比模式,而非任何長寬比。這樣就能更精確地反映相機只提供特定的長寬比,而非任意比例。
    • 目前唯一可用的比率是 16:9 和 4:3。如果是 1:1,就只有特定裝置的相機可提供這項比例,且解析度也會受限。設計 1:1 介面或處理程序的應用程式應使用更靈活的 16:9 或 4:3 選項,並且裁剪顯示畫面或處理子區域。
    • 這些長寬比將導向使用最大感應器區域。
  • 新增了 getTargetAspectRatio() 至用途設定 API,可傳回用途輸出的指定長寬比。
  • ImageCapture 的 setTargetAspectRatio(Rational aspectRatio) 方法已變更為 setTargetAspectRatioCustom(Rational aspectRatio)。設定完成後,ImageCapture 輸出會據此裁剪。

執行者 API

  • 下列函式接受執行者參數,可讓應用程式控管執行函式的執行者。
    • Preview.setOnPreviewOutputUpdateListener() API。如果該函式的執行程式不存在,就會在主執行緒上執行。
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

CameraInfo 新增了檢查閃光燈可用性及感應器旋轉 API

  • 新增了 CameraInfogetCameraInfo 方法,可讓應用程式檢查鏡頭面向 CameraInfo 是否可用,以及該相機有沒有可用的閃光燈。例如:

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • 新增 CameraInfo.getSensorRotationDegrees()。用於提供相對於裝置自然方向的相機感應器方向,或基於便利性,提供相對於途徑旋轉所述方向 (描述相對於自然方向的方向) 的相機感應器方向。

API 相關變更與修正錯誤

  • 長寬比:在每個用途中,應用程式只能呼叫 setTargetResolution()setTargetAspectRatio() 其中之一。對相同的建構工具同時呼叫兩者,就會傳回錯誤。
    • 一般來說,建議您根據應用程式的 UI 設計來使用 setTargetAspectRatio()。具體解析度會因用途而異。舉例來說,預覽畫面會接近螢幕解析度,拍照則提供高解析度的靜態圖像。詳情請參閱自動解析度表格
    • 使用 setTargetResolution() 來處理更具體的用途,例如需要最低 (為了節省運算力) 或最高解析度 (為了處理細節) 時。
  • 執行者 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-alpha05androidx.camera:camera-core:1.0.0-alpha05。以下是 camera-camera2:1.0.0-alpha05 包含的修訂項目,以下則是 camera-core:1.0.0-alpha05 包含的修訂項目

  • API 相關變更:已重新命名以下用途錯誤變數:

    • ImageCapture.UseCaseError 已重新命名為 ImageCapture.ImageCaptureError
    • VideoCapture.UseCaseError 已重新命名為 VideoCapture.VideoCaptureError
  • 已利用「輕觸即可對焦」API 新增 CameraControl API

    • 新增了 API,以便透過 CameraX 取得相機的 CameraControl;依鏡頭朝向選取:

      CameraX.getCameraControl(LensFacing lensFacing)

    • 新增了 MeteringPointFactoryMeteringPointMeteringModeFocusMeteringAction,以便執行「輕觸即可對焦」功能:

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • 新增了 CameraControl 的 API,以啟動及取消對焦計量:

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

    • 新增了根據檢視類別,協助將輕觸座標轉譯為感應器座標的計量點工廠 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-alpha04androidx.camera:camera-core:1.0.0-alpha041.0.0-alpha04 版包含此連結所列的修訂項目

新功能

長寬比和解析度選擇的變更

CameraX 的目標是順利初始化相機工作階段。這表示 CameraX 會根據裝置功能犧牲解析度/長寬比,以啟動擷取工作階段為第一目標,因此可能無法滿足確切的要求。原因可能包括:

  • 裝置不支援要求的解析度
  • 相容性問題,例如部分舊版裝置必須使用特定解析度才能正常運作
  • 某些裝置僅於使用特定長寬比時提供特定格式
  • JPEG 或影片編碼「最接近 mod16」的偏好設定。查看 CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP

雖然 CameraX 會建立及管理工作階段,但還是建議您根據程式碼中的用途輸出檢查傳回的圖片大小,然後進行調整。

我們對解析度和長寬比設定做出以下變更,用意是讓 API 更明確:

  • 在未設定長寬比的情況下,預覽用途現在會採用 4:3 的預設長寬比。
  • 當 CameraX 內部根據裝置功能來考慮要求的解析度和長寬比時,都會先嘗試維持相同的長寬比 (由 setTargetAspectRatiosetTargetResolution 呼叫中的任一項進行判斷)
  • 系統會將解析度的「最接近 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-alpha03androidx.camera:camera-camera2:1.0.0-alpha031.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-alpha02androidx.camera:camera-camera2:1.0.0-alpha021.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-alpha01androidx.camera:camera-camera2:1.0.0-alpha011.0.0-alpha01 版包含此連結所列的修訂項目

Camera-Lifecycle 1.0.0-beta11 版

2020 年 10 月 14 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta111.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-beta101.0.0-beta10 版包含此連結所列的修訂項目。

修正錯誤

Camera-Lifecycle 1.0.0-beta09 版

2020 年 9 月 16 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta091.0.0-beta09 版包含此連結所列的修訂項目。

Camera-Lifecycle 1.0.0-beta08 版

2020 年 8 月 19 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta081.0.0-beta08 版包含此連結所列的修訂項目。

修正錯誤

  • 使用不會從 Context.getApplicationContext() 傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(I3d3c9b/160817073)

Camera-Lifecycle 1.0.0-beta07 版

2020 年 7 月 22 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta071.0.0-beta07 版包含此連結所列的修訂項目。

Camera-Lifecycle 1.0.0-beta06 版

2020 年 6 月 24 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta061.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-beta051.0.0-beta05 版包含此連結所列的修訂項目。

修正錯誤

  • 修正手機處於「勿擾」模式時,初始化 CameraX 時發生的應用程式啟動異常終止問題。InitializationException 包含的 CameraUnavailableException 會設為初始化結果的 ListenableFuture,而不會使應用程式異常終止。(I9909ab/149413835)

Camera-Lifecycle 1.0.0-beta04 版

2020 年 5 月 27 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta041.0.0-beta04 版包含此連結所列的修訂項目。

Camera-Lifecycle 1.0.0-beta03 版

2020 年 4 月 15 日

發布 androidx.camera:camera-lifecycle:1.0.0-beta031.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-beta011.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-beta02camera-core:1.0.0-beta02 構件中的錯誤修正。

Camera-Lifecycle 1.0.0-alpha10 版

2020 年 2 月 10 日

發布了 androidx.camera:camera-lifecycle:1.0.0-alpha101.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-alpha031.0.0-alpha03 版包含此連結所列的修訂項目

更新

  • 進行多項修正與更新,以支援 Camera Core 和 Camera2 的變更。

Camera-Lifecycle 1.0.0-alpha02 版

2019 年 12 月 18 日

發布了 androidx.camera:camera-lifecycle:1.0.0-alpha021.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-alpha01camera-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-alpha32androidx.camera:camera-view:1.0.0-alpha321.0.0-alpha32 版包含此連結所列的修訂項目。

API 變更

修正錯誤

  • 禁止應用程式在繫結 VideoCapture 時啟用擴充功能模式。CameraX 擴充功能只支援 ImageCapturePreview。目前尚未支援 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-alpha31androidx.camera:camera-view:1.0.0-alpha311.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-alpha30androidx.camera:camera-view:1.0.0-alpha301.0.0-alpha30 版包含此連結所列的修訂項目。

API 變更

  • 已將 @RequiresApi(21) 註解新增至所有 CameraX 類別,並捨棄 AndroidManifest.xml 的 minSdkVersion。如此一來,camera-core 才能輕鬆整合到 minSdkVersion 少於 21、但想要有條件使用需要 API 21 以上程式碼路徑的應用程式。如為 minSdkVersion 21 以上的應用程式,則無須採取任何行動。(Ie7f2eb/200599470)

修正錯誤

  • 修正了啟用 Proguard 時發生的 AbstractMethodError 問題。(Iae468b/201177844)

1.0.0-alpha29 版

2021 年 9 月 29 日

發布 androidx.camera:camera-extensions:1.0.0-alpha29androidx.camera:camera-view:1.0.0-alpha291.0.0-alpha29 版包含此連結所列的修訂項目。

API 變更

  • API 不再為實驗性,故已移除 ExperimentalUseCaseGroup 註解。(I01ef5)
  • 移除 RotationProvider#removeAllListeners()。請改用 RotationProvider#removeListener(...)。(Id9d4a)
  • 更新 RotationReceiver 類別:將 set/clear 事件監聽器變更為 add/remove/removeAll,移除預設會使用主執行緒的 setListener 變化版本,並新增方法註解。(Ib1669)

修正錯誤

  • 已將 ExtensionMode#BEAUTY 重新命名為 FACE_RETOUCH,以正確顯示擴充功能模式完成的事項。(I61f54b/198515274)
  • 修正了在一次活動中多次使用 CameraController 和 PreviewView 時,相機突然關閉的問題。(Ibfd18b/197539358)

1.0.0-alpha28 版

2021 年 8 月 18 日

發布 androidx.camera:camera-extensions:1.0.0-alpha28androidx.camera:camera-view:1.0.0-alpha281.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-alpha27androidx.camera:camera-view:1.0.0-alpha271.0.0-alpha27 版包含此連結所列的修訂項目。

API 變更

  • 將原實驗功能可視區域 API 升級。移除 API 的實驗功能註解。(I717ea)
  • 已將 CoordinateTransform#getTransform 重新命名為 CoordinateTransform#transform,並更新 JavaDoc。(I864ae)

修正錯誤

  • 修正了 PreviewView PERFORMANCE 模式與 Compose UI 搭配使用時的延伸問題。(Ie1137b/183864890)

1.0.0-alpha26 版

2021 年 6 月 30 日

發布 androidx.camera:camera-extensions:1.0.0-alpha26androidx.camera:camera-view:1.0.0-alpha261.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-alpha25androidx.camera:camera-view:1.0.0-alpha251.0.0-alpha25 版包含此連結所列的修訂項目。

API 變更

  • ExperimentalCameraFilter API 目前已脫離實驗功能階段,成為正式 API。無需加註 OptIn 即可使用。(I4bc94)
  • 新增公用程式,用於轉換不同用途之間的座標。使用範例:轉換 ImageAnalysis 用途中偵測到的座標,並在預覽畫面中醒目顯示偵測到的物件。(I63ab1b/137515129)
  • 移除了 CameraViewCameraView 已由 CameraController 取代。請參閱遷移指南,瞭解如何遷移:(Id5005)

修正錯誤

  • ExperimentalUseCaseGroupLifecycle 已由 ExperimentalUseCaseGroup 取代。(I3b2efb/159033688)

1.0.0-alpha24 版

2021 年 4 月 21 日

發布 androidx.camera:camera-extensions:1.0.0-alpha24androidx.camera:camera-view:1.0.0-alpha241.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-alpha23androidx.camera:camera-view:1.0.0-alpha231.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)。(Ic8fa1b/181599852)
  • 修正了 PreviewView 中的 Samsung A3 延伸預覽畫面。(Iacb30b/180121821)
  • 修正了在相機初始化之前無法設定相機選取器的問題。(Ic8bd0)

Camera Extensions 和 View 1.0.0-alpha22 版

2021 年 2 月 24 日

發布 androidx.camera:camera-extensions:1.0.0-alpha22androidx.camera:camera-view:1.0.0-alpha221.0.0-alpha22 版包含此連結所列的修訂項目。

API 變更

修正錯誤

  • 修正了只有「預覽」或「ImageCapture」設定繫結時 ExtensionErrorListener 的回報錯誤。(I5ae39)

Camera Extensions 和 View 1.0.0-alpha21 版

2021 年 1 月 27 日

發布了 androidx.camera:camera-extensions:1.0.0-alpha21androidx.camera:camera-view:1.0.0-alpha211.0.0-alpha21 版包含此連結所列的修訂項目。

此版本支援其他相機程式庫構件。

Camera Extensions 和 View 1.0.0-alpha20 版

2020 年 12 月 16 日

發布 androidx.camera:camera-extensions:1.0.0-alpha20androidx.camera:camera-view:1.0.0-alpha201.0.0-alpha20 版包含此連結所列的修訂項目。

此版本支援其他相機程式庫構件。

Camera-Extensions 和 Camera-View 1.0.0-alpha19 版

2020 年 11 月 11 日

發布 androidx.camera:camera-extensions:1.0.0-alpha19androidx.camera:camera-view:1.0.0-alpha191.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-alpha181.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-alpha181.0.0-alpha18 版包含此連結所列的修訂項目。

此版本支援其他相機程式庫構件。

Camera-Extensions 1.0.0-alpha17 版

2020 年 9 月 23 日

發布 androidx.camera:camera-extensions:1.0.0-alpha171.0.0-alpha17 版包含此連結所列的修訂項目。

修正錯誤

Camera-View 1.0.0-alpha17 版

2020 年 9 月 23 日

發布 androidx.camera:camera-view:1.0.0-alpha171.0.0-alpha17 版包含此連結所列的修訂項目。

修正錯誤

Camera-Extensions 1.0.0-alpha16 版

2020 年 9 月 16 日

發布 androidx.camera:camera-extensions:1.0.0-alpha161.0.0-alpha16 版包含此連結所列的修訂項目。

修正錯誤

  • ExtensionsManager 中新增方法以取得 Extensions 物件,該物件可用於啟用及查詢 Camera 例項的擴充功能 (I4fb7e)

Camera-View 1.0.0-alpha16 版

2020 年 9 月 16 日

發布 androidx.camera:camera-view:1.0.0-alpha161.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-alpha151.0.0-alpha15 版包含此連結所列的修訂項目。

修正錯誤

  • ExtensionsManager.init() 方法現在會納入 Context 做為參數,而非包含 0 引數。(Ife754)
  • 使用不會從 Context.getApplicationContext() 傳回「應用程式」物件的結構定義時,初始化作業應不會再異常終止。(I3d3c9b/160817073)

    Camera-View 1.0.0-alpha15 版

    2020 年 8 月 19 日

發布 androidx.camera:camera-view:1.0.0-alpha151.0.0-alpha15 版包含此連結所列的修訂項目。

修正錯誤

  • DisplayOrientedMeteringPointFactory 納入 CameraInfo 例項,而非 CameraSelector,因此可直接對應工廠會為其產生點的相機。使用 DisplayOrientedMeteringPointFactory 的所有類別也會納入 CameraInfo 例項,而非 CameraSelector。(I400c1)
  • 移除了 TextureViewMeteringPointFactoryPreviewView 提供公用 API (createMeteringPointFactory()),用於建立計量點工廠,不論其使用 TextureViewSurfaceView。(Ide693)
  • 將 PreviewView 的 SURFACE_VIEW/TEXTURE_VIEW 實作模式重新命名為 PERFORMANCE/COMPATIBLEPERFORMANCE 是舊版 SURFACE_VIEW 模式,COMPATIBLE 則是舊版 TEXTURE_VIEW 模式。(I0edc2)
  • 如要擷取圖片,請依據相機方向覆寫中繼資料中的翻轉水平旗標。(I28499)

Camera-Extensions 1.0.0-alpha14 版

2020 年 7 月 22 日

發布 androidx.camera:camera-extensions:1.0.0-alpha141.0.0-alpha14 版包含此連結所列的修訂項目。

Camera-View 1.0.0-alpha14 版

2020 年 7 月 22 日

發布 androidx.camera:camera-view:1.0.0-alpha141.0.0-alpha14 版包含此連結所列的修訂項目。

Camera-Extensions 1.0.0-alpha13 版

2020 年 6 月 24 日

發布 androidx.camera:camera-extensions:1.0.0-alpha131.0.0-alpha13 版包含此連結所列的修訂項目。

修正錯誤

  • 新增了實驗功能介面,可依相機 ID 和 CameraCharacteristics 篩選相機。(I28f61)

Camera-View 1.0.0-alpha13 版

2020 年 6 月 24 日

發布 androidx.camera:camera-view:1.0.0-alpha131.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-alpha121.0.0-alpha12 版包含此連結所列的修訂項目。

修正錯誤

  • 修正手機處於「勿擾」模式時,初始化 CameraX 時發生的應用程式啟動異常終止問題。InitializationException 包含的 CameraUnavailableException 會設為初始化結果的 ListenableFuture,而不會使應用程式異常終止。(I9909ab/149413835)

Camera-View 1.0.0-alpha12 版

2020 年 6 月 10 日

發布 androidx.camera:camera-view:1.0.0-alpha121.0.0-alpha12 版包含此連結所列的修訂項目。

修正錯誤

  • 新增 PreviewView#getBitmap() API,可傳回預覽介面顯示的內容 Bitmap 表示法。(I9b500b/157659818)

Camera-Extensions 1.0.0-alpha11 版

2020 年 5 月 27 日

發布 androidx.camera:camera-extensions:1.0.0-alpha111.0.0-alpha11 版包含此連結所列的修訂項目。

Camera-View 1.0.0-alpha12 版

2020 年 6 月 10 日

發布 androidx.camera:camera-view:1.0.0-alpha121.0.0-alpha12 版包含此連結所列的修訂項目。

新功能

API 變更

修正錯誤

  • 新增 PreviewView#getBitmap() API,可傳回預覽介面顯示的內容 Bitmap 表示法。(I9b500b/157659818)

Camera-View 1.0.0-alpha11 版

2020 年 5 月 27 日

發布 androidx.camera:camera-view:1.0.0-alpha111.0.0-alpha11 版包含此連結所列的修訂項目。

API 變更

  • 新增 PreviewView#getPreviewStreamState API,可讓應用程式觀察影片是否正在串流播放。如果 PreviewView 處於 TEXTURE_VIEW 模式,「STREAMING」狀態也可保證預覽圖片的可見度。(Ic0906b/154652477)
  • 新增了 PreviewView#setDeviceRotationForRemoteDisplayMode() API,若應用程式以遠端顯示模式執行,可提供裝置旋轉以便進行轉換計算。(I59b95b/153514525)

修正錯誤

  • 修正了在搭載 Android 7.0 以下版本的 FULL/LIMITED/LEVEL_3 相機上預覽變形問題。Android 為 7.0 以下版本時,強制使用 ImplementationMode#TEXTURE_VIEW 模式。(I83e30b/155085307)
  • 已從 PreviewView#createSurfaceProvider() 移除 CameraInfo 參數,PreviewView 現在會從 SurfaceRequest 內部擷取。(If18f0b/154652477)
  • 將 CameraView 中 VideoCapture 的預設長寬比修正為 16:9。(Ie6a7bb/153237864)
  • 修正在 ViewPager2 中先滑開 Preview 片段再滑回時的 PreviewView 黑色畫面問題。也修正了先 removeView(previewview)addView(previewView) 的問題。(Iab555b/149877652b/147354615)
  • 更新 CameraView#takePicture() API,允許將圖片儲存至 UriOutputStream。更新測試應用程式,以使用 Uri 做為標準範例。(Ia2459b/153607583)
  • 您可以設定 ScaleType 屬性,從 XML 版面配置設定 PreviewView 的調整類型。(I08565b/153015659)
  • 已移除 CameraView.ScaleType。請改用 PreviewView.ScaleType 來 set/get CameraView 的調整類型。(Ia8974b/153014831)
  • 在沒有提供背景顏色的情況下,為 PreviewView 指定預設的背景顏色。這樣可避免使用者在預覽串流開始前看到後方的內容。(I09fad)

Camera-Extensions 1.0.0-alpha10 版

2020 年 4 月 15 日

發布 androidx.camera:camera-extensions:1.0.0-alpha101.0.0-alpha10 版包含此連結所列的修訂項目。

修正錯誤

  • 修正以支援 Camera-Core 的版本

Camera-View 1.0.0-alpha10 版

2020 年 4 月 15 日

發布 androidx.camera:camera-view:1.0.0-alpha0101.0.0-alpha010 版包含此連結所列的修訂項目。

修正錯誤

  • 修正先前針對 PreviewView 的 surfaceView 導入方式,無法在特定裝置上正常運作的問題。這個問題會使應用程式在繼續預覽後異常終止。(I5ed6b)

Camera-Extensions 1.0.0-alpha09 版

2020 年 4 月 1 日

發布 androidx.camera:camera-extensions:1.0.0-alpha091.0.0-alpha09 版包含此連結所列的修訂項目。

修正錯誤

  • 更新以支援 camera-camera2:1.0.0-beta02camera-core:1.0.0-beta02camera-lifecycle:1.0.0-beta02 構件中的錯誤修正

Camera-View 1.0.0-alpha09 版

2020 年 4 月 1 日發布了 androidx.camera:camera-view:1.0.0-alpha091.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-alpha081.0.0-alpha08 版包含此連結所列的修訂項目。

Camera-View 1.0.0-alpha08 版

2020 年 2 月 26 日

發布 androidx.camera:camera-view:1.0.0-alpha081.0.0-alpha08 版包含此連結所列的修訂項目。

修正錯誤

  • SurfaceRequest.provideSurface() 上的 ListenableFuture 替換成 ExecutorCallback。這表示 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-alpha071.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-alpha071.0.0-alpha07 版包含此連結所列的修訂項目

API 變更

  • PreviewViewTextureView 導入方式現在會將 TextureView 的大小設為相機感應器輸出大小,然後再調整大小使其填滿父項 PreviewView。如果您希望相機預覽畫面填滿整個 UI 部分 (例如整個畫面),請勿將 PreviewView 的大小設為固定值,或使用如屬性「wrap_content」納入其內容,這樣做可能使相機預覽畫面只填滿 PreviewView 的一部分 (如果攝影機感應器輸出大小較小)。您應改為盡可能將 PreviewView 設為與其父項相同大小 (例如透過使用「match_parent」屬性的方式)。(1204869)

修正錯誤

  • 更新了 ImageCapture,允許將圖片儲存至 UriOutputStream。將超載的 takePicture 方法合而為一。更新了測試應用程式,以 Uri 做為標準範例。(Ia3bec)
  • Preview.PreviewSurfaceProvider 已重新命名為 Preview.SurfaceProviderSurfaceProvider 不再需要開發人員自行建立 ListenableFuture,且現在透過新的 SurfaceRequest 物件即可提供 Surface。由於 Preview 與其他類別 (例如 PreviewView) 配對使用時可能濫用,因此已將 Preview.getPreviewSurfaceProvider() 方法移除。(I20105)
  • 先前在 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError() 中傳遞的引數現已取代為單一引數 ImageCaptureException,該引數仍包含先前傳遞的所有資訊。
  • 先前在 ImageCapture.OnImageSavedCallback.onImageSaved() 中傳遞的檔案引數已移除。(I750d2)
  • API 已更新,其中 CameraInfogetZoomRatio()getMaxZoomRatio()getMinZoomRatio()getLinearZoom() 的方法會合併為 getZoomState(),以傳回 ZoomState 例項。(Ib19fe)

Camera-Extensions 1.0.0-alpha06 版

2020 年 1 月 22 日

發布了 androidx.camera:camera-extensions:1.0.0-alpha061.0.0-alpha06 版包含此連結所列的修訂項目

更新

  • 進行多項修正與更新,以支援 Camera Core 和 Camera2 的變更。

Camera-View 1.0.0-alpha06 版

2020 年 1 月 22 日

發布了 androidx.camera:camera-view:1.0.0-alpha061.0.0-alpha06 版包含此連結所列的修訂項目

更新

  • 進行多項修正與更新,以支援 Camera Core 和 Camera2 的變更。

Camera-Extensions 1.0.0-alpha05 版

2019 年 12 月 18 日

發布了 androidx.camera:camera-extensions:1.0.0-alpha051.0.0-alpha05 版包含此連結所列的修訂項目

修正錯誤

  • 已配合內部 Camera Core API 完成更新。

Camera-View 1.0.0-alpha05 版

2019 年 12 月 18 日

發布了 androidx.camera:camera-view:1.0.0-alpha051.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-alpha04camera-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-alpha04camera-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-alpha03androidx.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-alpha02androidx.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-alpha01androidx.camera:camera-view:1.0.0-alpha01。這些是 Camera-extensions:1.0.0-alpha01 包含的修訂版,這些則是 camera-view:1.0.0-alpha01 包含的修訂版

  • 為日後的 Camera Extensions 推出新程式庫,以便在支援的裝置上存取特效。這個程式庫正在運作。
  • 新增 Camera View 類別。這個程式庫正在運作。