CameraX

CameraX は、アプリにカメラ機能を簡単に追加できるようにする Jetpack サポート ライブラリです。互換性の修正や回避策などが多数含まれており、さまざまなデバイスで一貫した開発エクスペリエンスを提供します。

androidx.camera グループ内のすべてのアーティファクトのリストを以下に示します。

アーティファクト 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
camera-camera2 1.6.1 - - 1.7.0-alpha02
camera-core 1.6.1 - - 1.7.0-alpha02
camera-compose 1.6.1 - - 1.7.0-alpha02
camera-effects 1.6.1 - - 1.7.0-alpha02
camera-extensions 1.6.1 - - 1.7.0-alpha02
camera-feature-combination-query - - - 1.5.0-alpha06
カメラの機能の組み合わせのクエリ - Google Play 開発者サービス - - - 1.5.0-alpha06
camera-lifecycle 1.6.1 - - 1.7.0-alpha02
camera-mlkit-vision 1.6.1 - - 1.7.0-alpha02
camera-view 1.6.1 - - 1.7.0-alpha02
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.6.1 - - 1.7.0-alpha02
このライブラリの最終更新日: 2026 年 7 月 1 日

デバイスのテスト

CameraX はラボの多くのデバイスでテストされています。現在ラボにあるデバイスの一覧を確認するには、CameraX のラボでテスト済みのデバイスをご覧ください。

依存関係の宣言

CameraX への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

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

Kotlin

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

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

Camera Viewfinder Compose バージョン 1.0

バージョン 1.0.0-alpha02

2024 年 6 月 12 日

androidx.camera:camera-viewfinder-compose:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

バージョン 1.0.0-alpha01

2024 年 5 月 14 日

androidx.camera:camera-viewfinder-compose:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しいライブラリ。このライブラリには、CameraX および Camera2 で使用できる Compose ネイティブの Viewfinder コンポーザブルが導入されています。コンポーザブルな Viewfinder は、さまざまなアスペクト比とタッチイベントの処理をサポートしています。

カメラ ビューファインダー バージョン 1.4

バージョン 1.4.0-alpha07

2024 年 6 月 12 日

androidx.camera:camera-viewfinder:1.4.0-alpha07 と androidx.camera:camera-viewfinder-core:1.4.0-alpha07 がリリースされました。バージョン 1.4.0-alpha07 に含まれる commit については、こちらをご覧ください。

バージョン 1.4.0-alpha06

2024 年 5 月 14 日

androidx.camera:camera-viewfinder:1.4.0-alpha06 と androidx.camera:camera-viewfinder-core:1.4.0-alpha06 がリリースされました。バージョン 1.4.0-alpha06 に含まれる commit については、こちらをご覧ください。

API の変更

  • 基盤となる実装をより反映するため、Viewfinder の ImplementationMode 列挙型の名前を変更し、TransformationInfo.sourceRotation の固定定数を追加しました。(Ic6149)
  • ズーム操作の状態をカプセル化する ZoomGestureDetector.ZoomEvent を追加しました。(I84cdf)

バージョン 1.7

バージョン 1.7.0-alpha02

2026 年 7 月 1 日

androidx.camera:camera-*:1.7.0-alpha02 がリリースされました。バージョン 1.7.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraXViewfinder は、ピンチ操作によるズームとタップ操作によるフォーカスをサポートする組み込みジェスチャーをサポートするようになり、画面フラッシュとストリーム状態のサポートが追加されました。タップしてフォーカスした結果をモニタリングできるように、FocusState が viewfinder-core で公開されました。(I66a17、b/522549890)
  • SessionConfig.Builder、HighSpeedVideoSessionConfig.Builder、ExtensionSessionConfig.Builder に isAutoRotationEnabled を追加し、それらの Kotlin DSL ファクトリ関数を導入しました。これにより、デバイスのセンサーに基づいて適切な回転を自動的に設定できます。(I5b4a3、b/510752515)
  • EMBEDDED モードで OpenGL パイプラインを使用するアプリをサポートするため、TransformationMode プロパティを TransformationInfo に追加しました。(Id1de1、b/487826941)
  • CameraInfo に isNightModeIndicatorSupported() と getNightModeIndicator() を追加して、環境条件がナイトモードの条件を満たすタイミングを判断します。(Iae47b、b/499389465)
  • GPU ベースの ImageAnalysis をサポートするため、ImageAnalysis.OUTPUT_IMAGE_FORMAT_PRIVATE と ImageProxy.getHardwareBuffer() を公開 API として公開しました。(I41cb3、b/496022391、b/492934501)
  • ExtensionsManager#getExtensionEnabledCameraSelector が非推奨になりました。拡張モードを有効にするには、新しい ExtensionSessionConfig API を使用してください。(I2b336、b/473715607)
  • 同時カメラ合成中のカメラフレームのビジュアル スタイリングのサポートを追加しました。次の項目をカスタマイズできるようになりました。
  • 角の丸み: setRoundedCornerRatio(float) を使用して、フレームの端に正規化された丸み(0.0 ~ 1.0)を適用します。
  • 枠線: setBorderWidthRatio(float) と setBorderColor(int) を使用して、厚さが一定の装飾フレームを追加します(I18a07、b/366349205)
  • CompositionSettings を更新して負でない z オーダーを適用し、ConcurrentCamera.setCompositionSettings に検証を追加して、有効な合成モードで正しい数の設定で呼び出されるようにしました。(If660d、b/496951658)
  • CameraExtensionsInfo に getNightModeIndicator() と isNightModeIndicatorAvailable() を追加しました。これにより、カメラ拡張機能を使用する際に、現在の環境が夜間モードの条件を満たしているかどうかをアプリでモニタリングできるようになります。(I62bb4、b/499389465)
  • VideoCapture で QHD 動画品質のサポートを追加しました。(I0ac20、b/501305592)
  • デベロッパーが明示的なオーディオ チャンネル数を設定できるように、Recorder.Builder.setTargetAudioChannelCount(int) と Recorder.getTargetAudioChannelCount() を追加しました。(I6bee0、b/441895100)
  • ターゲット オーディオ エンコードのビットレートを設定できる Recorder.Builder.setTargetAudioEncodingBitRate(int) を追加しました。(I29062、b/241151504)
  • ConcurrentCamera.setCompositionSettings API を追加し、ライフサイクルがバインドされた後で、アプリが現在のカメラのコンポジションを動的に更新できるようにしました。また、CompositionSettings.Builder の新しい setZOrder API を使用すると、重なり合うカメラ ストリームのレンダリング順序を正確に制御できます。(I90528、b/473702287)
  • エンコード形式を細かく制御するための API を導入しました。デベロッパーは、現在試験運用中の Recorder.getSupportedVideoMimeTypes() と getSupportedAudioMimeTypes() を使用して、デバイスでサポートされている形式を検出できるようになりました。優先形式は、Recorder.Builder.setVideoMimeType() と setAudioMimeType() を使用して明示的に構成できます。また、Recorder.getVideoCapabilities(CameraInfo, String) を使用すると、選択したコーデックでサポートされている品質やダイナミック レンジなど、カメラ固有の機能を照会できます。(I4620e、b/491319384)
  • 自動デバイス回転リスナーを無効にできるように、CameraController.setAutoRotationEnabled(boolean) を追加しました。(Ia0c03、b/449573627)
  • 新しい setLockingMode API を介して、FocusMeteringAction に AE/AWB ロックのサポートを追加しました。また、フォーカスをロックせずに 3A 領域を更新できるため、フォーカス領域を更新しながらカメラを連続オートフォーカス モードに維持できます。(I6416f、b/481624745)

バグの修正

  • compileSdk 37 の要件を削除(If78b4)
  • OpenGL パイプラインが CameraX によって有効化され、より多くの UseCases またはサーフェス処理をバインドする場合の EMBEDDED モードにおける CameraXViewfinder 変換の問題を修正しました。(I3e637、b/487826941)
  • 非推奨の getExtensionEnabledCameraSelector API ではなく ExtensionSessionConfig を使用するようにテストとアクティビティを更新しました。(I765d8、b/473715607)
  • コンパイル エラー「Cannot access class 'ListenableFuture'」を修正しました。(Ic8cba、b/497571473)
  • Compose の compileSdk を API 37 に更新しました。つまり、Compose を使用する場合は、AGP の最小バージョン 9.2.0 が必要になります。(Id45cd、b/413674743)

バージョン 1.7.0-alpha01

2026 年 3 月 11 日

androidx.camera:camera-*:1.7.0-alpha01 がリリースされました。バージョン 1.7.0-alpha01 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraController.setSessionConfig() API を公開しました。これにより、CameraController で直接公開されていない高度な UseCase 構成にカスタム SessionConfig を提供できます。SessionConfig が有効な場合、CameraController の他の構成メソッドは無効になります。(I35cf1、b/448525636)

バグの修正

  • ライブラリを Java 11 ターゲットを使用するように移行します。つまり、生成されるバイトコードは Java 11(クラスファイル バージョン 55)となり、ライブラリを使用するために脱糖が必要になる可能性があります(If4c2a、b/457821470)
  • 出力画像の回転が有効で、初期の相対回転が 0 度の場合に、画像が正しく回転しない ImageAnalysis のバグを修正しました。(Id46c2、b/487160584)

カメラ バージョン 1.6

バージョン 1.6.1

2026 年 5 月 6 日

androidx.camera:camera-*:1.6.1 がリリースされました。バージョン 1.6.1 にはこれらの commit が含まれています。

バグの修正

  • CameraX 1.6.0 を使用しているときに「クラス ListenableFuture にアクセスできません」というコンパイル エラーが発生する問題を修正しました。(Ic8cba、b/497571473)

バージョン 1.6.0

2026 年 3 月 25 日

androidx.camera:camera-*:1.6.0 がリリースされました。バージョン 1.6.0 にはこれらの commit が含まれています。

1.5.0 以降の重要な変更:

1. 高性能な統合カメラ スタックに移行

  • CameraX は、Google Pixel カメラを支える最新の高性能スタックである CameraPipe を使用するようになりました。この移行により、アーキテクチャの効率が向上し、高度な計算写真機能をデベロッパー エコシステムに導入するためのスケーラブルな基盤が提供されます。

2. Media3 多重化ツールの統合

  • CameraX は、VideoCapture API 内で Media3 Muxer をデフォルトで統合するようになりました。この移行には次のようなメリットがあります。
    • パフォーマンスの向上: 動画処理と多重化の効率が向上しました。
    • クラッシュに対する復元性: 動画ファイルの破損に対する保護が強化され、録画中にアプリがクラッシュした場合でもデータが保持されるようになりました。

3. Feature Group の改善

4. SessionConfig API の安定化

  • SessionConfig が試験運用版から完全に安定した公開 API に移行しました。これには SessionConfig と HighSpeedVideoSessionConfig が含まれます。新しい ExtensionSessionConfig AP を使用して CameraX 拡張機能を実装できるようになりました。新しい isSessionConfigSupported API が導入され、デベロッパーは、ライフサイクルにバインドする前に、特定のユースケースと機能(HDR、手ぶれ補正、特定の解像度、CameraX 拡張機能、スローモーションなど)の組み合わせがデバイスでサポートされているかどうかをクエリできるようになりました。

バグの修正

  • 特定の Android 17(API 37)以降のデバイスで発生するクラッシュを修正しました。これらのデバイスが、CameraX バージョン 1.5.1 以前では認識されていなかった新しいダイナミック レンジ プロファイル(STANDARD_SMPTE_2094_50(ID 8192)など)を公開した場合、ライブラリは以前、これらの ID を適切に処理できず、ProcessCameraProvider.bindToLifecycle() 中に NullPointerException または IllegalArgumentException が発生していました。この修正により、CameraX は認識できないダイナミック レンジ プロファイルを適切に無視できるようになり、クラッシュを防ぎ、前方互換性を維持できます。これらの新しいプロファイルを公開するデバイスでこの問題を回避するには、CameraX 依存関係をバージョン 1.5.2 または 1.6.0(以降)に更新してください。詳しくは、問題 519796838 をご覧ください。(Ibd7b5)
  • PREVIEW_STABILIZATION を VideoCapture とともに使用する場合、特徴グループ API で一貫した結果が得られるようになりました。プレビュー ユースケースがアクティブでない場合に結果が一致しないバグを修正しました。(Ifed82、b/449913903)
  • サポートされていない優先機能が誤って利用可能になる問題を修正しました。必要なユースケースが満たされていない場合、機能が正しくフィルタされるようになりました。(I38db8、b/449532342)
  • Samsung Galaxy S6 で動画検索結果がちらつく問題を修正しました。(I612d9、b/235127608)
  • クエリ内の SessionConfig が他の機能ですでに構成されている場合、CameraInfo#isFeatureGroupSupported が PREVIEW_STABILIZATION に対して誤って true を返す問題を修正しました。(I2c355c、b/437816469)
  • Samsung Z Fold 4 デバイスから問題のある YUV 形式の出力サイズを除外しました。これらの出力サイズを使用すると、受信した画像に歪みが生じます。(I776bf、b/460322307)
  • Samsung A53 で、VideoCapture ユースケースがバインドされている場合、トーチを有効にした画像キャプチャが失敗することがあるデバイス固有の問題を修正しました。(I0f183、b/458197367)
  • 一部のデバイスで、超広角カメラでフラッシュを使用すると露出不足の画像になることがある問題を修正しました。(Ib7530、b/444590340)
  • ExifInterface 依存関係を更新し、0xFF パディングを含む JPEG の解析の修正を含めました。これにより、JPEG エンコーダがマーカーの前にフィルバイトを追加するデバイスで、画像キャプチャの失敗が解決されます。(I0eb49)

バージョン 1.6.0-rc01

2026 年 2 月 25 日

androidx.camera:camera-*:1.6.0-rc01 がリリースされました。バージョン 1.6.0-rc01 にはこれらの commit が含まれています。

バージョン 1.6.0-beta02

2026 年 2 月 11 日

androidx.camera:camera-*:1.6.0-beta02 がリリースされました。バージョン 1.6.0-beta02 にはこれらの commit が含まれています。

バグの修正

  • ImageCapture OUTPUT_FORMAT_RAW_JPEG のインメモリ キャプチャの IllegalArgumentException の問題を修正しました。(Id4eec、b/479990902)
  • AndroidX Media3 muxer に移行しました。これにより、1: 予期しない中断やアプリの終了時の動画の破損、2: 動画をプロキシ ファイル記述子に保存する際のクラッシュが修正されました。(I23b63、b/433649708、b/264812009、b/475750115)

バージョン 1.6.0-beta01

2026 年 1 月 28 日

androidx.camera:camera-*:1.6.0-beta01 がリリースされました。バージョン 1.6.0-beta01 にはこれらの commit が含まれています。

バグの修正

  • CameraX 1.6.0-alpha で、LiveData オブジェクトが更新された型データを受信できない CameraExtensionsInfo の現在の型に関する問題を修正しました。(I2c7a5)
  • ExifInterface 依存関係を更新し、0xFF パディングを含む JPEG の解析の修正を含めました。これにより、JPEG エンコーダがマーカーの前にフィルバイトを追加するデバイスで画像キャプチャが失敗する問題を解決します。(I0eb49)

バージョン 1.6.0-alpha02

2025 年 12 月 17 日

androidx.camera:camera-*:1.6.0-alpha02 がリリースされました。バージョン 1.6.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • セッション構成で動画の手ぶれ補正機能を指定するためのグループ化可能な機能を追加しました。デベロッパーは、動画の手ぶれ補正を必須または優先の機能としてリクエストできるようになりました。これにより、UHD_RECORDING や PREVIEW_STABILIZATION などのグループ化可能な他の機能と連携させることができます。(Ic6757、b/419766630)
  • セッション構成で動画録画の品質を示すグループ化可能な機能を追加しました。デベロッパーは、HDR や 60 FPS などのグループ化可能な他の機能と合わせて、特定の画質(UHD、FHD など)を必須または推奨の機能としてリクエストできるようになりました。(Ib5cd3、b/437820285)
  • SessionConfig で CameraEffect と機能グループ API の両方を使用するサポートを追加しました。(I17f18、b/406370934)
  • SessionConfig で ImageAnalysis と機能グループ API の両方を使用するサポートを追加しました。(I87833、b/406371720)

API の変更

  • ExtensionSessionConfig.Builder の addUseCase セッター関数を追加し、ExtensionSessionConfig の不足していたゲッターを追加しました。(I71e07、b/453988621)
  • ExtensionsManager.getInstanceAsync の一時停止バージョンである ExtensionsManager.getInstance API を追加しました(I3a0a9、b/452208792)
  • isFeatureGroupSupported の名前を isSessionConfigSupported に変更し、任意の型の SessionConfig をサポートするようにしました。(I21616、b/448781299)
  • ExtensionsManager を Kotlin 実装に変換しました。(I73091、b/452208792)
  • SessionConfig がカメラの選択に影響する可能性がある場合に CameraInfo を取得する CameraProvider#getCameraInfo(CameraSelector, SessionConfig) を追加しました。たとえば、ExtensionSessionConfig を使用する場合です。(Ic548c、b/451891648)
  • ExtensionSessionConfig API を公開しました。アプリは ExtensionSessionConfig を作成し、それを使用して拡張機能セッションを作成できるようになりました。(I6354c、b/448524373)
  • androidx.camera.video.HighSpeedVideoSessionConfig API は試験運用版ではなくなり、完全に安定した公開 API になりました。(I492d4、b/447558239)
  • androidx.camera.core.SessionConfig API は試験運用版ではなくなり、完全に安定した公開 API になりました。(Idc87a、b/447558437)

バグの修正

  • Android 17 以降で IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: が原因でクラッシュする問題を修正しました。(Ibd7b5、b/463465353)
  • Samsung Z Fold 4 デバイスから問題のある YUV 形式の出力サイズを除外しました。これらの出力サイズを使用すると、受信した画像に歪みが生じます。(I776bf、b/460322307)
  • Camera2Interop API を介して設定された場合に CaptureRequest.FLASH_MODE が適用されない問題を修正しました。(I0004c、b/459608684)
  • Samsung A53 で、VideoCapture ユースケースがバインドされている場合、トーチを有効にした画像キャプチャが失敗することがあるデバイス固有の問題を修正しました。(I0f183、b/458197367)
  • 一部のデバイスで、超広角カメラでフラッシュを使用すると露出不足の画像になることがある問題を修正しました。(Ib7530、b/444590340)

バージョン 1.6.0-alpha01

2025 年 10 月 22 日

androidx.camera:camera-*:1.6.0-alpha01 がリリースされました。バージョン 1.6.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • CameraX は、Google Pixel カメラアプリでも使用されている統合された高性能カメラスタックに移行しました。CameraPipe と呼ばれるこの新しいスタックは、CameraX チームと Google Pixel カメラチームの共同開発によるものです。これにより、すべての改善が共有され、CameraX ユーザーと Google Pixel カメラアプリの両方にメリットがもたらされます。

API の変更

  • カメラの動的な追加/削除の検出のための新しい API を追加しました。詳細については、CameraPresenceListener API をご覧ください。(I41ead、b/427182232、b/419441394)

バグの修正

  • PREVIEW_STABILIZATION を VideoCapture とともに使用する場合、特徴グループ API で一貫した結果が得られるようになりました。これにより、Preview ユースケースがアクティブでない場合に結果が不整合になるバグが修正されます。(Ifed82、b/449913903)
  • サポートされていない優先機能が誤って利用可能になる問題を修正しました。必要なユースケースが満たされていない場合、機能が正しくフィルタされるようになりました。(I38db8、b/449532342)
  • Samsung Galaxy S6 で動画検索結果がちらつく問題を修正しました。(I612d9、b/235127608)
  • クエリ内の SessionConfig が他の機能ですでに構成されている場合、CameraInfo#isFeatureGroupSupported が PREVIEW_STABILIZATION に対して誤って true を返す問題を修正しました。(I2c355c、b/437816469)

カメラ バージョン 1.5

バージョン 1.5.3

2026 年 1 月 28 日

androidx.camera:camera-*:1.5.3 がリリースされました。バージョン 1.5.3 にはこれらの commit が含まれています。

バグの修正

  • ExifInterface の依存関係を 1.4.2 に更新しました。これにより、マーカーの前に追加の(許可された)0xFF バイトを含む JPEG を生成するデバイスで発生する画像キャプチャの失敗が修正されます。(I16df4)

バージョン 1.5.2

2025 年 12 月 4 日

androidx.camera:camera-*:1.5.2 がリリースされました。バージョン 1.5.2 にはこれらの commit が含まれています。

バグの修正

  • Android 17 以降で IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: が原因でクラッシュする問題を修正しました。(Ic9184)
  • PREVIEW_STABILIZATION 機能が VideoCapture ユースケースで追加され、Preview ユースケースでは追加されていない場合に、特徴グループ API の結果に一貫性がなくなるバグを修正しました。(Ifed82)
  • 機能がサポートされるために必要なユースケースがないにもかかわらず、優先機能がフィルタリングされない問題を修正しました。(I38db8)

バージョン 1.5.1

2025 年 10 月 8 日

androidx.camera:camera-*:1.5.1 がリリースされました。バージョン 1.5.1 にはこれらの commit が含まれています。

バグの修正

  • 同時カメラ合成モードで CameraEffect をサポートします。この効果はコンポジションの出力に適用されます。同時カメラ コンポジション モードでエフェクトが設定されている場合、VideoCapture の mirrorMode は無視されます。(If3d00、b/425565129)
  • 同時カメラ合成モードでセカンダリ カメラに mirrorMode が正しく適用されない問題を修正しました。(I686cd、b/446430827)
  • 同時カメラ非合成モードで Preview、ImageCapture、VideoCapture のバインディングをサポートします。(Ib410a、b/443009871)
  • ImageCapture や VideoCapture などの UseCase が再作成された場合に、ターゲットの回転情報が失われる問題を修正しました。デバイスを回転させた後に imageCaptureMode などの設定を変更すると、画像や動画の向きが正しくなくなる可能性があります。(I477c8、b/444734537)
  • プレビューで 16:9 の解像度を選択できず、VideoCapture が QUALITY_1080P で録画できない問題を修正しました。この問題は、内部の StreamSharing 機能が有効になっているときに(4 つの UseCase が同時にバインドされている場合など)、デフォルトのプレビュー解像度構成を使用している場合に発生しました。(I493cb、b/440364875)
  • SurfaceProcessor のシャットダウン後にエフェクトが有効化されるとクラッシュする問題を修正しました(I2c450、b/414150174)
  • 初期の UseCase で最大解像度を選択した場合に IllegalStateException が発生し、他の UseCase がバインドされなくなる CameraController のバグを修正しました。(Ifb758、b/440374234)
  • エラー メッセージが報告されずにサイレント フェイルの問題を引き起こす Nokia 7 Plus の問題のある YUV_420_888 出力サイズを除外しました。(I3af47、b/436524501)
  • CameraInfo#isFeatureGroupSupported が PREVIEW_STABILIZATION 機能に対して誤って true を返すことがある問題を修正しました。これは、他の機能ですでに構成されている SessionConfig を使用してクエリを実行すると発生することがあります。(I2c355、b/437816469)
  • 古い API レベルや SurfaceView の問題があるデバイスで、そのようなシナリオではデフォルトで TextureView になるようにして、CameraXViewfinder の安定性を改善しました。このフォールバック メカニズムは新しいデフォルトですが、プログラムでオーバーライドできます。(Ieb476、b/437496463)
  • PreviewView で、関連付けられたアクティビティがガベージ コレクションされるのを妨げる可能性のあるメモリリークを修正しました。これは、前の SurfaceRequest が処理される前に新しい SurfaceRequest が到着した場合に発生します。(I4aa0b、b/443112512)
  • Huawei P smart、Infinix Hot 40i、Realme C53 で高速/スローモーション録画が失敗する問題を修正しました。(40a668e、b/442984200)

バージョン 1.5.0

2025 年 9 月 10 日

androidx.camera:camera-*:1.5.0 がリリースされました。バージョン 1.5.0 にはこれらの commit が含まれています。

1.4.0 以降の重要な変更:

  • ハイスピード撮影とスローモーション撮影: ハイスピード(120/240 fps)とスローモーションの動画撮影を最小限のコードで簡単に統合できます。詳しくは、Recorder#getHighSpeedVideoCapabilities(CameraInfo) と HighSpeedVideoSessionConfig をご覧ください。
  • SessionConfig API と FeatureGroup API: 新しい SessionConfig API を使用すると、カメラ セッションを構成し、HLG(HDR)、UltraHDR、60 FPS、プレビューの手ぶれ補正など、複数の機能を安全に同時に有効にできます。優先度付きの優先機能グループを設定して、CameraX が最適なサポート対象の組み合わせを決定できるようにすることもできます。詳しくは、SessionConfig.Builder#setPreferredFeatureGroup、SessionConfig.Builder#setRequiredFeatureGroup、CameraInfo#isFeatureGroupSupported(SessionConfig) をご覧ください。
  • 決定論的フレームレート API: CameraInfo.getSupportedFrameRateRanges(sessionConfig) を使用してクエリを行い、SessionConfig.setExpectedFrameRateRange を使用して正確でサポートされているフレームレートを設定することで、setTargetFrameRate の以前の制限に対処します。
  • カメラ拡張機能: 拡張機能で UltraHDR 形式がサポートされるようになりました。ImageCapture.getImageCaptureCapabilities(cameraInfo).getSupportedOutputFormats() にチェックを入れて、ImageCapture.Builder.setOutputFormat で有効にします。拡張機能が有効になっている場合、ズーム率とプレビューの手ぶれ補正機能が反映されるようになりました。
  • トーチの強さ: CameraControl.setTorchStrengthLevel を使用してトーチの強さを調整します。
  • Low Light Boost モード: 次の API で Low Light Boost モード(CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY)を有効にできます。CameraInfo#isLowLightBoostSupported、CameraInfo#getLowLightBoostState、CameraControl#enableLowLightBoostAsync を参照してください。
  • 動画キャプチャ: 録画中にストレージの容量が不足した場合に VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE がトリガーされるようになりました。PendingRecording.withAudioEnabled(boolean initialMuted) を使用すると、音声録音の初期ミュート状態を制御できます。
  • 画像キャプチャ: ImageCapture での DNG(RAW)形式と JPEG + DNG(RAW)形式のサポート。RAW のサポートについては、ImageCaptureCapabilities(CameraInfo).getSupportedOutputFormats() をご確認ください。RAW+DNG キャプチャ用に複数の OutputFileOptions を持つオーバーロードされた takePicture API を使用します。
  • 画像分析: ImageAnalysis で NV21 形式をサポート。ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21) で有効にします。

バージョン 1.5.0-rc01

2025 年 8 月 13 日

androidx.camera:camera-*:1.5.0-rc01 がリリースされました。バージョン 1.5.0-rc01 には、これらの commit が含まれています。

バグの修正

  • デフォルトの minSdk を API 21 から API 23 に移行(Ibdfca、b/380448311、b/435705964、b/435705223)
  • ローライト ブースト自動露出モードの 10 ビット出力制限を削除しました。アプリは、サポートされているデバイスで両方の機能を同時に有効にできるようになりました。(I5a638)
  • UniSoc チップセットを搭載したデバイスで画像をキャプチャするとハングアップする問題を解決しました。この問題は、すべてのストリームが 1280x720 の解像度に設定されている状態で、VideoCapture、Preview、ImageCapture が同時に使用された場合に発生しました。(Ia00c4、b/380802479)
  • 高速/スローモーション録画に高速フレームレートが設定されていない場合にプレビュー画面が黒くなる問題を修正しました。(cdf0ff2e9)
  • getViewportAspectRatioInt のエラー処理とロギングを改善(82fca18)

バージョン 1.5.0-beta02

2025 年 7 月 16 日

androidx.camera:camera-*:1.5.0-beta02 がリリースされました。バージョン 1.5.0-beta02 には、これらの commit が含まれています。

API の変更

  • すべてのデバイスで組み合わせとしてサポートされない可能性がある高品質な機能のグループを、より直感的かつ正確に設定またはクエリするための新しい API を追加しました。SessionConfig に、機能のグループを必須または推奨として示す新しい API が追加されました。CameraInfo.isFeatureGroupSupported API を使用すると、SessionConfig をバインドする前に、機能グループがサポートされているかどうかを確認できます。SessionConfig では、セッション構成がバインドされたときに最終的に選択された機能を知るためのリスナーを設定することもできます。(Ie4d60)
  • 新しい API SessoinConfig.Builder.setFrameRateRange(Range<Integer>) と CameraInfo.getSupportedFrameRateRanges(SessionConfig) を追加しました。これにより、デベロッパーは特定の SessionConfig によって制約された保証付きサポート フレームレートをクエリし、そのフレームレートを SessionConfig に適用できます。(Ieacf7)
  • 新しい SessionConfig API を導入しました。この API には、ユースケース、セッション パラメータ、CameraEffect、ViewPort などを構成するためのより優れた抽象化が含まれています。SessionConfig を LifecycleOwner にバインドすると、カメラ セッションが開き、指定されたユースケースとセッション パラメータを使用して構成され、指定された CameraEffect と ViewPort が適用されます。新しい SessionConfig を同じ LifecycleOwner に更新する場合、バインド解除や unbindAll を最初に呼び出す必要はなく、新しい Sessionconfig をバインドするだけで済みます。(Iedfc3)
  • 高速/スローモーション動画を録画するための新しい API を追加しました。詳細については、HighSpeedVideoSessionConfig API をご覧ください。(Ia16f3)

バグの修正

  • RAW 機能がない一部のデバイスで ImageCaptureCapabilities#getSupportedOutputFormats() API が RAW 形式をサポートしていると報告する問題を修正しました。(Ibcadb)
  • PreviewView が使用されている場合、CameraEffect が有効になっている場合、または 4 つのユースケース(StreamSharing)をバインドしている場合に発生するメモリリークを修正しました(I87468)。
  • AssertionError: 無効な内部音声状態: アイドリングにより、動画録画がクラッシュする問題を修正しました。(I38d4b、b/414259796)
  • アプリが外部ディスプレイで実行され、デバイスが横向きの場合、PreviewView のプレビューが引き伸ばされるか横向きになる問題を修正しました(Ia917a)
  • カメラ ストリームが Preview と VideoCapture の間で共有されている場合に、プレビューの手ぶれ補正の設定が正しく適用されない問題を修正しました。(I5430e)
  • CameraXViewfinder が、基盤となる Viewfinder でのサーフェスの置き換えを適切に処理するようになりました。これは、API レベル 28 以下の EXTERNAL ビューファインダーが画面外に移動した場合や、CameraXViewfinder(ImplementationMode を含む)が moveableContentOf() の一部である場合などのシナリオを対象としています。基盤となる ViewfinderSurfaceSession を存続できない場合、CameraXViewfinder は現在の CameraX SurfaceRequest を無効にし、CameraX が新しい Surface を使用できるようにします。(I79432)
  • Android 10/11 で、変換オペレーション(スケールや変換など)が早すぎるタイミングで適用されたために EXTERNAL CameraXViewfinder が引き伸ばされたり、正しく表示されなかったりする問題を修正しました。システムは、レイアウト フェーズでこれらの変換を適用する前に Surface が作成されるのを待つようになり、正しい出力が保証されるようになりました。(Icc77c)
  • コンポーザブル CameraXViewfinder が、Compose の Pager とともに正しく機能するようになりました。この変更により、AndroidView の onReset コールバックを実装してコンポーザブルを正常にリセットできるようになり、EMBEDDED と EXTERNAL の両方の実装がサポートされます。(I0d9be)
  • カメラ プロバイダをシャットダウンせずにライフサイクル オーナーからユースケースのバインドを解除したときに発生するライフサイクル オーナーのリークを修正しました。

バージョン 1.5.0-beta01

2025 年 5 月 7 日

androidx.camera:camera-*:1.5.0-beta01 がリリースされました。バージョン 1.5.0-beta01 にはこれらの commit が含まれています。

API の変更

  • Kotlin 2.0 でリリースされたプロジェクトを使用するには、KGP 2.0.0 以降が必要です(Idb6b5)
  • ContentScale と Alignment をファインダーで使用して、androidx.compose.foundation.Image の動作と同様に、表示されたサーフェスをコンテナ内でスケーリングして配置できるようになりました。(Ibcea3)
  • TransformationInfo にすべての引数のデフォルト値が設定されました。これにより、TransformationInfo なしでファインダーを作成できるようになります。この場合、デフォルトでソースの回転は 0、ソースのミラーリングはなし、切り抜き矩形はなしになります。(I2b1b2)
  • LifecycleCameraProvider を追加しました。これは、カスタマイズされたコンテキストで構成することで、仮想デバイスのカメラへのアクセスなどの機能に対して異なる構成でインスタンス化できるカメラ プロバイダです。(Ia2992)

バグの修正

  • Samsung SM-E556B デバイスで TEMPLATE_RECORD を使用する別のストリームで ImageAnalysis を使用している場合に、プレビューがフリーズする問題を修正しました。(Ic0e62、b/409478042)
  • Samsung SM-M556B デバイスで TEMPLATE_RECORD を使用する別のストリームで ImageAnalysis を使用している場合にプレビューがフリーズする問題を修正しました。(Ic1a6a、b/395822788)
  • Android 15 の Google Pixel デバイスでズーム関連の操作を行う際に、Extensions の夜間モードで AssertError が発生する問題を修正しました。(I27a5d、b/401460276)
  • CameraController を使用する際に ML Kit Analyzer のバウンディング ボックスの座標が正しくない問題を修正しました。(Iae91b、b/409808510)

バージョン 1.5.0-alpha06

2025 年 2 月 26 日

androidx.camera:camera-*:1.5.0-alpha06 がリリースされました。バージョン 1.5.0-alpha06 に含まれる commit については、こちらをご覧ください。

API の変更

  • トーチの明るさをカスタマイズできるように CameraInfo.getTorchStrengthLevel、CameraInfo.getMaxTorchStrengthLevel、CameraControl.setTorchStrengthLevel を追加しました(I00878)
  • ユーザーが PreviewView タップしてフォーカス イベントの自動キャンセル動作を制御できるように、新しい API CameraController#setTapToFocusAutoCancelDuration が追加されました。デフォルトでは、CameraX は 5 秒後にフォーカス イベントをキャンセルします(つまり、カメラのフォーカスがリセットされます)。この API を使用すると、その期間を変更したり、自動キャンセルを完全に無効にしたりできます。(Icf59a)
  • FLASH_STATE_READY の名前が NOT_FIRED に変更され、他の FlashState 定数名が簡略化され、読みやすくなりました。(I8771d)
  • Low Light Boost API を公開しました。Android 15 以降を搭載したデバイスは、低照度ブーストをサポートできます。この機能は、暗い場所でプレビュー、動画、画像分析のストリームの明るさを自動的に調整します。アプリは新しい API を使用して、次のことができます。1. CameraInfo#isLowLightBoostSupported を使用して、機能が利用可能かどうかを確認します。2. デバイスがこのモードをサポートしている場合は、CameraControl#enableLowLightBoostAsync を使用してモードを有効にします。3. CameraInfo#getLowLightBoostState を使用して、ローライト ブーストの状態をモニタリングします。(I937ed)
  • カメラ機能の組み合わせのクエリで、カメラ 2 以外のクエリを高速化するための互換性クラスを追加しました。(Ie97ee)
  • CameraController タップしてフォーカス イベントの場合、新しい API getTapToFocusInfoState() は、対応するタップ位置も TapToFocusInfo クラスの LiveData を返すことで公開するようになりました。以前の getTapToFocusState() API を返す LiveData<Integer> は、新しい API を優先して非推奨になりました。(I238d2)

バグの修正

  • 拡張機能でプレビューの手ぶれ補正を有効にすると、プレビューの手ぶれ補正が適用されない問題を修正しました。(I24ad7)
  • CameraX がフォーカス イベントを自動的にキャンセルしたときに、CameraController のフォーカス状態イベントが TAP_TO_FOCUS_NOT_STARTED にリセットされない問題を修正しました。この自動キャンセルはデフォルトで 5 秒後に発生します。(I31954)
  • 未リリースの画像リソースが原因で、複数回の撮影後にゼロシャッター ラグ(ZSL)を使用するとプレビューがフリーズする問題を修正しました。(Ic3c2a)
  • 一部のデバイスで、パイプラインに OpenGL が含まれる場合に UHD 動画が赤みがかって表示される問題を修正しました。(Idcedc)

バージョン 1.5.0-alpha05

2025 年 1 月 15 日

androidx.camera:camera-*:1.5.0-alpha05 がリリースされました。バージョン 1.5.0-alpha05 に含まれる commit については、こちらをご覧ください。

API の変更

  • QualitySelector に基づいて選択された画質を確認するには、VideoCapture.getSelectedQuality() を追加します。(I70508、b/204288986)
  • ImageCapture.OnImageCapturedCallback API で画像キャプチャが呼び出された場合、返された ImageProxy の ImageInfo を使用して、新しい ImageInfo.getFlashState() API を介してフラッシュが発光したかどうかを確認できるようになりました。(Id2c61、b/380527406)
  • ImageAnalysis の OUTPUT_IMAGE_FORMAT_NV21 出力形式のサポートを追加しました。(I484ab)
  • featurecombinationquery アーティファクトの試験運用版アノテーションを削除(I4427f)
  • 拡張モードが有効になっている場合、拡張機能固有の特性によって CameraControl で許可されるズーム比率の範囲を調整します。(I85af1)

バグの修正

  • Android 15 関連の API を使用するために compileSdk を 35 にアップグレードしました。CameraX ライブラリを使用するアプリも、compileSdk 構成設定をアップグレードする必要があります。(Ic80cd)
  • このライブラリは、型使用である JSpecify nullness アノテーションを使用するようになりました。Kotlin を使用している場合、次のコンパイラ引数を使用して正しい使用法を適用する必要があります。-Xjspecify-annotations=strict(これは Kotlin コンパイラのバージョン 2.1.0 以降のデフォルトです)。(Idc6c6、b/326456246)

バージョン 1.5.0-alpha04

2024 年 12 月 11 日

androidx.camera:camera-*:1.5.0-alpha04 がリリースされました。バージョン 1.5.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • ImageCapture.Builder#setOutputFormat と ImageCaptureCapabilities#getSupportedOutputFormats を安定版 API として公開しました(Ieb04a)
  • VideoCapture が Lifecycle にバインドされたときに解決情報を取得するには、VideoCapture.getResolutionInfo() を追加します。(Icb478)
  • PreviewView.getScreenFlash と PreviewView.setScreenFlashOverlayColor を安定版 API として公開しました。(I74fee)

バグの修正

  • Vivo 1610 デバイスで、暗い場所でフラッシュを使って写真を撮影するとキャプチャに失敗する問題を修正しました。(I366f4)
  • Redmi Note 6 Pro で、画像をキャプチャした後にライトが予期せずオフになる問題を修正しました。(I2e0e8、b/377144569)
  • Pixel Android 15 デバイスで、拡張機能のナイトモードで、カメラが近くの被写体にピントを合わせるまで静止画をキャプチャできない問題を修正しました。(I228d4)
  • 拡張機能が有効で VideoCapture が一緒にバインドされている場合に、静止画のキャプチャが機能しない問題を修正しました。(I5c745)
  • デバイスがサポートできる場合、Extensions の UltraHDR 静止画キャプチャのサポートを有効化しました。(I48300)
  • TCL デバイスで CameraEffect を使用して画像をキャプチャする際のフラッシュのタイミングに関する問題を修正しました。(I7698c)

バージョン 1.5.0-alpha03

2024 年 10 月 30 日

androidx.camera:camera-*:1.5.0-alpha03 がリリースされました。バージョン 1.5.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • RAW と RAW + JPEG の ImageCapture の出力形式 API を追加しました。デバイスの機能チェックは ImageCaptureCapabilities#getSupportedOutputFormats で公開されます。OUTPUT_FORMAT_RAW は RAW 画像(Adobe DNG 形式)をキャプチャするためのもので、OUTPUT_FORMAT_RAW_JPEG は RAW 画像と JPEG 画像を同時にキャプチャするためのものです。新しい ImageCapture#takePicture API は同時画像キャプチャに使用されます。2 つの OutputFileOptions を提供する必要があります。1 つ目は RAW 画像用、2 つ目は JPEG 画像用です。(Ib0f3d)

バグの修正

  • VideoCapture が有効になっている場合に TCL デバイスでプレビューと動画の露出不足が発生する問題を修正しました。(Id7a64)
  • エフェクトが有効になっている場合や、4 つのユースケースがバインドされている場合(ストリーム共有)に、PreviewView.getMeteringPointFactory で startFocusMetering を呼び出すと正しいセンサー座標を取得できない問題を修正しました。(I916c5、b/345993685)
  • 動画の録画時にストレージの空き容量が不足している場合に VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE イベントがトリガーされない問題を修正しました。(I35779、b/356399842)

バージョン 1.5.0-alpha02

2024 年 10 月 2 日

androidx.camera:camera-*:1.5.0-alpha02 がリリースされました。バージョン 1.5.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • デバイスでサポートされているカメラ機能をクエリするための新しい API。たとえば、HDR と 60FPS を同時に有効にできるかどうかを確認します。これには、camera-feature-combination-query と camera-feature-combination-query-play-services の 2 つのアーティファクトが含まれます。これは、Google Play 開発者サービスから提供される追加データを含む、camera2 の CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported API の互換性のあるバージョンです。

バグの修正

  • LEGACY レベルのデバイスで Preview/VideoCapture のターゲット フレームレートに関する問題を修正しました。setTargetFrameRate または Camera2Interop API で設定されたターゲット フレームレートは、常に AeFpsRangeLegacyQuirk が提供する値で上書きされていました。この修正により、CameraX ライブラリは setTargetFrameRate または Camera2Interop API を介して設定された値を尊重します。(Ie2d32)
  • CameraEffect を使用した画像キャプチャに、フラッシュ/トーチ/3A の機能を追加しました。CameraEffect を使用した画像キャプチャは、CameraEffect を使用しない画像キャプチャと同じプリキャプチャ処理とポストキャプチャ処理(該当する場合はフラッシュ トリガー、3A 収束など)を行うようになりました。(I5ff30)
  • Samsung SM-A057G デバイスで ImageAnalysis の問題のある出力サイズを除外しました。ImageAnalysis が 1920x1440 以上の解像度を使用すると、プレビューが黒くなる問題が発生します。この問題を回避するため、SM-A057G デバイスに ExcludedSupportedSizesQuirk を適用しました。(I63dfe、b/365877975)
  • ストリーム共有メカニズムが内部的に有効になっていて、ストリームを Preview と VideoCapture に共有している場合に、Preview/VideoCapture の目標フレームレートに関する問題を修正しました。(I4fdac)
  • Samsung S10e および S10+ デバイスで JPEG 画像のメタデータが正しくない問題を修正する回避策を有効にしました。この修正により、これらのデバイスで誤った JPEG 画像メタデータの問題が発生した場合、CameraX は JPEG 画像を正常に保存するか、ImageProxy.toBitmap() 関数を呼び出すときに正しい Bitmap オブジェクトを返すことができます。(Iae493、b/356428987)
  • ID が 0 の Samsung A52s の背面カメラの拡張機能を無効にしました。HDR 画像をキャプチャするときにネイティブ クラッシュが発生する可能性があり、BOKEH モードまたは FACE_RETOUCH モードでキャプチャ セッションの構成が失敗する可能性があるためです。(I03ec9、b/364152642)
  • 動画の録画時にストレージの空き容量が不足している場合に VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE イベントがトリガーされない問題を修正しました。(Ia5b4f、b/356399842)
  • Oppo A5(CPH1931)で 2 回目の動画録画が失敗する問題を修正しました。(I181d6)

バージョン 1.5.0-alpha01

2024 年 9 月 4 日

androidx.camera:camera-*:1.5.0-alpha01 がリリースされました。バージョン 1.5.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • CameraX Viewfinder Compose Adapter の新しいアーティファクト camera-compose がリリースされました。これは、camera-core から CameraX SurfaceRequest のプレビュー ストリームを表示します。(I8666e)
  • CameraX の SurfaceRequest をコンポーザブル Viewfinder に適応させる慣用的なコンポーザブルとして機能する、新しいコンポーザブル CameraXViewfinder を追加しました。(I4770f)

API の変更

  • デュアル同時カメラ動画キャプチャの合成設定を行う API を提供します。設定には、ブレンドのアルファ値、x 座標と y 座標のオフセット、カメラ フレーム表示ウィンドウの幅と高さのスケールが含まれます。オフセット、幅、高さは正規化されたデバイス座標で指定されます。(Ia2b8a)
  • CameraProvider.getCameraInfo を正式な API として公開しました。(I901cd)
  • 初期ミュート状態を制御する API PendingRecording.withAudioEnabled(boolean initialMuted) を追加しました。(I635c3、b/354829267)

バグの修正

  • 破棄された LifecycleOwner で bindToLifecycle が呼び出されるとクラッシュする問題を修正しました。(I6e6d8)
  • Motorola Edge 20 Fusion で VideoCapture とバインドしているときに前面カメラのプレビュー画面が黒くなる問題を修正しました。(I1fe88)
  • PreviewView でズーム操作を検出するための設定を最適化し、スムーズさを改善しました。(I04ffc)

Camera バージョン 1.4

バージョン 1.4.2

2025 年 3 月 26 日

androidx.camera:camera-*:1.4.2 がリリースされました。バージョン 1.4.2 にはこれらの commit が含まれています。

バグの修正

  • Samsung Galaxy M55 で TEMPLATE_RECORD を使用する別のストリームで ImageAnalysis を使用するとプレビューがフリーズする問題を修正しました。(Ic1a6a、b/395822788)

バージョン 1.4.1

2024 年 12 月 11 日

androidx.camera:camera-*:1.4.1 がリリースされました。バージョン 1.4.1 にはこれらの commit が含まれています。

バグの修正

  • Pixel Android 15 デバイスで、拡張機能のナイトモードで、カメラが近くの被写体にピントを合わせるまで静止画をキャプチャできない問題を修正しました。(I228d4)
  • 拡張機能が有効で VideoCapture が一緒にバインドされている場合に ImageCapture#takePicture が誤動作する問題を修正しました。(I5c745)

バージョン 1.4.0

2024 年 10 月 30 日

androidx.camera:camera-*:1.4.0 がリリースされました。バージョン 1.4.0 にはこれらのコミットが含まれています。

1.3.0 以降の重要な変更

CameraX 1.4.0 には、魅力的なアップデートが満載です。概要を次に示します。

主な機能: 10 ビット HDR:

  • 美しい HDR 写真や動画を簡単に撮影できます。
  • HLG と 10 ビット HEVC エンコードをサポートします。
  • 10 ビット HDR プレビューを楽しみ、デバイスの機能をクエリします。
  • UltraHDR 画像と HDR 動画に対応するデバイスの範囲が拡大しています。

その他の便利な機能:

  • Kotlin 拡張機能: takePicture と awaitInstance の suspend 関数を追加しました。
  • リアルタイム エフェクト: ウォーターマークやオブジェクトのハイライトなどのエフェクトを適用します。
  • CameraController API: 動画キャプチャ設定の新しいコントロール。
  • プレビューの手ぶれ補正: デバイスの機能をクエリして、手ぶれ補正を有効にします。
  • VideoCapture の機能強化: 画質をより細かく制御し、より高い解像度を利用できるようになりました。
  • CameraX 拡張機能の統合: VideoCapture と新しい ImageCapture 機能とのシームレスな統合。
  • シャッター音 API: 地域ごとのシャッター音の要件を簡単に確認できます。
  • 画面フラッシュ: 前面カメラでの暗い場所での撮影の質を向上。
  • カメラ拡張機能メタデータ API: 拡張機能の強度を調整し、ExtensionMode#AUTO で現在の拡張機能モードの通知を取得するための API をサポートします。その他のバグの修正については、ベータ版と RC 版のお知らせをご覧ください。

バージョン 1.4.0-rc04

2024 年 10 月 16 日

androidx.camera:camera-*:1.4.0-rc04 がリリースされました。バージョン 1.4.0-rc04 には、これらの commit が含まれています。

バグの修正

  • エフェクトが有効になっている場合や、4 つのユースケースがバインドされている場合(ストリーム共有)に、PreviewView.getMeteringPointFactory で startFocusMetering を呼び出すと正しいセンサー座標を取得できない問題を修正しました。(I916c5、b/345993685)

バージョン 1.4.0-rc03

2024 年 10 月 2 日

androidx.camera:camera-*:1.4.0-rc03 がリリースされました。バージョン 1.4.0-rc03 にはこれらの commit が含まれています。

バグの修正

  • CameraEffect を使用した画像キャプチャに、フラッシュ/トーチ/3A の機能を追加しました。CameraEffect を使用した画像キャプチャは、CameraEffect を使用しない画像キャプチャと同じプリキャプチャ処理とポストキャプチャ処理(該当する場合はフラッシュ トリガー、3A 収束など)を行うようになりました。(I5ff30)
  • PreviewView でのピンチ操作によるズームの滑らかさを最適化しました(I04ffc)
  • ウルトラ HDR のサポートでは、デバイスに 10 ビット出力機能が不要になったため、ウルトラ HDR を 10 ビット出力機能から切り離します。(I96ff2、I0c3b3)

バージョン 1.4.0-rc02

2024 年 9 月 18 日

androidx.camera:camera-*:1.4.0-rc02 がリリースされました。バージョン 1.4.0-rc02 にはこれらの commit が含まれています。

バグの修正

  • 破棄された LifecycleOwner で bindToLifecycle が呼び出されるとクラッシュする問題を修正しました。(I6e6d8)
  • ScreenFlash#apply の ScreenFlashView に可視性アニメーションを追加しました。また、明るさの変化がしばらくしてから非同期で完了することによるバグも修正しました。(I37cdb)
  • サポートされているデバイスでフレームワークのズーム設定をオーバーライドすることで、ズームの滑らかさを改善。

バージョン 1.4.0-rc01

2024 年 8 月 7 日

androidx.camera:camera-*:1.4.0-rc01 がリリースされました。バージョン 1.4.0-rc01 にはこれらの commit が含まれています。

新機能

  • ユースケースをカメラにバインドする必要なく、特定のカメラ情報を提供する試験運用版の CameraInfo.getCameraInfo を追加しました。(I550d1)

API の変更

  • ScreenFlashView が明示的に追加されていない場合のために、PreviewView.getScreenFlash API と PreviewView.setScreenFlashOverlayColor API を追加しました。(I43945)

バグの修正

  • VideoCapture ユースケースがバインドされている状態で、明るさの足りない場所でフラッシュを有効にして画像をキャプチャしたときに、露出と色合いの問題を修正しました。(Ic9814)
  • 拡張機能が有効になっている状態で takePicture リクエストを中断すると、結果を取得できず、次の takePicture リクエストが機能しなくなる問題を修正しました。(Iae78f)
  • 拡張機能が有効になっている場合に発生するメモリリークの問題を修正しました。(Iab276)
  • Google Pixel 7/8 や Samsung Galaxy S24 シリーズなどのデバイスで CameraX 拡張機能が誤動作する問題を解決しました。この問題は、リリースモードでの Camera2OutputConfigImpl 変換の問題に起因しており、AGP を 8.5.1 にアップグレードして縮小を有効にした後に発生しました。(I99598、b/354824993)

バージョン 1.4.0-beta02

2024 年 6 月 12 日

androidx.camera:camera-*:1.4.0-beta02 がリリースされました。バージョン 1.4.0-beta02 にはこれらの commit が含まれています。

API の変更

  • VideoCapture と同様に、プレビューのユースケースに setMirrorMode を追加します。API 33 以降では、OutputConfiguration.setMirrorMode を介してプレビュー ストリームのミラーモードのオンとオフをサポートします。古い API では、no-op になります。(I821f4)

バグの修正

  • Preview + VideoCapture + ImageCapture UseCase の組み合わせで ImageCapture が 1920x1080 を選択している場合、Samsung Tab A8 でアプリが写真を正常に撮影できない問題を修正しました。(I5a463、b/336925549)
  • カメラを切り替えた後、永続的な録画が録画を継続できない問題を修正しました。(Icb0a1)

バージョン 1.4.0-beta01

2024 年 5 月 14 日

androidx.camera:camera-*:1.4.0-beta01 がリリースされました。バージョン 1.4.0-beta01 にはこれらの commit が含まれています。

API の変更

  • ズーム操作の状態をカプセル化する ZoomGestureDetector.ZoomEvent を追加しました。(I84cdf)

バグの修正

  • 一部のデバイスで、キャプチャ セッションが再作成され、遅延の問題やプレビューのフリーズが発生する可能性がある、キャプチャとタップしてフォーカスが繰り返しリクエストの FPS/手ぶれ補正モードの値を使用しないバグを修正しました。(I7dc0b)
  • 一部のデバイスで CameraEffect が有効になっている場合に高解像度を選択できないバグを修正しました。(例: Samsung A32 5G の場合 4,000×3,000)。(Ie3ed3、b/337336152)
  • Pixel 4XL API29 で Preview、ImageCapture、VideoCapture(UHD) がバインドされている場合に写真を撮るとクラッシュする問題を修正しました。(I5b288)
  • 仮想デバイスのサポート: ProcessCameraProvider に渡されるコンテキストは、仮想デバイス環境での機能を確保するためにデバイス ID を保持します。(I5ba48)

バージョン 1.4.0-alpha05

2024 年 4 月 17 日

androidx.camera:camera-*:1.4.0-alpha05 がリリースされました。バージョン 1.4.0-alpha05 に含まれる commit については、こちらをご覧ください。

新機能

  • ProcessCameraProvider を Kotlin 実装に変換しました。(I46d4f)
  • Kotlin らしい方法で呼び出せるように、ImageCapture.takePicture suspend 関数を追加しました。(I920be)

API の変更

  • ImageCapture に出力形式 API を追加し、デバイスの機能を問い合わせるため ImageCaptureCapabilities に getSupportedOutputFormats メソッドを追加しました。デフォルトの出力形式の値は OUTPUT_FORMAT_JPEG で、SDR 画像を JPEG 形式でキャプチャします。デバイスがウルトラ HDR をサポートし、出力形式が OUTPUT_FORMAT_JPEG_ULTRA_HDR に設定されている場合、CameraX は JPEG/R 画像形式を使用してウルトラ HDR 圧縮画像をキャプチャします。この形式は SDR JPEG 形式の下位互換で、コンテンツの HDR レンダリングをサポートしています。つまり、古いアプリやデバイスでは、画像は通常の JPEG としてシームレスに表示され、この形式を完全にサポートするように更新されたアプリやデバイスでは、画像は HDR として表示されます。(I5de50)
  • CameraInfo に PhysicalCameraInfo を追加して物理カメラ情報をクエリし、CameraSelector に物理カメラ ID のセッター/ゲッターを追加しました(Ic5b90)
  • CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED を ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED に置き換えます。定数の値は変更されません。これは、すべての定数を 1 か所に統合するためのものです。(I890bb)
  • 新しい RetryPolicy API により、デベロッパーは CameraX の初期化の再試行動作をカスタマイズできます。(I36dd2)
  • テスト容易性を支援する ImageCaptureLatencyEstimate オブジェクトの作成を有効化(Iaba99)
  • ImageAnalysis#COORDINATE_SYSTEM_SENSOR を追加します。この場合、MlKitAnalyzer はカメラセンサーの座標系で座標を返します。(I3ec61)
  • 公開された拡張機能メタデータ API。新しい CameraExtensionsInfo インターフェースと CameraExtensionsControl インターフェースにより、アプリは拡張機能の強さの設定をモニタリングして調整できます。アプリは、新しく追加された ExtensionsManager#getCameraExtensionsInfo() メソッドまたは ExtensionsManager#getCameraExtensionsControl() メソッドを介して CameraExtensionsInfo インスタンスまたは CameraExtensionsControl インスタンスを取得できます。(I28e1a)
  • ProcessCameraProvider.getInstance の一時停止バージョンである ProcessCameraProvider.awaitInstance を追加しました(Ib22b9)
  • PreviewView#getSensorToViewTransform() API を追加しました。Matrix は、カメラセンサーの座標から PreviewView の座標への変換を表します。これは、ある UseCase から別の UseCase に座標を変換するために使用できます。たとえば、ImageAnalysis で検出されたオブジェクトの座標を PreviewView オーバーレイに変換します。(I947ab)
  • camera-viewfinder と camera-viewfinder-compose で使用できるように、camera-viewfinder-core API をより汎用的にします。(I1e295)
  • ViewfinderSurfaceRequest に getSurface 関数を追加します。(I781a0)
  • camera-viewfinder で camera-viewfinder-core を使用し、ViewfinderSurfaceRequest と CameraViewfinder を非推奨にします。(I6198c)
  • ピンチズーム アクティビティ用に特別に構成されたスケーリング ジェスチャーを解釈する ZoomGestureDetector を追加しました。(Ifafbf)

バグの修正

  • アナライザのデフォルトのターゲット解像度の設定に関連する ImageAnalysis の解像度選択の問題を修正しました。アプリケーションでアナライザのデフォルトの解像度の設定が変更されていても、ターゲット解像度が誤って 640x480 のままになっていました。アプリケーションでこの問題(1.3.0 ~ 1.3.2)が発生し、解決策を含む新しいバージョン リリースを使用するためにアップグレードできない場合は、優先解像度と一致する AspectRatioStrategy を ImageAnalysis UseCase に直接設定することで、この問題を回避できます。ResolutionSelector(I81f72、b/330091012)
  • 現在のリクエストが失敗した場合、キューに登録された takePicture リクエストが実行されないことがある問題を修正しました。(Ie0801)
  • 無効な JPEG データのチェックを Vivo X60 および X60 Pro デバイスに適用します。これにより、これらのデバイスで画像が異常に大きくなる問題を解決できます。(I82247、b/288828159)
  • Samsung A24 デバイスで JPEG 画像のメタデータが正しくない問題を修正しました。この修正により、Samsung A24 デバイスで ImageProxy.toBitmap() 関数を呼び出すと、CameraX は JPEG 画像を正常に保存するか、正しい Bitmap オブジェクトを返すことができます。(I8d6eb、b/309005680)
  • キャプチャした画像のサイズが 10 MB を超える場合、無効な JPEG データチェックをすべての Samsung デバイスに適用します。これにより、Samsung デバイスで画像が異常に大きくなる問題を解決できます。(Ic2a65、b/288828159)
  • 多くの OEM の拡張機能の実装が ImageAnalysis でうまく動作せず、一貫性のない問題を引き起こす可能性があるため、CameraX 拡張機能での ImageAnalysis のサポートを削除しました。(I2d926)

バージョン 1.4.0-alpha04

2024 年 1 月 24 日

androidx.camera:camera-*:1.4.0-alpha04 がリリースされました。バージョン 1.4.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しいアーティファクト: camera-effects: Preview、VideoCapture、ImageCapture などの CameraX 出力にリアルタイム効果を適用するためのライブラリ。このアーティファクトには、カメラ出力を効率的に操作する CameraEffect API の OpenGL 実装が含まれています。
  • OverlayEffect: Android の Canvas API を使用してオーバーレイを描画する場合。これにより、アプリはカメラ出力に透かしを適用したり、検出されたオブジェクトをハイライト表示したりできます。
  • プレビュー ユースケースの DynamicRange API: 動画ユースケースとは別に、プレビュー ユースケースでダイナミック レンジを設定できるようになりました。これにより、プレビューのみで HLG10 などの HDR ダイナミック レンジが可能になります。CameraInfo には、各カメラがサポートするダイナミック レンジを照会するための新しい API もあります。

API の変更

  • ScreenFlashUiCompleter の名前を ScreenFlashListener に変更し、ScreenFlashUiCompleter#getExpirationTimeMillis を ScreenFlash#apply の expirationTimeMillis パラメータに移動しました。(I13944)
  • プレビュー ユースケースでダイナミック レンジを設定し、各カメラでサポートされているダイナミック レンジを照会できるようにする新しい API が追加されました。これにより、HLG10 などの HDR ダイナミック レンジをプレビュー ユースケース単独で使用できるようになり、同時に VideoCapture をバインドする必要がなくなります。(If25e3)
  • getMirroring() の名前を isMirroring() に変更しました(I47063)
  • CameraX にリアルタイムでの静止画撮影レイテンシの推定のサポートを追加しました。カメラ拡張機能を使用すると、アプリはキャプチャにかかる時間を推定する API を使用できます。この推定値は、現在の環境条件とカメラの状態を考慮しており、マルチフレーム キャプチャ リクエストの処理に費やされた時間と、必要に応じて処理済みバッファのエンコードにかかる追加の時間を含んでいます。(I05c3a)
  • ScreenFlashUiControl の名前を ScreenFlash に、ScreenFlashUiControl#applyScreenFlashUi の名前を ScreenFlash#apply に、ScreenFlashUiControl#clearScreenFlashUi の名前を ScreenFlash#clear に変更し、SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS を直接公開する代わりに getScreenFlashUiApplyTimeoutSeconds メソッドを追加しました。(Iccdd0)

バグの修正

  • 拡張機能が有効になっている場合にアクティビティやフラグメントが解放されないメモリリークを修正しました(I14215)
  • ズーム率を上げると getZoomRatio が誤って減少した値を返す問題を修正しました。(I4aa0d、b/317543616)
  • ImageCapture がバインド解除されたとき、またはカメラが閉じられたときに ImageCapture#ScreenFlash#clear イベントがすぐに呼び出されるようにしました。また、これらのシナリオでキャプチャが正しく完了しないために呼び出されないバグも修正しました。(If99f9)
  • takePicture リクエストが完了する前にライフサイクルが停止するとクラッシュする問題を修正しました(Idf017、b/306202751)
  • 一部のデバイスで拡張機能が有効になっていると、カメラのプレビューが黒くなる問題を修正しました(I1ffd0)
  • Snapdragon 778G SoC を搭載したデバイスで動画撮影の時間が正しく表示されない問題を修正しました。(If6aa7、b/316057919)

バージョン 1.4.0-alpha03

2023 年 12 月 13 日

androidx.camera:camera-*:1.4.0-alpha03 がリリースされました。バージョン 1.4.0-alpha03 に含まれる commit については、こちらをご覧ください。

新機能

  • 地域ごとの制限に従ってシャッター音を再生する必要があるかどうかについての情報を提供する CameraInfo.mustPlayShutterSound を追加しました。(Ifda84)
  • カメラがフレームの露出を開始したときに通知するための OnImageCapturedCallback.onCaptureStarted と OnImageSavedCallback.onCaptureStarted を追加しました。この時点でシャッター音またはシャッター アニメーションを再生することをおすすめします。(Ic49b3)
  • 前面カメラの画像キャプチャ用に CameraX で画面フラッシュ機能のサポートを追加しました。CameraX は、フレームワーク側の API 処理を行い、必要に応じてタイミングをアプリの UI 変更と同期します(アプリ画面の色や明るさの変更後の AE プリキャプチャ トリガーなど)。アプリは、CameraX に提供される ScreenFlashUiControl インターフェースに UI 側の実装を追加するだけで済みます。(I8ae84)
  • CameraX に、画面フラッシュ機能の UI 側の実装サポートを追加しました。アプリは、PreviewView または新しく追加された ScreenFlashView から基本的な ImageCapture.ScreenFlashUiControl 実装を取得できます。これにより、単色のオーバーレイ ビューが追加され、画面フラッシュ写真の撮影中に画面の明るさが最大になります。(I1810e)

API の変更

  • 新しい拡張機能(プレビュー後とキャプチャ プロセスの進行状況)をサポート: アプリがプレビュー後とキャプチャ プロセスの進行状況コールバックの機能についてクエリを実行するための ImageCapture#getImageCaptureCapabilities() API を追加しました。アプリは ImageCapture.Builder#setPostviewEnabled() を使用してポストビューを有効にできます。ポストビューのサイズは ImageCapture.Builder#setPostviewResolutionSelector() を使用して選択できます。takePicture() を呼び出す場合、OnImageSavedCallback または OnImageCapturedCallback で onPostviewBitmapAvailable と onCaptureProcessProgressed を実装して、サポートされている場合はポストビューと処理の進行状況の通知を取得できます。(I5cd88)
  • センサーから現在のバッファへの座標変換を計算する API。Surface にカメラの向き情報が含まれているかどうかを示すフラグ付き。(I59096)
  • プレビュー UseCase で PreviewCapabitlity をクエリする API を公開しました。(Ie5b6c)
  • VideoCapture の品質をさらにサポートする API を追加しました。Recorder.Builder#setVideoCapabilitiesSource(int) は VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES と組み合わせて使用し、VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE よりも多くの品質をサポートする Recorder インスタンスを作成できます。一般的なユースケースとしては、コーデックが UHD 動画の録画に対応しているにもかかわらず、デバイスの CamcorderProfile に UHD 設定が含まれていない場合に、アプリケーションが可能な限り UHD 動画を録画しようとする場合などがあります。(Iedbe2、b/263961771)
  • CameraController に ImageAnalysis 出力形式のゲッター/セッターを追加します。(I9a96c、b/308240643)

バグの修正

  • カメラ 1.3.1: ProcessCameraProvider#bindToLifecycle() のパフォーマンスを改善しました。主な変更点は、UseCases に最適なサイズの組み合わせを特定するプロセスを最適化することです。最適な結果は、特定の UseCase の組み合わせと、ターゲット デバイスでサポートされている出力サイズの数によって異なります。(I454f2)
  • 拡張機能が有効になっている場合に VideoCapture の使用を許可します。(I91f32)
  • Samsung A71 および M51 シリーズのデバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。キャプチャされた画像のファイルサイズが極端に大きくなります。キャプチャした画像のファイルサイズを通常のサイズにするため、冗長な 0 のパディング データが削除されます。(I01afc、b/288828159)
  • Pixel で ImageAnalysis のサポートを無効にして、空でない ImageAnalysis のサポート対象サイズを誤って返す Pixel のバグを回避します。(I7ec31)
  • 拡張機能が有効になっている場合に CPU の負荷と電力消費が増加するパフォーマンスの問題を修正しました。(Ibdccb)
  • CameraUseInconsistentTimebaseQuirk に Snapdragon 480 を追加しました。このチップセットを使用するデバイスで、録音の音声がデバイスが一時停止状態になっている時間だけずれるという Android 12 の問題を修正しました。(I58010)

バージョン 1.4.0-alpha02

2023 年 10 月 18 日

androidx.camera:camera-*:1.4.0-alpha02 がリリースされました。バージョン 1.4.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • API の名前を setCameraOpenRetryMaxTimeoutInMillisWhileResuming に変更し、引数の名前を変更します。(I72370)
  • デバイスの機能を問い合わせ、動画/プレビューの手ぶれ補正を有効にする API を追加しました。(I87544)
  • カメラの再試行の最大タイムアウト時間をカスタマイズするための API を提供します。(I0c642)
  • ProcessCameraProvider.shutdownAsync を公開テスト API としてリリースしました。これにより、テスト間で CameraX を異なる方法で初期化する必要があるテストスイートでプロセス カメラ プロバイダを使用できるようになります。(I9eca7)
  • 動画キャプチャのダイナミック レンジ、フレームレート、ミラーモードを設定するための API を追加しました。(Ifb8f7)
  • OutputSize を非推奨にし、ResolutionSelector に置き換えます。ResolutionSelector は解像度を選択するより包括的な方法であり、カメラコア API と一貫性があります。(I93abd、b/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 に含まれる commit については、こちらをご覧ください。

API の変更

  • 録音中に音声の振幅情報にアクセスする新しい API を追加しました。(Id4925)

バグの修正

  • 初期化イベントと初期化解除イベントが正しい順序でトリガーされるようにして、拡張機能の安定性を改善します。(Ib3b8e)
  • 内部で追加の繰り返しサーフェスを追加したことが原因で、サポートされているサーフェスの組み合わせを超過し、キャプチャ セッションの構成が失敗する問題を修正しました。(Id718c)
  • Vivo S16 デバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。これにより、キャプチャされた画像のファイルサイズが大きくなります。キャプチャした画像のファイルサイズを通常のサイズにするため、冗長な 0 のパディング データが削除されます。(I79505、b/299069235)
  • 一部のデバイスで一部の拡張モードが有効になっている場合に、ImageAnalysis を ImageCapture およびプレビューとバインドできない問題を修正しました。この修正により、アプリが ExtensionsManager#isImageAnalysisSupported() 経由で ImageAnalysis の可用性をクエリしたときに正しい値が返されるようになります。(I7d538)
  • 動作に合わせて JavaDoc を更新しました。#setZoomRatio、#setLinearZoom、#enableTorch はすぐに完了するのではなく、カメラの準備が整うまで待機します。また、#takePicture API で最大 FOV を取得する方法についての情報も追加しました。(I23588)

バージョン 1.3

バージョン 1.3.4

2024 年 6 月 12 日

androidx.camera:camera-*:1.3.4 がリリースされました。バージョン 1.3.4 にはこれらの commit が含まれています。

バグの修正

  • ズーム率を上げると getZoomRatio が誤って減少した値を返す問題を修正しました。(I4aa0d、b/317543616)
  • 一部のデバイスで、静止画キャプチャ/タップしてフォーカスが繰り返しリクエストの FPS/手ぶれ補正モードの値を使用せず、キャプチャ セッションが再作成されてレイテンシの問題やプレビューのフリーズが発生する問題を修正しました。(I7dc0b)
  • FRAME_RATE_RANGE_UNSPECIFIED で setTargetFrameRate を呼び出すとフレームレートが低い値に設定される問題を修正しました。(I78c61)

バージョン 1.3.3

2024 年 4 月 17 日

androidx.camera:camera-*:1.3.3 がリリースされました。バージョン 1.3.3 にはこれらの commit が含まれています。

バグの修正

  • アナライザのデフォルトのターゲット解像度の設定に関連する ImageAnalysis の解像度選択の問題を修正しました。アプリケーションでアナライザのデフォルトの解像度の設定が変更されていても、ターゲット解像度が誤って 640x480 のままになっていました。アプリケーションでこの問題(1.3.0 ~ 1.3.2)が発生し、解決策を含む新しいバージョン リリースを使用するためにアップグレードできない場合は、優先解像度と一致する AspectRatioStrategy を ImageAnalysis UseCase に直接設定することで、この問題を回避できます。ResolutionSelector(I81f72、b/330091012)

バージョン 1.3.2

2024 年 3 月 6 日

androidx.camera:camera-*:1.3.2 がリリースされました。バージョン 1.3.2 にはこれらの commit が含まれています。

バグの修正

  • Samsung A24 デバイスの JPEG メタデータに関する問題を修正しました。CameraX で画像が正確に保存されるようになり、ImageProxy.toBitmap() 関数が正しい Bitmap オブジェクトを返すようになりました。(I8d6eb、b/309005680)
  • 問題のため、Redmi Note 9 Pro デバイスの 9280x6944 解像度オプションを削除しました。(Ia23da)

バージョン 1.3.1

2023 年 12 月 13 日

androidx.camera:camera-*:1.3.1 がリリースされました。バージョン 1.3.1 に含まれる commit については、こちらをご覧ください。

バグの修正

ProcessCameraProvider#bindToLifecycle() のパフォーマンスを改善しました。主な変更点は、UseCases に最適なサイズの組み合わせを特定するプロセスを最適化することです。最適な結果は、特定の UseCase の組み合わせと、ターゲット デバイスでサポートされている出力サイズの数によって異なります。(I454f2)

以下に、さまざまなシナリオの参考結果を示します。

  • 4 つの UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: 約 430 ミリ秒から 60 ミリ秒
    • Samsung Galaxy S23 Ultra: 約 540 ミリ秒から 45 ミリ秒
    • Samsung A53 5G: 約 115 ミリ秒から 70 ミリ秒
  • 3 つの UseCases: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: 約 9 ミリ秒~ 7 ミリ秒
    • Samsung Galaxy S23 Ultra: 約 6 ミリ秒から 5 ミリ秒
    • Samsung A53 5G: 約 32 ms から 12 ms
  • CameraUseInconsistentTimebaseQuirk に Snapdragon 480 を追加しました。このチップセットを使用するデバイスで、録音の音声がデバイスが一時停止状態になっている時間だけずれるという Android 12 の問題を修正しました。(I58010)

バージョン 1.3.0

2023 年 10 月 18 日

androidx.camera:camera-*:1.3.0 がリリースされました。バージョン 1.3.0 に含まれる commit については、こちらをご覧ください。

1.2.0 以降の重要な変更

バージョン 1.3.0-rc02

2023 年 9 月 20 日

androidx.camera:camera-*:1.3.0-rc02 がリリースされました。バージョン 1.3.0-rc02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 初期化イベントと初期化解除イベントが正しい順序でトリガーされるようにして、拡張機能の安定性を改善します。これにより、拡張機能モードの切り替え時やカメラの切り替え時に発生するプレビューの黒画面の問題が一部修正されました。(Iddaac)
  • 一部のデバイスで一部の拡張モードが有効になっている場合に、ImageAnalysis を ImageCapture およびプレビューとバインドできない問題を修正しました。この修正により、アプリが ExtensionsManager#isImageAnalysisSupported() 経由で ImageAnalysis の可用性をクエリしたときに正しい値が返されるようになります。(I7d538)
  • Xiaomi Poco X3 NFC でミラーリング モードが有効になっている場合に、録画した動画の音声と映像が同期しない問題を修正しました。(I20b4c)

バージョン 1.3.0-rc01

2023 年 8 月 23 日

androidx.camera:camera-*:1.3.0-rc01 がリリースされました。バージョン 1.3.0-rc01 に含まれる commit については、こちらをご覧ください。

API の変更

  • VideoCapture の Recorder がアタッチされている状態でも、引き続き録画できるようにする PendingRecording.asPersistentRecording を追加しました。(I517c6)

バグの修正

  • VideoCapture とプレビューの両方でストリームを共有したときに発生するクラッシュを修正しました。また、ストリーム共有が有効になっている場合に従来のデバイスで画面が黒くなる問題を修正しました。
  • Samsung S7(SM-G930T、SM-G930V)シリーズ デバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。これにより、キャプチャされた画像のファイルサイズが大きくなります。キャプチャした画像のファイルサイズを通常のサイズにするため、冗長な 0 のパディング データが削除されます。(I407b0、b/288828159)
  • Samsung S22(SM-S901B、SM-S901B/DS)および S22+(SM-S906B)シリーズのデバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。この問題により、S22 SM-S901B/DS デバイスでキャプチャした画像のファイルサイズが約 13 MB と大きくなります。キャプチャした画像のファイルサイズを通常のサイズにするため、冗長な 0 のパディング データが削除されます。(I73be9、b/288828159)
  • Samsung A5、A52、A70、A72 シリーズのデバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。これにより、キャプチャした画像のファイルサイズが極端に大きくなります(約 32 MB または 96 MB など)。キャプチャした画像のファイルサイズを通常のものにするため、冗長な 0 のパディング データは削除されます。(I97c4d、b/288828159)
  • 拡張機能が有効になっている状態で写真を撮影するとネイティブ コードでのクラッシュが発生する問題を修正しました(I698f5)

バージョン 1.3.0-beta02

2023 年 7 月 26 日

androidx.camera:camera-*:1.3.0-beta02 がリリースされました。バージョン 1.3.0-beta02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Google Pixel 4 と Google Pixel 5 のバリエーションで、暗い場所で撮影する際の画質を改善するため、トーチをフラッシュとして使用するようにしました。(I56ff5、b/280221967)
  • Samsung A5(2017)シリーズ デバイスで、キャプチャした JPEG 画像が大きくなる問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。これにより、キャプチャされた画像のファイルサイズは約 32 MB になります。キャプチャした画像のファイルサイズを通常のものにするため、冗長な 0 のパディング データは削除されます。(I29837、b/288828159)
  • CaptureFailedRetryQuirk で言及されている問題のあるデバイスでキャプチャが失敗した場合に、再試行が正しくトリガーされない問題を修正しました。(I7b589)

バージョン 1.3.0-beta01

2023 年 6 月 21 日

androidx.camera:camera-*:1.3.0-beta01 がリリースされました。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください。

API の変更

  • ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) 関数名を setAllowedResolutionMode に変更し、ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 定数を PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE に変更しました。(If84e8)
  • サポートが終了した API ImageAnalysis.setTargetRotationDegrees(int)、ImageCapture.setTargetRotationDegrees(int)、VideoCapture.setTargetRotationDegrees(int) を削除しました。(Id8e77)
  • DynamicRange クラスは画像のダイナミック レンジを表します。これは、VideoCapture から VideoCapture.Builder#setDynamicRange() の出力としてハイ ダイナミック レンジ形式を選択するために使用できます。(Ib0377)
  • ExtensionsManager に isImageAnalysisSupported API を追加しました。これにより、拡張機能が有効になっている場合に、アプリは ImageAnalysis ユースケースをプレビューおよび ImageCapture とともにバインドできるかどうかを判断できます。(I1bc63)
  • Recorder から取得した新しい VideoCapabilities クラスを使用して、デバイスでの動画撮影でサポートされているダイナミック レンジと画質をクエリできます。QualitySelector の getSupportedQualities() メソッドと isQualitySupported() メソッドのサポートが終了します。代わりに、VideoCapabilities の getSupportedQualities() メソッドと isQualitySupported() メソッドを使用してください。(I04014)
  • CameraController#setVideoCaptureTargetQuality() の名前が setVideoCaptureQualitySelector に変更され、引数 QualitySelector を取るようになりました。これにより、動画の画質設定の柔軟性が向上します。CameraController#getVideoCaptureTargetQuality() は getVideoCaptureQualitySelector に変更されます。(I520ed)
  • 動画機能の試験運用版アノテーションを削除しました。動画機能が安定版になりました。(I1a113)

バグの修正

  • Samsung SM-A320 モデルで懐中電灯をフラッシュとして使用し、低照度での速度と撮影画像の品質を向上させます。(I6a022、b/286190938)
  • ImageProxy.toBitmap() の ImageFormat.JPEG 形式のサポートを追加します。JPEG バイト配列をデコードできない場合は、UnsupportedOperationException がスローされます。(I81958、b/282057603)

バージョン 1.3.0-alpha07

2023 年 5 月 24 日

androidx.camera:camera-*:1.3.0-alpha07 がリリースされました。バージョン 1.3.0-alpha07 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しい VideoCapture.Builder# setTargetFrameRate(Range) API を使用すると、デバイスのデフォルト以外のフレームレートで動画を録画できます。録画に使用できるフレームレートは、新しい CameraInfo#getSupportedFrameRates() API を通じてクエリできます。

API の変更

  • ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 定数の名前を ALLOWED_RESOLUTIONS_NORMAL/SLOW に変更し、ビルダー setHighResolutionEnabledFlag 関数の名前を setAllowedResolutionMode に変更しました。(Iae817)
  • CameraInfo#getSupportedFrameRateRanges() が List ではなく Set を返すようになり、範囲が順序付けされていないことをより適切に表すようになりました。(I02f43)
  • 回復不能なエラー(Ice471)を処理するために、CameraEffect にエラー リスナーを追加
  • テストのしやすさを向上させるため、ResolutionInfo にパブリック コンストラクタを追加(If6d1c)
  • setTargetRotationDegrees の使用を置き換える API UseCase.snapToSurfaceRotation(int) を提供し、API ImageAnalysis.setTargetRotationDegrees(int)、ImageCapture.setTargetRotationDegrees(int)、VideoCapture.setTargetRotationDegrees(int) を非推奨にしました。(Ia9010)
  • プレビュー ユースケースのターゲット フレームレートを設定して取得できるように、新しい API Preview#getTargetFrameRate と Preview.Builder#setTargetFrameRate を追加しました(If4f22)
  • Recording オブジェクトがガベージ コレクションによって停止すると、VideoRecordEvent.Finalize はエラーコード ERROR_RECORDING_GARBAGE_COLLECTED で完了するようになります。(Iba974)

バグの修正

  • StreamConfigurationMapCompat のキャッシュされた出力サイズが null の場合に発生する NullPointerException を修正しました。(Idf124、b/282025204)
  • Preview.setSurfaceProvider(null) が拡張機能のプレビューを一時停止しない問題を修正しました(Ia903e)
  • VideoCapture がバインドされている場合に、カメラを開くときに ConcurrentModificationException がスローされる問題を修正しました。(Ic8ac4)

バージョン 1.3.0-alpha06

2023 年 4 月 19 日

androidx.camera:camera-*:1.3.0-alpha06 がリリースされました。バージョン 1.3.0-alpha06 に含まれる commit については、こちらをご覧ください。

新機能

  • 同時カメラは Android 11 で導入された新機能で、カメラデバイスの同時ストリーミングをサポートします。たとえば、デバイスは前面カメラと背面カメラの両方を同時に動作させることができます。CameraX は現在、同時デュアル カメラのみをサポートしています。これにより、2 つのカメラを同時に動作させることができ、それぞれに最大 2 つの {@link UseCase} をバインドできます。最大解像度は 720p または 1440p です。詳しくは、CameraManager#getConcurrentCameraIds() をご覧ください。
  • 次の機能をカバーする新しい ResolutionSelector API を導入しました。
    • アプリはアスペクト比と解像度の戦略を指定して、ニーズに最適な解像度を選択できます。
    • すべてのサイズとアスペクト比のパラメータは、カメラ デバイスのセンサーの座標で表されます。
    • アプリケーションは、カスタム解像度フィルタを実装して、サポートされているサイズを希望の順序で並べることができます。
    • アプリケーションで高解像度キャプチャを有効にして、高解像度の画像を取得することもできます。ただし、高解像度を使用すると、キャプチャに時間がかかることがあります。
    • VideoCapture ミラーリング API を追加しました。VideoCapture で録画された動画は、デフォルトではミラーリングされません。ただし、カメラのプレビューはデフォルトで前面カメラにミラーリングされます。VideoCapture ミラーリング API を使用すると、前面カメラを使用する際にカメラ プレビューに合わせることができます。MirrorMode、OFF、ON、ON_FRONT_ONLY の 4 つがあります。カメラのプレビューに合わせるため、ON_FRONT_ONLY の使用をおすすめします。このモードでは背面カメラではミラーリングは無効で、前面カメラの場合に有効になります。

API の変更

  • 新しい ResolutionSelector API を公開しました。アプリは、フォールバック ルールまたはカスタム解像度フィルタを使用してアスペクト比と解像度の戦略を指定し、目的の結果を得ることができます。アプリケーションは、高解像度キャプチャを有効にするフラグを指定できます。これにより、CameraX は写真や動画を撮影する際に高解像度を選択できるようになります。ただし、高解像度を使用すると、キャプチャに時間がかかることがあります。(Ibed95)
  • AE アルゴリズムでサポートされている FPS の範囲を CameraInfo#getSupportedFrameRateRanges() でクエリできるようになりました。(Iaa67f)
  • すべてのフレームレート メソッドの名前を「FrameRate」に統合します。VideoCapture#getTargetFrameRate() の Javadoc の誤りを修正(I83304)
  • 以前の setTargetAspectRatio API と setTargetResolution API を非推奨にしました。代わりに、新しい ResolutionSelector API を使用してください。(I542c3)
  • 同時デュアル カメラ用の公開 API を追加しました。これには、
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn()、ConcurrentCameraConfig、SingleCameraConfig、ConcurrentCamera(Iab1c1)
  • ImageProcessor.Response#getOutputImage を NonNull にします(Ib9c60)
  • VideoCapture.Builder.setMirrorMode(int) や VideoCapture.getMirrorMode() などの VideoCapture ミラーリング API を追加しました。この API は、動画録画を一般的なカメラ プレビューの動作(背面カメラのプレビューはミラーリングされず、前面カメラのプレビューはミラーリングされる)と一致させる必要があるアプリに役立ちます。(I713b6、b/194634656)
  • VideoCapture.Builder に setTargetFrameRate() API を追加し、VideoCapture に getTargetFramerate() API を追加(I109d4)
  • SurfaceOutput を Closable を拡張するようにし、SurfaceOutput.Event の公開コンストラクタを非表示にします。(I60ea8)
  • 処理中の録音を動的にミュートまたはミュート解除する Recording.mute を追加しました。処理中の録音が明示的にミュートされると、RecordingStats に AudioStats.AUDIO_STATE_MUTED が含まれます。(Ie17fc)
  • #setEffects() パラメータを非 null にしました。効果をクリアするための #clearEffects() API を追加します。アプリは #clearEffects() を呼び出してエフェクトを削除する必要があります。(I4b4d9)
  • コピー コンストラクタのビルダーを受け取る ViewfinderSurfaceRequest.Builder の 2 番目のコンストラクタを追加(I621a7)

バグの修正

  • Extensions API を呼び出すアプリがカメラを閉じるときにクラッシュする問題を修正しました(Ib27e5)
  • 一部のデバイスで VideoCapture が前面カメラで動作しない問題を修正しました。たとえば、Samsung Galaxy S23 や Xiaomi 2107113SG などです。(Ibec7e、b/270656244)
  • Android 10 以降で、外部ストレージのパブリック フォルダにあるファイルを使用して写真を撮影すると、常に失敗する問題を修正しました。Android 10 では、外部ストレージのパブリック フォルダ内のファイルを使用して写真を撮る場合も、アプリケーション タグで requestLegacyExternalStorage を true に設定する必要があります。(I11b2c)
  • DefaultSurfaceProcessor で発生する RejectedExecutionException のクラッシュを修正しました。クラッシュは、VideoCapture がバインドされ、アクティビティが一時停止されたときに発生する可能性があります。(Idb46a、b/273713906)

バージョン 1.3.0-alpha05

2023 年 3 月 22 日

androidx.camera:camera-*:1.3.0-alpha05 がリリースされました。バージョン 1.3.0-alpha05 に含まれる commit については、こちらをご覧ください。

API の変更

  • VideoCapture.Builder.setTargetRotation(int)、VideoCapture.setTargetRotation(int)、VideoCapture.setTargetRotationDegrees(int)、VideoCapture.getTargetRotation() などの VideoCapture ローテーション API を追加しました。この API は、デバイスの向きをロックするアプリケーションに役立ちます。ImageCapture.setTargetRotationDegrees(int) と ImageAnalysis.setTargetRotationDegrees(int) も追加されています。(Id3ffe、b/205242781)
  • 効果のターゲットとして VIDEO_CAPTURE と PREVIEW|VIDEO_CAPTURE を許可します。VIDEO_CAPTURE を対象とするエフェクトは VideoCapture UseCase に適用され、PREVIEW|VIDEO_CAPTURE を対象とするエフェクトは、Preview と VideoCapture ストリームにコピーされる前に共有ストリームに適用されます。(Iee6f3)

バグの修正

  • カメラ 1.2.2: 一部のデバイス(Google Pixel(I90aa2)など)で proguard が有効になっていると CameraX 拡張機能が正しく動作しない問題を修正しました
  • アプリが画面の向きを自身で処理する場合、回転時にプレビューが歪む可能性がある PreviewView バグを修正しました。この処理は一部のデバイスでのみ行われます。Google Pixel 4a、Google Pixel 5、Google Pixel 6a で再現できます。(I14340、b/223488673)

バージョン 1.3.0-alpha04

2023 年 2 月 22 日

androidx.camera:camera-*:1.3.0-alpha04 がリリースされました。バージョン 1.3.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

新たな機能として、複数のユースケースに対して 1 つのストリームを共有することにより、これまでサポートされていなかったサーフェスの組み合わせをサポートします。

  • 以前は、カメラのハードウェア レベルが FULL 以下で「Preview、VideoCapture、ImageAnalysis」をバインドする場合や、ハードウェア レベルが LEGACY で「Preview、VideoCapture、ImageCapture」をバインドする場合、CameraX では IllegalArgumentException がスローされました。
  • 新しい動作は、例外がスローされずに、こうしたバインディングが機能するものです。この場合、CameraX は OpenGL を使用して、共有ストリームを Preview と VideoCapture の両方にコピーします。
  • バッファのコピーのために、アプリでレイテンシと消費電力が増加する可能性があります。

API の変更

  • ImageProxy を Bitmap に変換する API を追加しました。サポートされる ImageProxy 形式は、ImageFormat.YUV_420_888 と PixelFormat.RGBA_8888 です。この形式が無効なものである場合、IllegalArgumentException がスローされます。(Ic7110)
  • CoroutineCameraViewfinder を追加しました。これにより、Kotlin で suspend 関数を使用してビューファインダーを設定できるようになりました。(I657bc)
  • ViewfinderSurfaceRequest の新しいパブリック コンストラクタを追加しました。これにより、ユーザーが CameraCharacteristics を指定できない場合に柔軟な対応が可能になります。(Ie6549)

バグの修正

  • 一部の Samsung デバイスにおいて、アプリを一時停止または再開するとすぐに発生する拡張機能のクラッシュを修正しました。(Iaca26)

バージョン 1.3.0-alpha03

2023 年 1 月 25 日

androidx.camera:camera-*:1.3.0-alpha03 がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • デフォルトのカメラに対する画角の情報を提供する CameraInfo.getIntrinsicZoomRatio を追加しました。(Ib300c)
  • レンズの向きの情報を提供する CameraInfo.getLensFacing を追加しました。外部カメラを選択するための試験運用版の機能として CameraSelector#LENS_FACING_EXTERNAL を追加しました。(Icaf3e)
  • カメラ出力にエフェクトを加えられるようにする #setEffect() を CameraController に追加しました。(I1d21f)
  • invalidate() メソッドを SurfaceRequest に追加しました。サーフェス プロバイダで、以前提供されていたサーフェスが無効になったことを通知できるようになります。(Idc649)
  • ImageProcessor API を追加しました。このインターフェースは、後処理のエフェクトを ImageCapture パイプラインに挿入するためのものです。(I575c6)
  • QualitySelector と組み合わせることができる API Recorder.Builder.setAspectRatio() を追加しました。より多くの動画解像度に対応可能となります。(I8a082)
  • Recorder.Builder#setTargetVideoEncodingBitRate を追加しました。これにより、ターゲット動画エンコード BitRate と Recorder#getTargetVideoEncodingBitRate を設定して、ターゲット動画エンコードのビットレートを取得できます。(I5984d)

バグの修正

  • フラッシュ ユニットがない場合にフラッシュ モードがオンになると ImageCapture が失敗する問題を修正しました。(I9e8b4、b/263391112)
  • 一部の Samsung Android 12 デバイスで EXIF の位置情報を書き込む場合に JPEG 画像が破損する問題を修正しました。(Ib7086、b/263747161、b/263289024)
  • カメラの初期化が完了する前にトーチやズームを設定する(例: CameraController#enableTorch を呼び出す)と、その操作は保留中としてキャッシュに保存され、初期化が完了してから送信されるようになりました。(I11e92、b/264157663)

バージョン 1.3.0-alpha02

2022 年 12 月 7 日

androidx.camera:camera-*:1.3.0-alpha02 がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • プレビューの出力に後処理効果を適用する新しい API を追加しました。(Ic17d5)
  • OutputOptions.getDurationLimit の名前を OutputOptions.getDurationLimitMillis に、OutputOptions.setDurationLimit の名前を OutputOptions.setDurationLimitMillis に変更しました。(I91f0c)
  • 動画の撮影中に音声に関する設定を処理する AudioConfig クラスを追加しました。音声が不要な場合に不要な権限リクエストを避けるため、@RequiresPermission アノテーションが startRecording 関数から AudioConfig に移動されました。(I28755)
  • 新しい動画キャプチャ API の適用により使用されなくなったメタデータ、OnVideoSavedCallback クラス、OutputFileOptions クラス、OutputFileResults クラスを削除しました。(I38cd8)
  • 新しい動画キャプチャ API を適用しました。setTargetResolution のサポートが終了したため、それに応じて getVideoCaptureTargetSize メソッドと setVideoCaptureTargetSize メソッドが、getVideoCaptureTargetQuality メソッドと setVideoCaptureTargetQuality メソッドに置き換えられました。(I2a1d5)

バグの修正

  • サポートが終了した core.VideoCapture API を削除しました。(I531e0)
  • ストレージに関する権限がない状態で写真を撮影した場合、onError コールバックが呼び出されない問題を修正しました。(I936db、b/244807669)
  • カメラ拡張機能の品質と信頼性が向上しました。カメラ拡張機能 v1.1.0 以前を使用している Motorola 製のデバイスでは、ボケのサポート、画像キャプチャ、プレビューが再開されない問題により、カメラ拡張機能が無効になっています。(Id3ce3)
  • 古いデバイスで ViewPort を使用した動画切り抜きが有効になっていると、ネイティブ コードでのクラッシュが発生する問題を修正しました。(I16b8a、b/251357665)

バージョン 1.3.0-alpha01

2022 年 11 月 9 日

androidx.camera:camera-*:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • Camera-viewfinder が正式に公開されました。Camera-viewfinder には、Camera2 のカメラフィードを表示できるベース ビューファインダー ウィジェットが用意されています。例として、サンプルコードをご覧ください。

API の変更

  • 動画の長さの上限を設定できる OutputOptions.setDurationLimit を追加しました。設定した上限を超えると、自動的に録画が終了します。(I902a0)
  • 録画の音声エラー状態 AudioStats.AUDIO_STATE_SOURCE_ERROR を追加しました。音源の設定が失敗するか、なんらかのエラーが発生すると、送信されます。(I37410)

バグの修正

  • 問題のある一部のデバイスについて、キャプチャ失敗時にキャプチャを 1 回再試行する機能を追加しました。(Id4795)
  • ViewPager2 において PreviewView SurfaceView の実装で画面が黒くなる問題を修正しました。この修正に伴い、リクエストされた解像度が変更されない場合に PreviewView は SurfaceView を再利用するようになります。(Ib3f27)
  • ViewPort API または CameraController API が使用された場合の動画のトリミング(WYSIWYG 機能)がサポートされました。(Ifbba8、b/201085351)
  • Huawei P40 lite の前面カメラで撮影された動画を記録できない問題を修正しました。(I87c57、b/250807400)

バージョン 1.2

バージョン 1.2.3

2023 年 5 月 24 日

androidx.camera:camera-*:1.2.3 がリリースされました。バージョン 1.2.3 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 一部のデバイスで VideoCapture が前面カメラで動作しない問題を修正しました。たとえば、Samsung Galaxy S23 や Xiaomi 2107113SG などです。(Ibec7e、b/270656244)

バージョン 1.2.2

2023 年 3 月 22 日

androidx.camera:camera-*:1.2.2 がリリースされました。バージョン 1.2.2 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Pixel(I90aa2)などの一部のデバイスで proguard が有効になっている場合に CameraX 拡張機能が正常に動作しない問題を修正しました

バージョン 1.2.1

2023 年 1 月 25 日

androidx.camera:camera-*:1.2.1 がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 一部の Samsung Android 12 デバイスで EXIF の位置情報を書き込む場合に JPEG 画像が破損する問題を修正しました。(b/263289024)

バージョン 1.2.0

2022 年 12 月 7 日

androidx.camera:camera-*:1.2.0 がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください。

1.1.0 以降の重要な変更

  • 新しいライブラリ camera-mlkit-vision。CameraX は MLKit の多くの機能(バーコード スキャン、顔検出、テキスト検出など)と簡単に統合できます。新しい API として MLKitAnalyzer を追加しました。
  • 新しい試験運用版 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 を追加しました。
  • VideoCapture とプレビューのユースケース(アスペクト比 16:9)を使用するとフレームレートが低下する問題を修正しました。
  • 一部の Samsung デバイスでボケ拡張機能が有効になっていて、ユーザーがカメラを切り替えたときにプレビュー画面が黒くなる問題を修正しました。
  • 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 に含まれる commit については、こちらをご覧ください。

API の変更

  • OutputConfiguration 用の setStreamUseCase API を追加しました。これにより、ユーザーはストリーム セッションで Stream のユースケースを指定し、必要に応じて最適化を行うために CameraX の内部ロジックをオーバーライドして Stream のユースケースを選択できます。(Ib1a95)

バグの修正

  • API レベル 27 のデバイスで Samsung J7 Prime(SM-G610M)および J7(SM-J710MN)の Preview/VideoCapture が引き伸ばされる問題を修正しました。1920x1080 の解像度を選択すると、Preview/VideoCapture の画像が引き伸ばされます。画像が引き伸ばされる問題の回避策として、Preview または VideoCapture で 1920x1080 の解像度を選択しない方法を追加しました。(I0e04e)
  • 一部の Huawei デバイスで VideoCapture と Preview のユースケース(アスペクト比 16:9)を使用するとフレームレートが低下する問題を修正しました。(If8c88、b/223643510)
  • Preview の SurfaceProvider が設定されていないときにカメラ起動が失敗する問題を修正しました。この修正に伴い、SurfaceProvider が設定されていない Preview はカメラ キャプチャ セッションに対して構成されなくなります。(I99681)

バージョン 1.2.0-beta02

2022 年 9 月 21 日

androidx.camera:camera-*:1.2.0-beta02 がリリースされました。バージョン 1.2.0-beta02 に含まれる commit については、こちらをご覧ください。

API の変更

  • setOutputImageRotationEnabled の API レベルの要件を追加しました。(I26e3e、b/240993561)

バグの修正

  • 問題が修正されたため、Samsung Android T で前面カメラの AF 領域を横方向に反転させる回避策を無効にしました。(I05f69)
  • 一部の Samsung デバイスで BOKEH 拡張機能が有効になっていて、ユーザーがカメラを切り替えたときに発生する黒いプレビューの問題を修正しました。(If6168)

バージョン 1.2.0-beta01

2022 年 8 月 24 日

androidx.camera:camera-*:1.2.0-beta01 がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しいライブラリ camera-mlkit-vision。CameraX は MLKit の多くの機能(バーコード スキャン、顔検出、テキスト検出など)と簡単に統合できます。サンプルコードについてはこちらでご確認ください。
  • 新しい試験運用版 Zero-Shutter Lag API。キャプチャ パイプラインを最適化して、高画質を保ちながらレイテンシを改善しています。キャプチャ モードを CAPTURE_MODE_ZERO_SHUTTER_LAG に設定すると、他のキャプチャ モードと比較して、シャッター ボタンのクリックから写真撮影までのレイテンシが最小限に抑えられます。ZERO_SHUTTER_LAG に対応していないデバイス上では、CAPTURE_MODE_MINIMIZE_LATENCY にフォールバックします。
  • ImageAnalysis.Analyzer と MLKitAnalyzer が公式 API になりました。
  • 保存された動画に位置情報メタデータを設定する API を公開しました。
  • ImageAnalysis.Analyzer#getTargetResolutionOverride() を ImageAnalysis.Analyzer#getDefaultTargetResolution() に名前変更します。

バグの修正

  • Alps k61v1_basic_ref の画像キャプチャの問題を修正しました。HAL からキャプチャされた JPEG 画像の EXIF メタデータは正しくありません。Exif メタデータには、ExifInterface が属性を正しく解析するための 0xffd9 タグや 0xffda タグがありません。この問題を回避するには、画像を YUV 形式でキャプチャし、JPEG 出力画像に圧縮します。(I45abb)

バージョン 1.2.0-alpha04

2022 年 7 月 27 日

androidx.camera:camera-*:1.2.0-alpha04 がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • ImageAnalysis.Analyzer#getTargetResolutionOverride() の名前を ImageAnalysis.Analyzer#getDefaultTargetResolution() に変更しました。動作も変更して、このメソッドが返す値を ImageAnalysis#setTargetResolution() の値でオーバーライドできるようにしました。(If1d36)
  • 保存された動画に位置情報メタデータを設定する API を公開しました。新しい API androidx.camera.video.OutputOptions.Builder.setLocation(Location) を使用して、android.location.Location オブジェクトを設定できます。(I313a0、b/204197544)

バグの修正

  • プレビューをアンバインドして写真を撮影する場合の問題を修正しました。(Ie70b6、b/235119898)
  • オーディオ ソースが利用できないときに録音しようとすると Recorder でクラッシュが発生する問題を修正しました。(I9f652)

バージョン 1.2.0-alpha03

2022 年 6 月 29 日

androidx.camera:camera-*:1.2.0-alpha03 がリリースされました。バージョン 1.2.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • ImageAnalysis.Analyzer と MLKitAnalyzer の試験運用版アノテーションを削除しました。(I0ff22)

バグの修正

  • オートフォーカスのデフォルト タイムアウト 5,000 ms を追加し、FocusMeteringAction がキャンセルされておらず、AF 部分がこの期間内に収束されない場合に、isFocusSuccessful を false にして AF 部分を完了するようにしました。(Ibc2e3)
  • バインド解除プレビューで写真を撮影する場合の問題を修正しました。(I1d3a2、b/235119898)
  • 高度なエクステンダーの実装を有効にし、CameraX 対応 extensions-interface のバージョンを 1.2 に更新しました。(I92256)

バージョン 1.2.0-alpha02

2022 年 6 月 1 日

androidx.camera:camera-*:1.2.0-alpha02 がリリースされました。バージョン 1.2.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • CameraX Zero-Shutter Lag API を試験運用版として公開しました。

API の変更

  • ImageCapture に新しいキャプチャ モード CAPTURE_MODE_ZERO_SHUTTER_LAG を追加し、デバイスの機能を問い合わせるため CameraInfo に isZslSupported を追加しました。CAPTURE_MODE_ZERO_SHUTTER_LAG モードは、瞬時のキャプチャで最小限のレイテンシを確保することを目的としています。これはリングバッファに基づいて実装されるもので、ユーザーが写真を撮影するためにボタンを押したときに、後で再処理できるように中間的なキャプチャ結果をキャッシュに保存します。{@link VideoCapture} がバインドされているか、フラッシュ モードがオフでない場合、または OEM 拡張機能がオンの場合、このモードは自動的に無効になります。(I9ae74)
  • ImageAnalysis.getBackgroundExecutor() メソッドを追加しました。(Icc945)

バグの修正

  • 報告されたデバイスで ImageCapture takePicture メソッドによってライトがオフになる問題を修正しました。(Ib5eb5、b/228272227)
  • CONTROL_ZOOM_RATIO_RANGE 特性を取得する際に AssertionError が処理されないバグを修正しました。(/Ia248a、b/231701345)

バージョン 1.2.0-alpha01

2022 年 5 月 18 日

androidx.camera:camera-*:1.2.0-alpha01 がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しいライブラリ camera-mlkit-vision のリリース

バグの修正

  • フォールバック戦略が有効な場合に、QualitySelector が UHD 動画を録画できない問題を修正しました。この問題は、FULL 以上のハードウェア レベルのカメラデバイスで VideoCapture が ImageCapture およびプレビューにバインドされている場合に発生します。QualitySelector のフォールバック戦略により、VideoCapture で FHD 解像度が誤って取得されます。UHD 解像度は、実際にはこのユースケースの組み合わせでサポートされているため、採用する必要があります。(I0e788、b/230651237)
  • ImageCapture.takePicture() の NullPointerException を修正しました。(I92366、b/230454568、b/229766155)
  • androidx.camera.video.Recorder の非同期一時停止動作を修正しました。(Ia8ce8)

Camera-Camera2、Camera-Core、Camera-Lifecycle、Camera-Video バージョン 1.1.0

バージョン 1.1.0

2022 年 6 月 29 日

androidx.camera:camera-*:1.1.0 がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください。

1.0.0 以降の重要な変更

  • 初めての RC バージョンとして View、Extension、Video Capture のライブラリを追加しました。1.1.0-beta01 以降、すべての CameraX ライブラリは同じバージョン番号に揃えられます。これにより、デベロッパーはバージョンを今までよりずっと簡単にトラッキングできるようになり、大規模なバージョン互換性マトリックスの複雑さが軽減されます。
  • 次のような新しい公開 API と機能を導入しました。
  • 動画キャプチャのユースケースをサポートするよう公式の camera-video ライブラリを追加しました。
  • YUV から RGB への変換機能と回転機能(ImageAnalysis.Builder.setOutputImageRotationEnabled、setOutputImageFormat)を追加しました。
  • マルチ ウィンドウ モードに対応するよう、カメラが別のアプリで中断されてフォーカスが戻ったときに CameraX アプリがカメラを再開できるようにしました。
  • CameraX が折りたたみ式デバイスで適切に動作するよう、一部のプレビュー問題を修正しました。
  • CameraInfo を通じて公開される CameraState API を追加しました。
  • 使用可能なカメラに関する情報を直接取得する API ProcessCameraProvider.getAvailableCameraInfos() を追加しました。
  • Extensions が有効になっている場合、ImageCapture#OnImageCapturedCallback に JPEG 出力形式を使用するように更新しました。
  • CameraInfo に API isFocusMeteringSupported を追加し、指定された FocusMeteringAction が現在のカメラでサポートされているかどうかをアプリで確認できるようにしました。
  • ImageCapture、ImageAnalysis の解像度情報を提供する getResolutionInfo API を公開しました。
  • 写真の撮影時に JPEG 出力画像の圧縮品質の変更を許可する新しい API ImageCapture.Builder#setJpegQuality を追加しました。
  • CameraSelector#filter を公開 API に追加し、CameraSelector に基づいて CameraInfos のリストをフィルタリングできるようにしました。
  • 既存のキャプチャ リクエスト オプションをクリアできるように、Camera2CameraControl.clearCaptureRequestOptions を追加しました。
  • MLKit のような外部画像処理ライブラリで CameraController を使用するための試験運用版の API を追加しました。
  • カメラに固有の CameraSelector を返す試験運用版の API CameraInfo#getCameraSelector() を追加しました。
  • 複数の試験運用版の API を正式な公開 API に昇格させました。
  • 試験運用版の API に対するアノテーション @Experimental を @RequiresOptIn に置き換えました。試験運用版の API を呼び出す場合は、非推奨の androidx.annotation.experimental.UseExperimental ではなく androidx.annotation.OptIn を使用してください。
  • 試験運用版の API CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler() を正式な API に昇格させました。
  • @ExperimentalCameraFilter API
  • 試験運用版の露出補正用 API。
  • camera-core、camera-lifecycle、camera-video の試験運用版の UseCaseGroup API を昇格させました。ビューポートをカスタマイズするための ViewPort#getLayoutDirection、ViewPort.Builder#setLayoutDirection、ViewPort.Builder#setScaleType を追加しました。
  • ExperimentalUseCaseGroupLifecycle を正式な公開 API に昇格させました。
  • 既存の API の変更
  • Renamed MediaStoreOutputOptions.getCollection を MediaStoreOutputOptions.getCollectionUri に変更しました。
  • 冗長にならないよう ActiveRecording の名前を「Recording」に変更しました。
  • QualitySelector 作成用 API をリストベースの API に変更しました

バグの修正

  • Extensions モードが有効で ImageCapture#CAPTURE_MODE_MAX_QUALITY モードが設定されている場合に YuvToJpegProcessor EOFException が発生する問題を修正しました。
  • 録画が終了しているためにコーデックの設定が失敗する問題を修正しました。
  • FHD で録画する場合にプレビュー / 動画のアスペクト比が引き伸ばされる問題を修正しました。
  • 一部のデバイスで一時停止と再開が行われた後に音声と映像が同期しなくなる問題を修正しました。
  • フラッシュ モードが auto または always_on の場合に、暗い場所でフォーカスがタップされると(startFocusAndMetering)フラッシュがトリガーされる問題を修正しました。

バージョン 1.1.0-rc02

2022 年 6 月 1 日

androidx.camera:camera-*:1.1.0-rc02 がリリースされました。バージョン 1.1.0-rc02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • ImageCapture.takePicture() の NullPointerException を修正しました。(I92366、b/230454568、b/229766155)
  • CONTROL_ZOOM_RATIO_RANGE 特性を取得する際に AssertionError が処理されないバグを修正しました。(Ia248a、b/231701345)

バージョン 1.1.0-rc01

2022 年 5 月 11 日

androidx.camera:camera-*:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください。

新機能

  • camera-video、camera-view、camera-extension の最初の RC バージョンをリリース

バグの修正

  • VideoCapture<Recorder> のバインドが解除されたときに動画コーデックがリリースされず、それ以降に VideoCapture<Recorder> を使用すると、MediaCodec.CodecException での録画が(特に API 21~22 デバイスで)失敗する問題を修正しました。(Ie7f68)
  • キャプチャした CameraExtensionsActivity の画像が ImageCaptureTest で削除されない問題を修正

バージョン 1.1.0-beta03

2022 年 4 月 6 日

androidx.camera:camera-*:1.1.0-beta03 がリリースされました。バージョン 1.1.0-beta03 に含まれる commit については、こちらをご覧ください。

API の変更

  • CaptureRequestOptions コンストラクタを制限しました。(I261b6)
  • MLKit のような外部画像処理ライブラリで CameraController を使用するための試験運用版 API を追加しました。(I4ea71)

バグの修正

  • マルチウィンドウでデバイスを回転した後にアクティビティが再起動されない場合、プレビューが PreviewView で横向きになる問題を修正しました。(I1ea36、b/223488673)
  • (1)他の優先度の高いアプリが別のカメラを開いたとき(2)デバイスが Samsung Android 12 デバイスの場合、フォーカスがアプリに戻ったときにカメラを再開できないというマルチウィンドウの問題を修正しました。(I7e9f2)
  • Flash の可用性チェック時にクラッシュするデバイス向けの回避策を追加しました。このようなデバイスでは、トーチは使用できません。(If26a3、b/216667482)
  • アプリが拡張機能を使用していて ProGuard を有効にしている場合に発生する AbstractMethodError の問題を修正しました。(I7cbaf、b/222726805)
  • Motorola razr 5G デバイスで、ボケ拡張モードを強制的に無効にします。これにより、プレビュー画面が黒くなる問題が発生します。(I35d49)
  • API 29 以前の一部の Samsung デバイスで、一時停止と再開が行われた後に音声と映像が同期しなくなる問題を修正しました。(I64622、b/202798609、b/202798572)
  • Sony G3125 で一時停止と再開が行われた後に音声と映像が同期しなくなる問題を修正しました。(I2a1a5、b/202799148)
  • レコーダーで InvalidConfigException が発生したときのクラッシュを修正しました。ただし、この修正はアプリのクラッシュを防ぐのみで、InvalidConfigException の原因を解決したわけではありません。依然として Recorder が設定できない場合、録音を開始すると、アプリはエラー コールバックを受け取ります。(I89c29、b/213617227)

外部からの協力

  • test-coroutines-lib の移行により :compose:ui:ui-test API(updateApi)を更新しました。(I3366d)

バージョン 1.1.0-beta02

2022 年 2 月 23 日

androidx.camera:camera-*:1.1.0-beta02 がリリースされました。バージョン 1.1.0-beta02 に含まれる commit については、こちらをご覧ください。

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-beta01 がリリースされました。バージョン 1.1.0-beta01 に含まれる commit については、こちらをご覧ください。

新機能

  • 1.1.0-beta01 以降、すべての CameraX ライブラリは同じバージョン番号に揃えられます。これにより、デベロッパーはバージョンを今までよりずっと簡単にトラッキングできるようになり、大規模なバージョン互換性マトリックスの複雑さが軽減されます。

API の変更

  • 既存のキャプチャ リクエスト オプションをクリアできるように、Camera2CameraControl.clearCaptureRequestOptions を追加しました。(Ifa07d)

バグの修正

  • Android O(API 26)より前の一部のデバイスで動画を録画するとクラッシュする問題を修正しました。(I88fdf、b/212328261)
  • Samsung デバイスの前面レンズカメラで cameraControl#startFocusAndMetering() を使用したときの誤った AF 領域の問題を修正しました。(Ifbf59、b/210548792)
  • Google Pixel 3a / Google Pixel 3a XL で、暗い場所で撮影する際の速度と画質を改善するため、トーチをフラッシュとして使用するようにしました。(Ib12b6、b/211474332)
  • マルチ ウィンドウ モードで、カメラがより優先度の高い他のアプリによって中断された後でアプリにフォーカスが戻ったときに、アプリがカメラを再起動できるようにしました。フレームワークの問題により、フォーカスが変更されてからカメラが再起動されるまでにレイテンシ(1 秒から 10 秒またはそれ以上)が発生する場合があります。(I4d092)

バージョン 1.1.0-alpha12

2021 年 12 月 15 日

androidx.camera:camera-*:1.1.0-alpha12 がリリースされました。バージョン 1.1.0-alpha12 に含まれる commit については、こちらをご覧ください。

API の変更

  • 内部クラス / インターフェースから不要な @RequiresApi(21) アノテーションを削除しました(I8e286、b/204917951)。
  • QualitySelector の QUALITY 定数と FALLBACK STRATEGY 定数が、クラス オブジェクトで表されるよう変更されました。たとえば、QualitySelector.QUALITY_HD は Quality.HD に変更され、QualitySelector.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)。

バグの修正

  • Google Pixel 3a、Google Pixel 3a XL で FLASH_AUTO モードで撮影した写真が暗い環境で露出不足になる問題を解決しました(I13f19、b/205373142)。
  • プレビューの Resolution を判断する場合に常に最新のディスプレイ サイズを使用するようになりました(I4a694)。
  • REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE のないカメラを除外しました。REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE のあるカメラには、すべてのカメラデバイスがサポートする最小限の機能セットが搭載されています。REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE のないカメラは、特別な機能をサポートするカメラである可能性があり、標準のカラー出力をサポートしていません。CameraX は、これらのカメラの Preview、ImageCapture、ImageAnalysis、VideoCapture のユースケースをサポートできません。そのため、不適切な使用を防ぐため、これらのカメラを除外する必要があります(Ib8cda)。
  • 結果セットが空の場合に、CameraSelector#filter が IllegalArgumentException をスローしなくなりました(I27804)。
  • OEM 指定のプロファイルに基づいてエンコーダの設定を選択するよう、より高度なヒューリスティックが使用されるようになりました(Iaeef0)。
  • Google Pixel1 で UHD の動画撮影を開始すると、固定プレビューでカラーラインがインターレース方式になります(I833c6、b/205340278)。

バージョン 1.1.0-alpha11

2021 年 11 月 17 日

androidx.camera:camera-*:1.1.0-alpha11 がリリースされました。バージョン 1.1.0-alpha11 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraSelector#filter を公開 API に追加し、CameraSelector に基づいて CameraInfo のリストをフィルタリングできるようにしました。(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) へのマッピングです。マトリックスを使用すると、1 つの {UseCase} から別の {UseCase} に座標をマッピングできます。たとえば、ImageAnalysis で検出された顔の座標を Preview にマッピングします。(I9ff1e)

  • 新しい API ImageCapture.Builder#setJpegQuality を追加し、撮影時に出力 JPEG 画像の圧縮品質を変更できるようにしました。(I8dcf4)

  • MediaStoreOutputOptions.getCollection の名前を MediaStoreOutputOptions.getCollectionUri に変更しました。(I16639)

バグの修正

  • フラッシュ モードが自動または常にオンの場合に、暗い場所でフォーカスがタップされると(startFocusAndMetering)フラッシュが起動される問題を修正しました。(Id4c11)
  • レイテンシを短縮するために、MINIMIZE_LATENCY モードで Pixel 2 XL / Pixel 3 XL の HDR+ を無効にしました。(Ib6270、b/203505523)

外部からの協力

バージョン 1.1.0-alpha10

2021 年 10 月 13 日

androidx.camera:camera-*:1.1.0-alpha10 がリリースされました。バージョン 1.1.0-alpha10 に含まれる commit については、こちらをご覧ください。

新機能

  • 動画向けの最初のアルファ版として正式に androidx.camera:camera-video:1.1.0-alpha10 がリリースされました。今後のリリースでは、複数の既知の問題が修正される予定です。

API の変更

  • @RequiresApi(21) アノテーションをすべての CameraX クラスに追加し、AndroidManifest.xml から minSdkVersion を削除しました。これにより、minSdkVersion が 21 未満のアプリに camera-core を簡単に組み込めるようになりますが、API 21 以降に依存するコードパスは条件付きで使用することをおすすめします。minSdkVersiong が 21 以降のアプリの場合、この変更に対応する必要はありません。(Ie7f2e、b/200599470)

バグの修正

  • CameraCharacteristics の作成時に発生した AssertionError をアプリで適切に処理できるようにするために、InitializationException をスローします。(Ibec79)

バージョン 1.1.0-alpha09

2021 年 9 月 29 日

androidx.camera:camera-camera2:1.1.0-alpha09、androidx.camera:camera-core:1.1.0-alpha09、androidx.camera:camera-lifecycle:1.1.0-alpha09 がリリースされました。バージョン 1.1.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • API が試験運用版でなくなったため、ExperimentalUseCaseGroup アノテーションが削除されました。(I01ef5)

バグの修正

  • 撮影した写真が MAXIMIZE_QUALITY モードで不鮮明になる問題を修正しました。(I173a9、b/193823892)
  • Samsung Galaxy J5 で、暗い環境でフラッシュをオン / 自動にして写真を撮影するとカメラが動かなくなる問題を修正しました。(I3aab9)
  • ImageCapture で切り抜きが必要な場合は、設定された撮影モードに応じて、出力の切り抜き画像を指定された JPEG 品質レベルで圧縮します。撮影モードが CAPTURE_MODE_MINIMIZE_LATENCY の場合、JPEG 圧縮の品質は 95 になります。撮影モードが CAPTURE_MODE_MAXIMIZE_QUALITY の場合、JPEG 圧縮の品質は 100 になります。(Ieb37c、b/142856426)

バージョン 1.1.0-alpha08

2021 年 8 月 18 日

androidx.camera:camera-camera2:1.1.0-alpha08、androidx.camera:camera-core:1.1.0-alpha08、androidx.camera:camera-lifecycle:1.1.0-alpha08 がリリースされました。バージョン 1.1.0-alpha08 に含まれる commit については、こちらをご覧ください。

新機能

  • 画像解析構成用の setOutputImageFormat API を追加します。ユーザーは、ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 または ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888 を選択できます。デフォルトでは、ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 が選択されます。(I7902d)

API の変更

  • API が試験運用版でなくなったため、ExperimentalUseCaseGroupLifecycle アノテーションが削除されました。(I17b85)

バグの修正

  • Huawei P20 Lite のプレビュー画面が明るすぎる問題を修正しました。この問題は、特定の特別なプレビュー解像度が大きなズームイン値とともに使用される場合にのみ、発生します。(Idefce、b/192129158)
  • 一部のデバイスで、フラッシュ モードを FLASH_MODE_ON に設定してすぐに写真を撮影するとフラッシュが動作しない問題を修正しました。(Ieb49b)
  • VideoCapture、ImageCapture、Preview がバインドされている場合に写真を撮ると、プレビューがしばらく停止する問題を修正しました。(I56197、b/193864120)
  • ImageAnalysis で 1080p を超える解像度を選択できるようにします。LIMITED レベル以上のデバイスは、Preview と ImageCapture でバインドされている場合、ImageAnalysis の RECORD サイズ解像度をサポートできます。そのトレードオフとして、ImageCapture で選択した解像度も RECORD サイズ解像度にする必要があります。ImageAnalysis の RECORD サイズ解像度を正常に選択するには、ImageCapture と ImageAnalysis の両方に RECORD サイズのターゲット解像度を設定する必要があります。これは、アプリがトレードオフを明確に理解し、MAXIMUM 解像度を持つ ImageCapture よりも、もっと大きい解像度を持つ ImageAnalysis を優先することを示します。RECORD サイズおよび MAXIMUM サイズの定義と、詳細な情報については、https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture をご覧ください。RECORD サイズは、カメラデバイスでサポートされる最大記録解像度であり、CamcorderProfile によって決定されます。MAXIMUM サイズは、その形式のカメラデバイスの最大出力解像度か、または StreamConfigurationMap.getOutputSizes(int) のターゲット解像度を指します。(I1ee97、b/192911449)
  • 撮影する画像に EXIF 情報を追加します。(I01ff0、b/193342619)
  • ImageCapture では、保存場所がファイルの場合、保存された画像の URI を返します。(Ib5b49、b/149241379)
  • 多くのデバイスで、フラッシュを使用して撮影した画像が暗くなる問題を修正しました。(I4e510)

バージョン 1.1.0-alpha07

2021 年 7 月 21 日

androidx.camera:camera-camera2:1.1.0-alpha07、androidx.camera:camera-core:1.1.0-alpha07、androidx.camera:camera-lifecycle:1.1.0-alpha07 がリリースされました。バージョン 1.1.0-alpha07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 暗い環境でフラッシュをオン / 自動にして写真を撮影した後でカメラが動かなくなる Samsung Galaxy Note 5 の問題を修正しました。(If6871)
  • 拡張機能モードが有効で ImageCapture#CAPTURE_MODE_MAX_QUALITY モードが設定されている場合に YuvToJpegProcessor EOFException が発生する問題を修正しました。(I538bd、b/192017012)

バージョン 1.1.0-alpha06

2021 年 6 月 30 日

androidx.camera:camera-camera2:1.1.0-alpha06、androidx.camera:camera-core:1.1.0-alpha06、androidx.camera:camera-lifecycle:1.1.0-alpha06 がリリースされました。バージョン 1.1.0-alpha06 に含まれる commit については、こちらをご覧ください。

API の変更

  • camera-core の試験運用版の露出補正 API を昇格させます(I08ee8)
  • CameraInfo に API isFocusMeteringSupported を追加しました。指定された FocusMeteringAction が現在のカメラでサポートされているかどうかをアプリで確認できるようにするものです。(Ib45ae、b/188606490)
  • Preview、ImageCapture、ImageAnalysis の解像度情報を提供する getResolutionInfo API を公開しました。(I2b613、b/188600718)
  • 次の試験運用版の API を正式な API に昇格させました。CameraXConfig.Builder#setAvailableCamerasLimiter()、CameraXConfig.Builder#setMinimumLoggingLevel()、CameraXconfig.Builder#setSchedulerHandler()、CameraXConfig#getAvailableCamerasLimiter()、CameraXConfig#getMinimumLoggingLevel()、CameraXConfig#getCameraExecutor()、CameraXConfig#getSchedulerHandler()(I2ade2)
  • カメラのセットへのアクセスを提供する CameraProvider インターフェースを公開しました。(I1a7b1)
  • camera-core、camera-lifecycle、camera-video の試験運用版の UseCaseGroup API を昇格させます。ビューポートをカスタマイズするための ViewPort#getLayoutDirection、ViewPort.Builder#setLayoutDirection、ViewPort.Builder#setScaleType を追加しました。(I7cee8)

バージョン 1.1.0-alpha05

2021 年 6 月 2 日

androidx.camera:camera-camera2:1.1.0-alpha05、androidx.camera:camera-core:1.1.0-alpha05、androidx.camera:camera-lifecycle:1.1.0-alpha05 がリリースされました。バージョン 1.1.0-alpha05 に含まれる commit については、こちらをご覧ください。

API の変更

  • Camera2CameraFilter クラスを削除しました。CameraFilter でカメラを選択し、必要に応じて Camera2CameraInfo を使用して、CameraCharacteristics または他の Camera2 に関連する情報を取得することをおすすめします。(Ib887c)
  • ExperimentalCameraFilter API は試験運用版から正式な API になりました。アノテーション付き OptIn がなくても使用できます。(I4bc94)
  • CameraInfo#getCameraState() を通じて公開されるカメラ状態 API を追加しました。(Ia86b4)
  • カメラに固有の CameraSelector を返す試験運用版 API CameraInfo#getCameraSelector() を追加しました。(I77f9f)

バグの修正

  • 一部の Android 11 デバイスで、setZoomRatio と setLinearZoom で返される ListenableFuture が完了できない問題を修正しました。(I716d7)
  • カメラの切り替えを高速化し、カメラデバイスのエラー率を下げました。(I34c99)
  • ExperimentalUseCaseGroupLifecycle を ExperimentalUseCaseGroup に置き換えました。(I3b2ef、b/159033688)

バージョン 1.1.0-alpha04

2021 年 4 月 21 日

androidx.camera:camera-camera2:1.1.0-alpha04、androidx.camera:camera-core:1.1.0-alpha04、androidx.camera:camera-lifecycle:1.1.0-alpha04 がリリースされました。バージョン 1.1.0-alpha04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 複数のスレッドが同じコレクションに同時にアクセスすることによって生じるメモリリークを修正しました。このメモリリークにより、Activity または Fragment が Preview インスタンスによって保持される可能性がありました。(I7b4b8)
  • 試験運用版の API に対するアノテーション @Experimental を @RequiresOptIn に置き換えました。試験運用版の API を呼び出す場合は、非推奨の androidx.annotation.experimental.UseExperimental ではなく androidx.annotation.OptIn を使用してください。(Iff226)
  • Samsung Galaxy S7 で、ImageCapture を使用してフラッシュをオン / 自動にした状態で撮影した画像が白っぽくなる問題を修正しました。(I30001)
  • CameraInfo を通じて公開される CameraState API を追加しました。(I75392)

バージョン 1.1.0-alpha03

2021 年 3 月 24 日

androidx.camera:camera-camera2:1.1.0-alpha03、androidx.camera:camera-core:1.1.0-alpha03、androidx.camera:camera-lifecycle:1.1.0-alpha03 がリリースされました。バージョン 1.1.0-alpha03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Extensions モードが有効になっている場合、ImageCapture#OnImageCapturedCallback に JPEG 出力形式を使用するように更新しました。(I0d7b1)
  • UMIDIGI BISON デバイスで初期化が失敗する問題を修正しました。(I57d9e、b/180818665)
  • Samsung A3 で PreviewView のプレビューが引き伸ばされる問題を修正しました。(Iacb30、b/180121821)

バージョン 1.1.0-alpha02

2021 年 2 月 24 日

androidx.camera:camera-camera2:1.1.0-alpha02、androidx.camera:camera-core:1.1.0-alpha02、androidx.camera:camera-lifecycle:1.1.0-alpha02 がリリースされました。バージョン 1.1.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • 使用可能なカメラ(デバイスのすべてのカメラ、または CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector) で指定された CameraSelector により選択されたカメラ)に関する情報を直接取得するための API ProcessCameraProvider.getAvailableCameraInfos() を追加しました。(Ieac08)

バグの修正

  • CameraX が最初の試行でカメラを強制的に起動しようと試みるようになりました。これにより、CameraX は、CameraX を使用するアプリの優先度が高い場合、他のカメラ クライアントからカメラ制御を奪ってしまう場合があります。(Iab069、b/175820568)
  • CameraXConfig で setAvailableCamerasLimiter が使用されているときに Robolectric テストが失敗する問題を修正しました。(Ice307)
  • この変更では、ImageAnalysis で画像のキューが最大値に達した際に例外をキャッチします。そのため、他のユースケースで、クラッシュではなく、フリーズや遅延が発生することがあります(プレビューのフリーズや遅延など)。(Ic12da、b/175851631)
  • Preview または ImageCapture がバインドされたときのみにエラーを報告するように ExtensionsErrorListener を修正しました。(I5ae39)
  • 撮影前の画像保存場所の検証を削除することで、ImageCapture のパフォーマンス低下を修正しました。この変更後は、保存先が無効な場合、失敗レスポンスが返されるまでに時間がかかります。これは、撮影後に画像の保存を試みるためです。(I1fd4e、b/177061560)
  • 「File」型 OutputFileOptions による ImageCapture のパフォーマンス低下を修正しました。(I5164a、b/177061560)
  • ライブラリ コードの ProcessCameraProvider.configureInstance(...) の使用を避けることを推奨するようにドキュメントを更新しました。(Ib8a9f)

バージョン 1.1.0-alpha01

2021 年 1 月 27 日

androidx.camera:camera-camera2:1.1.0-alpha01、androidx.camera:camera-core:1.1.0-alpha01、androidx.camera:camera-lifecycle:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • SM-G930T 背面カメラでの JPEG 形式画像データの断続的破損の回避策を追加しました。(I52001、b/159831206)
  • プレビューでサポートされるすべてのサイズが 640x480 より小さく、表示サイズが 640x480 より大きい場合に発生していた IllegalArgumentException の問題を修正しました。(I2a63c、b/150506192)
  • 明示的に宣言されたパブリック リソースを持たないライブラリ内のリソース(public.xml 経由など)が、デフォルトで非公開になりました。(Ia1dcc、b/170882230)

Camera-Camera2、Camera-Core、Camera-Lifecycle バージョン 1.0.2

バージョン 1.0.2

2021 年 9 月 29 日

androidx.camera:camera-camera2:1.0.2、androidx.camera:camera-core:1.0.2、androidx.camera:camera-lifecycle:1.0.2 がリリースされました。バージョン 1.0.2 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 撮影した写真が MAXIMIZE_QUALITY モードで不鮮明になる問題を修正しました。(I173a9、b/193823892)
  • 多くのデバイスで、フラッシュを使って撮影した画像が暗くなる問題を修正しました。(I4e510)

Camera-Camera2、Camera-Core、Camera-Lifecyce バージョン 1.0.1

バージョン 1.0.1

2021 年 7 月 21 日

androidx.camera:camera-camera2:1.0.1、androidx.camera:camera-core:1.0.1、androidx.camera:camera-lifecycle:1.0.1 がリリースされました。バージョン 1.0.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 一部の Android 11 デバイスで、setZoomRatio と setLinearZoom で返される ListenableFuture を完了できない問題を修正しました。(I716d7)

  • 一部のデバイスで、カメラを閉じた状態でカメラが動かなくなり、プレビュー画面が黒くなる問題を修正しました。(I34c99)

Camera-Camera2、Camera-Core、Camera-Lifecycle バージョン 1.0.0

バージョン 1.0.0

2021 年 5 月 5 日

androidx.camera:camera-camera2:1.0.0、androidx.camera:camera-core:1.0.0、androidx.camera:camera-lifecycle:1.0.0 がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。

1.0.0 の主な機能

  • CameraX は、プレビュー、ImageCapture、分析をサポートしています。
  • CameraX は、使いやすい API 内にあるカメラのライフサイクルを管理します。
  • CameraX は、Android のカメラ エコシステムにおける多くの問題を修正する互換性レイヤの提供を目的としています。

既知の問題

バージョン 1.0.0-rc05

2021 年 4 月 21 日

androidx.camera:camera-camera2:1.0.0-rc05、androidx.camera:camera-core:1.0.0-rc05、androidx.camera:camera-lifecycle:1.0.0-rc05 がリリースされました。バージョン 1.0.0-rc05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Samsung Galaxy S7 で、ImageCapture を使用してフラッシュをオン / 自動にした状態で撮影した画像が白っぽくなる問題を修正しました。(I30001)

バージョン 1.0.0-rc04

2021 年 3 月 24 日

androidx.camera:camera-camera2:1.0.0-rc04、androidx.camera:camera-core:1.0.0-rc04、androidx.camera:camera-lifecycle:1.0.0-rc04 がリリースされました。バージョン 1.0.0-rc04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • UMIDIGI BISON デバイスで初期化が失敗する問題を修正しました。(I57d9e、b/180818665)

バージョン 1.0.0-rc03

2021 年 2 月 24 日

androidx.camera:camera-camera2:1.0.0-rc03、androidx.camera:camera-core:1.0.0-rc03、androidx.camera:camera-lifecycle:1.0.0-rc03 がリリースされました。バージョン 1.0.0-rc03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • ProcessCameraProvider#getInstance のドキュメントの形式エラーを修正
  • CameraXConfig で setAvailableCamerasLimiter が使用されているときに Robolectric テストが失敗する問題を修正しました。
  • 撮影前の画像保存場所の検証を削除することで、ImageCapture のパフォーマンス低下を修正しました。この変更後は、保存先が無効な場合、失敗レスポンスが返されるまでに時間がかかります。これは、撮影後に画像の保存を試みるためです
  • この変更では、ImageAnalysis で画像のキューが最大値に達した際に例外をキャッチします。そのため、他のユースケースで、クラッシュではなく、フリーズや遅延が発生することがあります(プレビューのフリーズや遅延など)。
  • SM-G930T 背面カメラでの JPEG 形式画像データの断続的破損の回避策を追加しました。(I52001、b/159831206)
  • この変更では、ImageAnalysis で画像のキューが最大値に達した際に例外をキャッチします。そのため、他のユースケースで、クラッシュではなく、フリーズや遅延が発生することがあります(プレビューのフリーズや遅延など)。(Ic12da、b/175851631)
  • CameraXConfig で setAvailableCamerasLimiter が使用されているときに Robolectric テストが失敗する問題を修正しました。(Ice307)
  • 撮影前の画像保存場所の検証を削除することで、ImageCapture のパフォーマンス低下を修正しました。この変更後は、保存先が無効な場合、失敗レスポンスが返されるまでに時間がかかります。これは、撮影後に画像の保存を試みるためです。(I1fd4e、b/177061560)
  • 「File」型 OutputFileOptions による ImageCapture のパフォーマンス低下を修正しました。(I5164a、b/177061560)

バージョン 1.0.0-rc02

2021 年 1 月 27 日

androidx.camera:camera-camera2:1.0.0-rc02、androidx.camera:camera-core:1.0.0-rc02、androidx.camera:camera-lifecycle:1.0.0-rc02 がリリースされました。バージョン 1.0.0-rc02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • プレビューでサポートされるすべてのサイズが 640x480 より小さく、表示サイズが 640x480 より大きい場合に発生していた IllegalArgumentException の問題を修正しました。(b/150506192)
  • カメラの再起動試行回数の上限を設定します。カメラを開いたときに特定の問題から復元を試みる際、CameraX はカメラの再起動を無制限には試行せず、10 秒間再試行した後に停止するようになります。I435d2

  • プレビューでサポートされるすべてのサイズが 640x480 より小さく、表示サイズが 640x480 より大きい場合に発生していた IllegalArgumentException の問題を修正しました。(I2a63c、b/150506192)

バージョン 1.0.0-rc01

2020 年 12 月 16 日

androidx.camera:camera-camera2:1.0.0-rc01、androidx.camera:camera-core:1.0.0-rc01、androidx.camera:camera-lifecycle:1.0.0-rc01 がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraInfo を取得できるように CameraFilter と Camera2Filter を変更しました。(I6883d)
  • 試験運用版クラス Camera2CameraControl を追加し、Camera2 API との動的な相互運用が可能になりました。(I45cf3)
  • Camera2CameraInfo#fromCameraInfo が #from という名前に変更されました。(Ia2bd6)
  • 試験運用版の setAvailableCamerasLimiter API を CameraXConfig に追加し、アプリが未使用カメラの初期化を回避することで初期化レイテンシを最適化できるようにしました。(I6cf88)
  • 試験運用版のメソッド CameraXConfig.Builder#setMinimumLoggingLevel() を追加し、CameraX ログの最小ロギングレベルを設定できるようにしました。設定しない場合、デフォルトで Log#DEBUG になります。(Ic3245)

バグの修正

  • SM-G930V 背面カメラでの JPEG 形式画像データの断続的破損の回避策を追加しました。(I5aca5、b/159831206)
  • Samsung SM-A716 デバイスにおいて、薄暗い環境でフラッシュを常時点灯にしているときに写真を撮影しても結果が得られない問題を修正しました。(If98b2、b/172036589)
  • Preview.setSurfaceProvider(null) を呼び出してもプレビューを停止できない問題を修正しました。(I3ac18)
  • 一部のデバイスで 4:3 の画像をキャプチャする際の画面の向きの問題を修正しました。(I0e3fb、b/171492111)

Camera Camera2、Core、Lifecycle バージョン 1.0.0-beta12

2020 年 11 月 11 日

androidx.camera:camera-camera2:1.0.0-beta12、androidx.camera:camera-core:1.0.0-beta12、androidx.camera:camera-lifecycle:1.0.0-beta12 がリリースされました。バージョン 1.0.0-beta12 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Samsung A3 デバイスで自動フラッシュを無効にして、Samsung A3 デバイスの自動フラッシュ AE モードで写真を撮影する際のクラッシュを解決しました。(Ia5fe3、b/157535165)
  • Android L(API レベル 21 と 22)を搭載した Nexus 4 デバイスでプレビューが引き伸ばされる問題を修正しました。(I4d407、b/158749159)
  • OnImageCapturedCallback#onCaptureSuccess 基本クラスの実装によって画像が閉じられることがないようにしました。これは、デベロッパーにとっての予期せぬ動作を防ぐための措置です。デベロッパーは、画像を閉じる目的で super.onCaptureSuccess を使用すべきではありません。(Ifbf9c)
  • Kotlin と同等の機能を提供するために、試験運用版アノテーションの androidx バリアントは非推奨になりました。これは RequiresOptIn アノテーションに置き換えられ、Java 向けのリンターは新しい Kotlin アノテーションと新しい androidx バリアントの両方をサポートするように更新されました。(I52495、b/151331381)

Camera-Camera2 バージョン 1.0.0-beta11

2020 年 10 月 14 日

androidx.camera:camera-camera2:1.0.0-beta11 がリリースされました。バージョン 1.0.0-beta11 に含まれる commit については、こちらをご覧ください。

新機能

  • 有効な CONTROL_ZOOM_RATIO_RANGE を含む Android 11 以降のデバイスで、ズーム用の Android 11 CONTROL_ZOOM_RATIO API をサポートします。(I62cc6)

バグの修正

  • カメラ ID が整数ではない場合に発生していた NumberFormatException の問題を修正しました。(Ib2228)
  • CameraX の初期化と bindToLifecycle のレイテンシを改善しました。(I61dc5)
  • ユースケースを作成するのに CameraX の初期化を完了する必要はありません。公開 API が ProcessCameraProvider.bindToLifecycle() である Camera インスタンスに UseCase が接続されると、実装固有の構成はすべて UseCase に設定されるようになります。(Ia5411)
  • Camera インスタンスに接続する前に <UseCase>.getTargetRotation() を呼び出すと、Surface.ROTATION_0 が返されます。ただし、Builder または UseCase に targetRotation が設定されている場合はその限りではありません。(I80fcd)

Camera-Core バージョン 1.0.0-beta11

2020 年 10 月 14 日

androidx.camera:camera-core:1.0.0-beta11 がリリースされました。バージョン 1.0.0-beta11 に含まれる commit については、こちらをご覧ください。

新機能 - 有効な CONTROL_ZOOM_RATIO_RANGE を含む Android 11 以降のデバイスで、ズーム用の Android 11 CONTROL_ZOOM_RATIO API をサポートします。(I62cc6)

バグの修正

  • カメラ ID が整数ではない場合に発生していた NumberFormatException の問題を修正しました。(Ib2228)
  • ユースケースを作成するのに CameraX の初期化を完了する必要はありません。公開 API が ProcessCameraProvider.bindToLifecycle() である Camera インスタンスに UseCase が接続されると、実装固有の構成はすべて UseCase に設定されるようになります。(Ia5411)
  • Camera インスタンスに接続する前に <UseCase>.getTargetRotation() を呼び出すと、Surface.ROTATION_0 が返されます。ただし、Builder または UseCase に targetRotation が設定されている場合はその限りではありません。(I80fcd)

Camera-Core バージョン 1.0.0-beta10

2020 年 9 月 23 日

androidx.camera:camera-core:1.0.0-beta10 がリリースされました。バージョン 1.0.0-beta10 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 画像キャプチャのファイル保存先の検証に関するバグを修正しました。(I8c565、b/167697553)

Camera-Camera2 バージョン 1.0.0-beta10

2020 年 9 月 23 日

androidx.camera:camera-camera2:1.0.0-beta10 がリリースされました。バージョン 1.0.0-beta10 に含まれる commit については、こちらをご覧ください。

バグの修正

Camera-Camera2 バージョン 1.0.0-beta09

2020 年 9 月 16 日

androidx.camera:camera-camera2:1.0.0-beta09 がリリースされました。バージョン 1.0.0-beta09 に含まれる commit については、こちらをご覧ください。

API の変更

  • Camera2CameraInfo は、静的メソッドを提供するのではなく、Camera2 関連の情報を取得するために作成されたとき、CameraInfo インスタンスを受け取ります。(I5b844)

バグの修正

  • タブレット デバイスのターゲット アスペクト比の問題を修正しました。ターゲットのアスペクト比が AspectRatio.RATIO_16_9 に設定されている場合は、16:9 サイズを選択する必要があります。(Ib7fcf、b/151969438)
  • CameraCharacteristics の作成時に発生した AssertionError をアプリで適切に処理できるようにするために、InitializationException をスローします。(I89c8c、b/160524721)
  • ExposureCompensation の試験運用版インターフェースを追加しました。(If96c7)

Camera-Core バージョン 1.0.0-beta09

2020 年 9 月 16 日

androidx.camera:camera-core:1.0.0-beta09 がリリースされました。バージョン 1.0.0-beta09 に含まれる commit については、こちらをご覧ください。

API の変更

  • UseCaseGroup でビューポートが非 null としてマークされるバグを修正しました。デベロッパーは、ビューポートを設定せずにビューポートを作成できるはずです。(Ie3d2e)
  • ExposureCompensation の試験運用版インターフェースを追加しました。(If96c7)
  • プレビューの任意のターゲットを回転できます。変換情報は、新しい TranformationInfoListener コールバックを介して計算され、ユーザーに即時に返されます。(I21470)

バグの修正

  • 一部のデバイスでフラッシュがオフにならない問題を修正しました。この問題は、フラッシュ モードを FLASH_MODE_ON に設定して写真を撮影すると発生し、フラッシュを焚くと FLASH_MODE_OFF になります。「トーチモード」が有効になっているような症状です。(Ib4451、b/162568128)
  • 拡張効果が有効であり、出力サーフェスでベンダー ライブラリの実装に特別な処理を必要とする場合、PreviewView で TextureView を使用するようにしました。(I0c3cc)
  • アクティビティ / フラグメント コンテキストが ProcessCameraProvider.getInstance(Context) に渡されたときの、アクティビティ / フラグメント リークを修正しました。

既知の問題

  • ViewPort が設定されている場合、HAL で画像バッファを回転させるデバイスで、ImageCapture の切り抜き範囲が正しくないことがあります。この問題は次のリリースで修正される予定です。

Camera-Camera2 バージョン 1.0.0-beta08

2020 年 8 月 19 日

androidx.camera:camera-camera2:1.0.0-beta08 がリリースされました。バージョン 1.0.0-beta08 に含まれる commit については、こちらをご覧ください。

バグの修正

  • bindToLifecycle を最適化して、メインスレッドで高速に実行されるようにしました。(I1d57e)
  • DisplayOrientedMeteringPointFactory は、CameraSelector ではなく CameraInfo のインスタンスを受け取るようになりました。これは、ファクトリがポイントを生成する Camera への直接マッピングが行われるようにするためです。DisplayOrientedMeteringPointFactory を使用するすべてのクラスも、CameraSelector ではなく CameraInfo のインスタンスを受け取ります。(I400c1)
  • 自動解像度のアスペクト比グループについて、ターゲット解像度の設定が 2016x1080 で、別の 1920x1080 16:9 サイズがある場合に、16:9 mod16 サイズ(864x480)が選択される問題を修正しました。(I53167、b/159363774)
  • CameraControl が競合状態により機能しない問題を修正しました。(I2279f、b/152333890、b/160714166)

Camera-Core バージョン 1.0.0-beta08

2020 年 8 月 19 日

androidx.camera:camera-core:1.0.0-beta08 がリリースされました。バージョン 1.0.0-beta08 に含まれる commit については、こちらをご覧ください。

API の変更

  • DisplayOrientedMeteringPointFactory は CameraSelector ではなく CameraInfo のインスタンスを受け取るようになりました。これは、ファクトリがポイントを生成する Camera への直接マッピングが行われるようにするためです。DisplayOrientedMeteringPointFactory を使用するすべてのクラスも、CameraSelector ではなく CameraInfo のインスタンスを受け取ります。(I400c1)

バグの修正

  • 画像キャプチャで、カメラの向きに基づいてメタデータ内の水平フリップフラグを上書きするようになりました。(I28499)
  • Context.getApplicationContext() から Application オブジェクトを返さない Context を使用したときに、初期化がクラッシュしなくなりました。(I3d3c9、b/160817073)

Camera-Camera2 バージョン 1.0.0-beta07

2020 年 7 月 22 日

androidx.camera:camera-camera2:1.0.0-beta07 がリリースされました。バージョン 1.0.0-beta07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Android 5.0 レガシー デバイスでプレビューが引き伸ばされる問題を修正しました。(I0c03a)
  • 一部のデバイスで WYSIWYG の問題の原因となる JPEG 対応サイズを除外しました。(Ib5128)

Camera-Core バージョン 1.0.0-beta07

2020 年 7 月 22 日

androidx.camera:camera-core:1.0.0-beta07 がリリースされました。バージョン 1.0.0-beta07 に含まれる commit については、こちらをご覧ください。

API の変更

  • FIT_CENTER、FIT_START、FIT_END の自動調整スタイルを FIT と統合しました。FIT は、返される切り抜き範囲が最大限のセンサー範囲になることを意味します。(Ia73c3)
  • プレビューの切り抜き範囲はビューポートによって設定されます。切り抜き範囲で覆われた領域のみがエンドユーザーに表示されます。(I142a4)

バグの修正

  • Android 5.0 レガシー デバイスでプレビューが引き伸ばされる問題を修正しました。(I0c03a)
  • ユースケースのバインドを解除するときの ConcurrentModificationException 例外に関する問題を修正しました。(I371c0)

Camera-Camera2 バージョン 1.0.0-beta06

2020 年 6 月 24 日

androidx.camera:camera-camera2:1.0.0-beta06 がリリースされました。バージョン 1.0.0-beta06 に含まれる commit については、こちらをご覧ください。

API の変更

  • カメラ ID と CameraCharacteristics でカメラをフィルタリングするための試験的なインターフェースを追加しました。(I28f61)

バグの修正

  • Samsung Galaxy S7 で startFocusAndMetering が正常にフォーカスできない問題を修正しました。(If3be7、b/159039233)
  • アプリを終了した後にカメラを閉じることができない問題を解決しました(I7a7b3)。
  • PreviewView の SurfaceView 実装を使用する場合に、カメラの切り替えを繰り返すとプレビューが機能しない問題を修正しました(I920ce)。
  • 指定された MeteringPoint のいずれも有効な測定長方形を生成できない場合、CameraControl#startFocusAndMetering は失敗します。(Id53ce)

Camera-Core バージョン 1.0.0-beta06

2020 年 6 月 24 日

androidx.camera:camera-core:1.0.0-beta06 がリリースされました。バージョン 1.0.0-beta06 に含まれる commit については、こちらをご覧ください。

API の変更

  • カメラ ID と CameraCharacteristics でカメラをフィルタリングするための試験的なインターフェースを追加しました。(I28f61)

バグの修正

  • ProcessCameraProvider#getInstance() を呼び出す前に、ProcessCameraProvider#configureInstance() で CameraX を構成できるようになりました。これにより、アプリの Application クラスで CameraXConfig.Provider を実装しなくても CameraXConfig をカスタマイズできるようになります。(Ia1a8d)
  • 指定された MeteringPoint のいずれも有効な測定長方形を生成できない場合、CameraControl#startFocusAndMetering は失敗します。(Id53ce)

Camera-Camera2 バージョン 1.0.0-beta05

2020 年 6 月 10 日

androidx.camera:camera-camera2:1.0.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • スマートフォンがサイレント モードのときに CameraX を初期化すると、アプリの起動時にクラッシュする問題を修正しました。InitializationException が発生すると、アプリがクラッシュするのではなく、CameraUnavailableException が初期化結果の ListenableFuture に設定されます。(I9909a、b/149413835)
  • CONTROL_AF_STATE が null のデバイスで startFocusAndMetering を呼び出すとクラッシュする問題を修正しました。(Ife55e、b/157084254)

Camera-Core バージョン 1.0.0-beta05

2020 年 6 月 10 日

androidx.camera:camera-core:1.0.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください。

API の変更

  • スマートフォンがサイレント モードのときに CameraX を初期化すると、アプリの起動時にクラッシュする問題を修正しました。InitializationException が発生すると、アプリがクラッシュするのではなく、CameraUnavailableException が初期化結果の ListenableFuture に設定されます。(I9909a、b/149413835)

バグの修正

  • setTargetResolution と setTargetRotation の javadoc を更新しました。(Iae16f)

Camera-Camera2 バージョン 1.0.0-beta04

2020 年 5 月 27 日

androidx.camera:camera-camera2:1.0.0-beta04 がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • クラッシュを発生させずに、アプリが Camera2Interop を介して camera2 キャプチャ リクエスト パラメータを設定できるようにしました。パラメータをオーバーライドした結果、問題が発生することがあります。Camera2Interop を使用してパラメータをオーバーライドした場合、安定性と動作が保証されないことに注意してください。(Ibe5a1、b/149103700)
  • 疑似ロケールを使用しているデバイスでアプリを使用する場合の自動初期化が修正されました。(I3bef3、b/154767663)
  • デタッチされたユースケースに関連するエラーログを Camera2CameraImpl のデバッグログに変換しました。(I1a565、b/154422490)
  • フラッシュを焚いても撮影画像が暗すぎる場合がある問題を修正しました。(I5d9fa、b/149729613)
  • ImageCapture からの ImageProxy のバッファが巻き戻されないバグを修正しました。(I0c455、b/153249512)
  • ImageCapture のみをバインドする場合の次の問題を修正しました:(1)MAX_QUALITY の写真を撮影できない。(2)自動露出が機能しないため、画質が低下する。(I17782、b/145326998)
  • カメラを横取りする別のプロセスまたはコードパスによって CameraX が接続解除された場合のカメラの再起動の信頼性を改善しました。(I1fbc3、b/153714651)

Camera-Core バージョン 1.0.0-beta04

2020 年 5 月 27 日

androidx.camera:camera-core:1.0.0-beta04 がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraX カメラスタックにより内部的に使用されるハンドラを設定するための試験運用版 API CameraXConfig.Builder#setSchedulerHandler() を追加しました。この新しい API を CameraXConfig.Builder#setCameraExecutor() とともに使用すると、CameraX カメラスタックにより使用されるスレッドを完全に制御できます。(I7bf32、b/121160431)

バグの修正

  • ImageReaderProxy が閉じられた後で ImageProxy にアクセスした場合に ImageAnalysis がクラッシュする問題を修正しました。これは、ImageReaderProxy を閉じる前に、Analyzer が受け取ったすべての ImageProxy を閉じることを要します。(I4b299、b/145956416、b/154155377、b/156357269)
  • PreviewView#createSurfaceProvider() から CameraInfo パラメータを削除し、PreviewView が SurfaceRequest から内部的にそれを取得するようにしました。(If18f0、b/154652477)
  • 疑似ロケールを使用しているデバイスでアプリを使用する場合の自動初期化が修正されました。(I3bef3、b/154767663)
  • フラッシュを焚いても撮影画像が暗すぎる場合がある問題を修正しました。(I5d9fa、b/149729613)
  • setAnalyzer / clearAnalyzer を複数回呼び出すと、アナライザが解析対象の画像を受信しない ImageAnalysis の問題を修正しました。(I6169f、b/151605317、b/153514544)
  • ImageCapture からの ImageProxy のバッファが巻き戻されないバグを修正しました。(I0c455、b/153249512)
  • CameraManager からのサポートされているリストの最初のカメラが選択されない場合がある問題を修正しました。(I4c624、b/153418028)
  • 以前リクエストされたサーフェスを解放しない Preview.SurfaceProvider の設定によって断続的なクラッシュが発生する問題を修正しました。“java.lang.IllegalStateException: Camera surface session should only fail with request cancellation”(I8e4e7、b/155936225)

Camera-Camera2 バージョン 1.0.0-beta03

2020 年 4 月 15 日

androidx.camera:camera-camera2:1.0.0-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • camera-core のリリースをサポートするための修正

Camera-Core バージョン 1.0.0-beta03

2020 年 4 月 15 日

androidx.camera:camera-core:1.0.0-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • UseCase がゼロの場合に bindToLifecycle() を呼び出すと例外がスローされるという beta03 からのリグレッションを修正しました。これにより、UseCase をバインドせずに Camera を取得できなくなりました。

Camera-Camera2 バージョン 1.0.0-beta02

2020 年 4 月 1 日

androidx.camera:camera-camera2:1.0.0-beta02 がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • EXIF の向きの回転値と一致するように、ImageCapture で生成された ImageProxy の ImageInfo.getRotationDegrees() を修正しました。(Id4281、b/150802561)
  • build.gradle 内の CameraX 依存関係の明示的な順序付けは CameraX / Camera2 のデフォルトの実装を使用する際に必要なくなりました。厳密な依存関係を宣言する必要がある場合、CameraX のすべての依存関係をビルドファイルに含めることができるようになりました。(I46e88)
  • 表示サイズが 640x480 未満のデバイスで発生する IllegalArgumentException の問題を修正しました。(Ife3f2、b/150506192)
  • 正常にバインドされた場合にのみ UseCase を変更するように bindToLifecycle を修正しました。以前は、解像度計算を行うために 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 に含まれる commit については、こちらをご覧ください。

バグの修正

  • EXIF の向きの回転値と一致するように、ImageCapture で生成された ImageProxy の ImageInfo.getRotationDegrees() を修正しました。(Id4281、b/150802561)
  • 正常にバインドされた場合にのみ UseCase を変更するように bindToLifecycle を修正しました。以前は、解像度計算を行うために bindToLifecycle を呼び出すと UseCase が更新されていましたが、計算を行うために UseCase を更新する必要がなくなりました(I78d9e)。
  • Preview.setSurfaceProvider()を複数回呼び出した後にプレビュー サーフェスが変更されると、Preview ユースケースのキャプチャ セッションが更新されない問題を修正しました。

Camera-Camera2 バージョン 1.0.0-beta01

2020 年 2 月 26 日

androidx.camera:camera-camera2:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • SurfaceRequest.setSurface(Surface) の名前を SurfaceRequest.provideSurface(Surface) に、SurfaceRequest.setWillNotComplete() の名前を SurfaceRequest.willNotProvideSurface() に変更しました。(I224fe)
  • ImageCapture.setTargetRotation() を使用してターゲットの回転値を変更した後、保存した画像のアスペクト比が不正確になる問題を修正しました。(I474ea、b/148763432)
  • デフォルトの CameraXConfig プロバイダを設定するフラグを保持することにより、ProGuard を有効にしたアプリのバリアントの初期化を修正しました。(I2d6c1)

Camera-Core バージョン 1.0.0-beta01

2020 年 2 月 26 日

androidx.camera:camera-core:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。

API の変更

  • SurfaceRequest.provideSurface() の ListenableFuture を Executor と Callback に変更しました。これにより provideSurface() での例外の処理が不要になることで API が簡素化され、provideSurface() コールバックをキャンセルできなくなります。これは、サーフェスのリリースが早すぎるために発生する古いデバイスでのクラッシュを防ぐためのものです。SurfaceRequest.Result オブジェクトは、SurfaceRequest が指定された Surface をどのように使用するかを追跡するために使用されるようになりました。(I7854b)
  • SurfaceRequest.setSurface(Surface) の名前を SurfaceRequest.provideSurface(Surface) に、SurfaceRequest.setWillNotComplete() の名前を SurfaceRequest.willNotProvideSurface() に変更しました。(I224fe)

バグの修正

  • ImageCapture.setTargetRotation() を使用してターゲットの回転値を変更した後、保存した画像のアスペクト比が不正確になる問題を修正しました。(I474ea、b/148763432)
  • デフォルトの CameraXConfig プロバイダを設定するフラグを保持することにより、ProGuard を有効にしたアプリのバリアントの初期化を修正しました。(I2d6c1)
  • Flash モード API のドキュメントを更新し、使用できる値を追加しました。(I4a3ec)

Camera-Camera2 バージョン 1.0.0-alpha10

2020 年 2 月 10 日

androidx.camera:camera-camera2:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Camera2 によって使用されている間だけ Surface を保持することで、INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY デバイスの安定性が向上しました。(I9dac2)
  • CONTROL_AE_TARGET_FPS_RANGE を適切に調整することで、従来のデバイスでの露出不足の問題を修正しました。(1224638)

Camera-Core バージョン 1.0.0-alpha10

2020 年 2 月 10 日

androidx.camera:camera-core:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

API の変更

  • Uri と OutputStream に画像を保存できるように ImageCapture を更新しました。オーバーロードされた takePicture メソッドを 1 つに統合しました。典型例として Uri を使用するようテストアプリを更新しました。(Ia3bec)
  • Preview.PreviewSurfaceProvider の名前が Preview.SurfaceProvider に変更されました。SurfaceProvider ではデベロッパーが独自の ListenableFuture を作成する必要がなくなり、新しい SurfaceRequest オブジェクトを介して Surface が提供されるようになりました。Preview.getPreviewSurfaceProvider() メソッドは、Preview が PreviewView などの他のクラスとペア設定される場合に悪用される可能性があるため、削除されました。(I20105)
  • getTargetRotation() と getTargetName() を Preview に追加しました。(Iceee7)
  • getTargetRotation()、getBackpressureStrategy()、getImageQueueDepth() を ImageAnalysis に追加しました。(I9d6d9)
  • getTargetRotation() と getCaptureMode() を ImageCapture() に追加しました。(I5bc17)
  • 以前に ImageCapture.OnImageSavedCallback.onError() と ImageCapture.OnImageCapturedCallback.onError() で渡されていた引数は、単一の引数 ImageCaptureException(以前に渡されていた情報をすべて含む)に変更されました。
  • ImageCapture.OnImageSavedCallback.onImageSaved() で以前に渡されていた file 引数は削除されました。(I750d2)
  • Preview と ImageCapture クラスは final とマークされるようになりました。(I2500b)
  • API が CameraInfo の getZoomRatio()、getMaxZoomRatio()、getMinZoomRatio()、および getLinearZoom() メソッドで更新され、ZoomState インスタンスを返す getZoomState() に統合されました。(Ib19fe)
  • API フィールド OPTION_TARGET_CLASS と OPTION_TARGET_NAME は内部ライブラリの使用のみを目的としているため、CameraXConfig から削除されました。CameraXConfig.Builder のコンストラクタを削除しました。(I96912)
  • CameraX を初期化するために Application を拡張する必要があるという要件を削除しました。アプリケーションの build.gradle に camera-camera2 アーティファクトが含まれている場合、CameraX の初期化がデフォルトの Camera2 設定で行われるようになりました。(I58ff5)(b/146923574)

Camera-Camera2 バージョン 1.0.0-alpha09

2020 年 1 月 22 日

androidx.camera:camera-camera2:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • Camera2 カメラ ID を抽出するための camera2 相互運用パスを追加しています。CameraInfo からカメラ ID を抽出するには、Camera2CameraInfo.extractCameraId() を使用します。 この使用方法を、次のコードサンプルで示します。

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

    Camera2CameraInfo クラスには、ExperimentalCamera2Interop markerClass が必要となります。

Camera-Core バージョン 1.0.0-alpha09

2020 年 1 月 22 日

androidx.camera:camera-core:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • SurfaceOrientedMeteringPointFactory のパラメータ useCaseForSurface の名前が useCaseForAspectRatio に変更され、リファレンス ドキュメントが拡張されました。
  • FocusMeteringAction.Builder.from() メソッドは、コンストラクタ FocusMeteringAction.Builder() に置き換えられています。
  • DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float) を削除しました。アプリで Display パラメータを受け取るコンストラクタを使用して、現在のディスプレイに渡す必要があります。
  • MeteringMode と 3A フラグに関するフォーカスと計測 API、および Display パラメータの使用法について Javadoc を改善しました。
  • setZoomRatio と setLinearZoom のリファレンス ドキュメントを拡張しました。

バグの修正

  • カメラを閉じてから開くと「前提条件」チェックが失敗する問題を修正しました。
  • Torch API および Zoom API の使用時に発生する可能性がある ConcurrentModificationException を修正しました。
  • mod16 ディメンション サイズが利用可能な場合、要求された解像度に近い解像度を選択できるように問題を修正しました。
  • startFocusMetering API と cancelFocusMetering API は、文書化されているとおりに動作し、エラーが発生した場合に正しいタイミングでエラーが発生した場合にそれを返せるようになりました。
  • デバイスで対応できないサイズの指定の切り抜きのアスペクト比を指定して、特定のターゲット解像度がリクエストされた場合の問題を修正しました。現在、元のリクエストをバインドするのに十分な解像度で、切り抜きされていないサイズが選択されます(利用可能な場合)。

Camera-Camera2 バージョン 1.0.0-alpha08

2019 年 12 月 18 日

androidx.camera:camera-camera2:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

既知の問題

  • Camera2 の相互運用を使用している場合、Camera2 のキャプチャ要求オプションが機能するとは限りません。要求されたオプションがサポートされていない場合、セッションの開始に失敗し、次のようなエラーが発生することがあります。09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination

バグの修正

  • API レベル 21、22 のカメラを回転または切り替えた後にプレビューの黒画面が表示される問題を修正しました。

API の変更

  • 試験運用版: カメラ ID を抽出するための camera2 相互運用パスを追加しました。

Camera-Core バージョン 1.0.0-alpha08

2019 年 12 月 18 日

androidx.camera:camera-core:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

既知の問題

  • PreviewView または CameraView を使用するアプリにおいて、アスペクト比のプレビューが正しくない可能性があります。これは、一部の FULL レベルのデバイス(Pixel2 など)で一時停止または再開した後に発生します。

バグの修正

  • FocusMeteringAction と CameraControl のドキュメントを更新しました。
  • enableTorch() と getTorchState() の TorchControl を実装しました。

API の変更

  • IntDef を非公開にし、IntDef 定数を IntDef 定義外に移動しました。
  • rotationDegrees のクラスを OnImageCaptureCallback から ImageInfo に変更しました。
  • rotationDegrees のクラスを Analyzer から ImageInfo に変更しました。

Camera-Camera2 バージョン 1.0.0-alpha07

2019 年 12 月 4 日

androidx.camera:camera-camera2:1.0.0-alpha07 がリリースされました。camera-camera2 のバージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

  • Camera2Config は、CameraX の Camera2 ベースの実装の初期化と設定に使用できるようになりました。初期化でこれを使用する方法について詳しくは、リリースノートの camera-core セクションをご覧ください。
  • camera2 の相互運用機能は試験運用とみなされ、別のパッケージ androidx.camera.camera2.interop. に移動しました。

Camera-Core バージョン 1.0.0-alpha07

2019 年 12 月 4 日

androidx.camera:camera-core:1.0.0-alpha07 がリリースされました。camera-core のバージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

ベータ版の準備を進めるため、このアルファ版リリースで一部大幅な変更を行っています。変更を確認し、フィードバックがございましたら CameraX Google グループまでお寄せください。Play ストアにあるアプリで CameraX を使用しているデベロッパーの場合、正式なベータ版のリリースをお待ちいただいてから、アプリ内のライブラリをアップグレードすることをおすすめします。

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() を使用して非同期に取得されます。このメソッドは、完了時に ProcessCameraProvider を提供するリッスン可能な Future を返します。 一般的な使用法は、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.get() をブロックせずに Future からカメラ プロバイダを取得できるようになります。

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • カメラの選択は、ユースケースごとではなく、カメラセレクタによって行われるようになりました。

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle には、ライフサイクル オーナー、カメラセレクタ、ユースケースが指定されます。これらは、指定のライフサイクル オーナーにバインドされ、選択したカメラに対して実行されます。

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • ユースケース「Config」クラスは削除されています。代わりに、ユースケースを直接ビルドし、ユースケース ビルダーごとにオプションを設定します。次に例を示します。

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • アプリによって作成および管理されるサーフェスを受け入れるように Preview ユースケースが更新され、Android ベスト プラクティスが確保されるようになりました。camera-view パッケージで提供される PreviewView ビュークラスを使用することを強くおすすめします。

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • アプリ管理型サーフェスのアタッチに関するドキュメントをご覧ください。この場合、アプリがサーフェスのライフサイクルを管理します。

  • 重要: ImageAnalysis Analyzer メソッドの実装は、受信した画像の使用が終了したら、image.close() を呼び出す必要があります。呼び出さない場合、バック プレッシャーの設定によっては、新しい画像が受信されない、またはカメラが停止することがあります。詳しくは、リファレンス ドキュメントをご覧ください。

  • ImageAnalysis ImageReaderMode は、バックプレッシャー ストラテジー intdef に変更されました。

  • ImageProxy.getImage() は試験運用とみなされています。アプリにおいて @androidx.camera.core.ExperimentalGetImage などを介して使用箇所にアノテーションを付ける必要があります。

  • Analyzer の UIThread アノテーション要件は削除されました。

  • アナライザを削除するために ImageAnalysis.clearAnalyzer() 関数が追加されました。

  • メソッドが 1 つ以上あるリスナーの名前において Listner を Callback に変更しました。

    • ImageCapture.OnImageCapturedListener を ImageCapture.OnImageCapturedCallback に変更
    • ImageCapture.OnImageSavedListener を ImageCapture.OnImageSavedCallback に変更
    • VideoCapture.OnVideoSavedListener を VideoCapture.OnVideoSavedCallback に変更
  • Enums が IntDef に変更されました

  • ズーム コントロールが以下のとおり追加されました。

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • Flash または Torch ハードウェアが存在するかどうかを判断するために CameraInfo.hasFlashUnit() が追加されています。

  • CameraInfo.isFlashAvailable() を削除しました。Torch があると Flash 機能をオーバーライドします。詳しくは、リファレンス ドキュメントをご覧ください。

  • ImageCapture.Metadata フィールドは、get/set/is アクセサーに置き換えられています。

  • startFocusMetering と cancelFocusMetering は、呼び出しの非同期操作を表す ListenableFutures を返すようになりました。

  • MeteringPoints は測光アクションのハンドルとして機能するようになり、ファクトリによって生成されます。アプリにおいて、カスタム ファクトリではなく既存のファクトリを使用する必要があります。

修正された問題

  • 再開時(前の一時停止で写真撮影が完了待ち状態の後)に写真を撮影するときの問題を修正しました。
  • 既知の問題: CameraControl.enableTorch() は機能しますが、フラッシュ装置がない場合でも、ListenableFuture<Void> で常にすぐに complete(success) Future が返されます。今後のバージョンでは、フラッシュ装置がない場合、enableTorch(true) はすぐに失敗(CaptureSession にリクエストを送信しない)し、TorchState はオフのままとなるように最終動作が修正されます。
  • 既知の問題: startFocusAndMetering と cancelFocusAndMetering は、フォーカスと測光の開始およびキャンセルを行いますが、すぐに completed (success) Future を返します(ドキュメントに記載の動作とは異なる)。ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() の FocusMeteringResult は偽の結果です。その isFocusSuccessful() では常に「false」が返され、ドキュメントに記載の意図した動作とは異なります。
  • 既知の問題: PreviewView タッチイベントで使用する測光ポイント ファクトリが開発されています。現時点では、カスタム管理型サーフェスを接続するアプリは既存の測光ポイント ファクトリを使用できます。そうでない場合、PreviewView でタッチ フォーカス機能を使用できません。

Camera-Camera2 と Camera-Core バージョン 1.0.0-alpha06

2019 年 10 月 9 日

androidx.camera:camera-camera2:1.0.0-alpha06 と androidx.camera:camera-core:1.0.0-alpha06 がリリースされました。camera-camera2:1.0.0-alpha06 に含まれる commit と、camera-core:1.0.0-alpha06 に含まれる commit があります。

新機能

アスペクト比の設定の変更:

  • setTargetAspectRatioMode() が追加され、enum 引数を受け取ります。これは、任意のアスペクト比ではなく、オプションの RATIO_4_3 または RATIO_16_9 にアスペクト比モードを設定します。これは、カメラが提供するのは、任意のアスペクト比ではなく、特定のアスペクト比だけであるという事実により即したものになります。
    • 現在、指定できる比は、16:9 と 4:3 だけです。1:1 については、カメラで利用できるのが一部のデバイスだけで、解像度が限られます。1:1 のインターフェースや処理を設計中のアプリは、それより柔軟性のある 16:9 または 4:3 の選択肢を使用して、表示を切り抜くか、サブリージョンを処理する必要があります。
    • これらのアスペクト比では、センサー領域を最大限使用できます。
  • getTargetAspectRatio() がユースケースの Config API に追加され、そのユースケースの出力がターゲットとするアスペクト比を返します。
  • メソッド setTargetAspectRatio(Rational aspectRatio) は ImageCapture のために setTargetAspectRatioCustom(Rational aspectRatio) に変更されました。設定すると、ImageCapture 出力は設定に応じてトリミングされます。

Executor API

  • 以下の関数は executor パラメータを受け取り、関数を実行するエグゼキュータをアプリが制御できるようにします。
    • Preview.setOnPreviewOutputUpdateListener() API: エグゼキュータがその関数に存在しない場合は、関数はメインスレッドで実行されます。
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

CmaeraInfo API および Flash が使用可能かどうかとセンサーの回転を確認する API

  • CameraInfo と getCameraInfo メソッドが追加され、アプリがそのカメラでレンズの向きの CameraInfo と、フラッシュが使用可能かどうかを確認できるようになりました。次に例を示します。

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • CameraInfo.getSensorRotationDegrees() が追加されました。それにより、デバイスの自然な向きを基準にした、または便宜のため、サーフェスの回転で表される向きを基準にしたカメラの向きが提供されます(サーフェスの回転は、自然な向きを基準にして表されます)。

API の変更とバグの修正

  • アスペクト比: アプリは各ユースケースに対して、1 回だけ setTargetResolution() または setTargetAspectRatio() を呼び出す必要があります。同じビルダーで両方を呼び出すと、エラーが返されます。
    • アプリの UI の設計に応じて、setTargetAspectRatio() を使用することを一般におすすめします。個々の解像度はユースケースに基づいています。たとえば、プレビューでは画面解像度に近いものにし、画像キャプチャでは高解像度の静止画を提供します。詳細については、自動解像度に関する表をご覧ください。
    • 計算量の節減のために最小解像度が必要な場合や、細部を処理するために最大解像度が必要な場合など、特殊なケースでは setTargetResolution() を使用します。
  • Executor API: ユースケースの Configuration API から setCallbackHandler() の呼び出しを削除しました。アプリはその代わりに、コールバックを設定するその他のさまざまな API のパラメータとしてエグゼキュータを設定できます。
  • さまざまな関数の null アノテーションが更新されました。
  • カメラを開いたときに java.lang.IllegalStateException at Camera$StateCallback.onError がスローされる問題を修正しました。
  • アプリが大きい解像度やデフォルトの解像度をリクエストしたときに、小さすぎる解像度(640x480 未満)が選択されて、プレビュー画像がムラがあるまたはぼやける場合の問題を修正しました。小さい解像度が特に必要なアプリは、明示的にリクエストできます。
  • 別のカメラアプリを起動するインテントから戻った後に、カメラで真っ黒な画面が表示される(カメラを起動できない)問題を修正しました。
  • アプリを繰り返し起動または停止したときに次のエラーがスローされるバグを修正しました。java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • ImageAnalysis を無効にしたときに発生する次のエラーを修正しました。java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • カメラの接続解除フローのテストを追加しました。
  • 背中合わせのカメラのテストを実行するテストシステムの堅牢性を改善しました。

Camera-Camera2 と Camera-Core バージョン 1.0.0-alpha05

2019 年 9 月 5 日

androidx.camera:camera-camera2:1.0.0-alpha05 と androidx.camera:camera-core:1.0.0-alpha05 がリリースされました。camera-camera2:1.0.0-alpha05 に含まれる commit と、camera-core:1.0.0-alpha05 に含まれる commit があります。

  • API の変更: ユースケース エラー変数の名前の変更:

    • ImageCapture.UseCaseError の名前を ImageCapture.ImageCaptureError に変更しました
    • VideoCapture.UseCaseError の名前を VideoCapture.VideoCaptureError に変更しました
  • Tap-to-Focus API を備えた CameraControl API を追加しました

    • カメラの CameraX から CameraControl を取得する API を追加しました。レンズの向きによって選択されます。

      CameraX.getCameraControl(LensFacing lensFacing)

    • Tap-to-Focus を実行するために、MeteringPointFactory、MeteringPoint、MeteringMode、FocusMeteringAction を追加しました。

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • フォーカス測定の開始とキャンセルを行うために CameraControl の API を追加しました。

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

    • ビュークラスに基づいてタップ座標からセンサー座標への変換を支援する測定ポイント ファクトリの API を追加しました。

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

  • 以下のメソッドがメイン(UI)スレッドにあれば呼び出しを行い、そうでない場合は IllegalStateException をスローします。今後のバージョンでは、他のスレッドで使用できるようになり、シリアル化が確実になります。

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • さまざまな構成設定が null パラメータを受け入れるようになりました。対応するゲッターが null を返す場合があります。

  • AF/AE/AWB 設定をサポートしないエミュレータでテストする場合の問題を修正しました。

  • 画像分析中の回転に関するクラッシュのバグを修正しました。

  • 回転後または前面カメラと背面カメラの切り替え後、開始時(カメラデータなし)にプレビューが黒く表示されるバグを修正しました。

  • 複数の同時画像分析ユースケースについてのテストを削除しました。互換性を確保するために、アプリケーションは単一の画像分析ユースケースのみをアタッチする必要があります。

  • カメラテスト スイート(WIP)に、偽カメラ用の初回の robolectric テストを追加しました。

  • Camera2Inititalizer テストは、カバレッジが不明瞭なため / 誤解を招くため、削除されました。

Camera-Camera2 と Camera-Core バージョン 1.0.0-alpha04

2019 年 8 月 7 日

androidx.camera:camera-camera2:1.0.0-alpha04 と androidx.camera:camera-core:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

アスペクト比と解像度選択の変更

CameraX の目標は、カメラ セッションを正常に初期化することです。つまり CameraX は、最初の目標としてキャプチャ セッションを開始するために、デバイスの機能に基づいて解像度やアスペクト比に関して妥協します。したがって、正確なリクエストが受け入れられない可能性があります。次の原因が考えられます。

  • リクエストされた解像度をデバイスがサポートしていない
  • 正常に動作するために特定の解像度を使用する必要がある旧式デバイスなどの互換性の問題
  • 一部のデバイスでは、特定のフォーマットは特定のアスペクト比でしか使用できない
  • JPEG または動画エンコードについて「mod16 に最も近い」値が優先される設定。CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP に関する説明をご覧ください。

CameraX はセッションを作成し管理しますが、コードのユースケース出力で返される画像サイズを常に確認し、それに応じて調整する必要があります。

API をより明確にするために、解像度とアスペクト比の設定に変更をいくつか加えました。

  • プレビューのユースケースは、何も設定されていない場合、デフォルトのアスペクト比 4:3 であると見なされるようになりました。
  • CameraX がデバイスの機能に基づいて、リクエストされた解像度とアスペクト比に対する変更を内部的に検討するとき、まず同じアスペクト比(setTargetAspectRatio または setTargetResolution の呼び出しのいずれかによって判断)を維持しようとします。
  • 「mod16 に最も近い」バージョンの解像度は、同じアスペクト比と見なされます。

ImageAnalysis 非ブロッキング モード

  • ImageReaderMode.ACQUIRE_LATEST_IMAGE の動作が非ブロッキングになりました。キュー内の最新の画像を取得しますが、未使用の画像を継続的に破棄して、カメラ パイプラインがブロックされないようにします。
  • アナライザは、パイプラインを停止させることなく、単一の画像を無期限に保持できます。
  • アプリがブロックするエグゼキュータを提供する場合、ImageAnalysis ユースケースはブロックします。
  • 内部で設定されたデフォルトのエグゼキュータは、非ブロッキング エグゼキュータとして動作します。

バグの修正

  • オートフォーカス、自動露出、オートホワイトバランスのないデバイスで画像をキャプチャする場合に 3A 収束を待つタイムアウトの問題を修正しました。
  • ImageCapture ですばやく写真を撮るときの問題を修正しました。次のエラーが修正されます。java.lang.IllegalStateException: maxImages (2) has already been acquired
  • ユースケースに対して setLensFacing が呼び出されず、結果として java.lang.IllegalArgumentException: Unable to get camera ID for use case が発生する問題を修正しました。
  • 旧式デバイスで、JPEG の最大解像度として特定のアスペクト比が必要となる問題を修正しました。
  • カメラが開いているときにアプリをバックグラウンド処理する場合の問題を修正しました。
  • API レベル 25 未満での問題を修正し、エラー checkAndUpdateEglState: invalid current EGLDisplay を削除しました。
  • 拡張機能を有効にして開始した後にプレビューのバインドを解除するときの問題を修正しました。
  • camera-view と camera-extensions のビルド アーティファクトがアルファ版として公開されるようになりました。

Camera-Camera2 と Camera-Core バージョン 1.0.0-alpha03

2019 年 7 月 2 日

androidx.camera:camera-core:1.0.0-alpha03 と androidx.camera:camera-camera2:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • setTarget 構成呼び出しでの「ターゲット」に関する javadoc の説明を追加しました。

Camera-Core

  • すばやい開閉時またはバインド / バインド解除時の、未構成の入力 / 出力サーフェスのクラッシュを修正
  • 新しい Futures 実装に移行
  • より堅牢なテストのための、テストの修正
  • コア統合テストで写真のキャプチャ時間が表示されるようになりました。
  • エグゼキュータ向けの内部互換クラスを開発しました。
  • タイミング テストアプリのキャプチャ画像は、前の処理が完了して安定性が改善されるまで待機します。

拡張機能

  • バージョニング チェックを追加
  • 追加のテスト カバレッジ - 拡張イベント コールバック
  • 内部的に対応する画像とメタデータの改善
  • テストアプリでのモード切り替えの修正

Camera-Camera2 と Camera-Core バージョン 1.0.0-alpha02

2019 年 6 月 5 日

androidx.camera:camera-core:1.0.0-alpha02 と androidx.camera:camera-camera2:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • エミュレータ使用時のゼロ除算の問題を修正
  • ユースケースのバインド解除と再バインドをすばやく行いつつ急いで写真を撮ると、一部のデバイスで NullPointerException/Surface Abandoned エラーが発生する問題を修正
  • キャプチャ リクエストの更新がすべてのサーフェスに一貫して影響するようにするために内部の問題を修正
  • 新しいアプリ インスタンスでユースケースを再開するときの安定性の向上
  • API でエグゼキュータのサポートに備えるための内部アーキテクチャの変更
  • CameraX クラスとライフサイクル管理に関する Javadoc の追加説明
  • Antelope パフォーマンス テストアプリのインストゥルメント化テストを追加
  • アプリの Proguard 設定で「-keepattributes Signature」の必要性を削除

Camera-Camera2 と Camera-Core 1.0.0-alpha01

2019 年 5 月 7 日

androidx.camera:camera-core:1.0.0-alpha01 と androidx.camera:camera-camera2:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

Camera-Lifecycle バージョン 1.0.0-beta11

2020 年 10 月 14 日

androidx.camera:camera-lifecycle:1.0.0-beta11 がリリースされました。バージョン 1.0.0-beta11 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Camera インスタンスに接続する前に <UseCase>.getTargetRotation() を呼び出すと、Surface.ROTATION_0 が返されます。ただし、Builder または UseCase に targetRotation が設定されている場合はその限りではありません。(I80fcd)

Camera-Lifecycle バージョン 1.0.0-beta10

2020 年 9 月 23 日

androidx.camera:camera-lifecycle:1.0.0-beta10 がリリースされました。バージョン 1.0.0-beta10 に含まれる commit については、こちらをご覧ください。

バグの修正

Camera-Lifecycle バージョン 1.0.0-beta09

2020 年 9 月 16 日

androidx.camera:camera-lifecycle:1.0.0-beta09 がリリースされました。バージョン 1.0.0-beta09 に含まれる commit については、こちらをご覧ください。

Camera-Lifecycle バージョン 1.0.0-beta08

2020 年 8 月 19 日

androidx.camera:camera-lifecycle:1.0.0-beta08 がリリースされました。バージョン 1.0.0-beta08 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Context.getApplicationContext() から Application オブジェクトを返さない Context を使用したときに、初期化がクラッシュしなくなりました。(I3d3c9、b/160817073)

Camera-Lifecycle バージョン 1.0.0-beta07

2020 年 7 月 22 日

androidx.camera:camera-lifecycle:1.0.0-beta07 がリリースされました。バージョン 1.0.0-beta07 に含まれる commit については、こちらをご覧ください。

Camera-Lifecycle バージョン 1.0.0-beta06

2020 年 6 月 24 日

androidx.camera:camera-lifecycle:1.0.0-beta06 がリリースされました。バージョン 1.0.0-beta06 に含まれる commit については、こちらをご覧ください。

API の変更

  • ProcessCameraProvider#getInstance() を呼び出す前に、ProcessCameraProvider#configureInstance() で CameraX を構成できるようになりました。これにより、アプリの Application クラスで CameraXConfig.Provider を実装しなくても CameraXConfig をカスタマイズできるようになります。(Ia1a8d)

Camera-Lifecycle バージョン 1.0.0-beta05

2020 年 6 月 10 日

androidx.camera:camera-lifecycle:1.0.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • スマートフォンがサイレント モードのときに CameraX を初期化すると、アプリの起動時にクラッシュする問題を修正しました。InitializationException が発生すると、アプリがクラッシュするのではなく、CameraUnavailableException が初期化結果の ListenableFuture に設定されます。(I9909a、b/149413835)

Camera-Lifecycle バージョン 1.0.0-beta04

2020 年 5 月 27 日

androidx.camera:camera-lifecycle:1.0.0-beta04 がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください。

Camera-Lifecycle バージョン 1.0.0-beta03

2020 年 4 月 15 日

androidx.camera:camera-lifecycle:1.0.0-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • UseCase がゼロの場合に bindToLifecycle() を呼び出すと例外がスローされるという beta03 からのリグレッションを修正しました。これにより、UseCase をバインドせずに Camera を取得できなくなりました。
  • camera-core のリリースをサポートするための修正

Camera-Lifecycle バージョン 1.0.0-beta01

2020 年 2 月 26 日

androidx.camera:camera-lifecycle:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 初期化時に ProcessCameraProvider を取得する際、デフォルトの設定が使用され、Application の拡張はオプションであることを記したキュメントを修正しました。(I5e395)

Camera-Lifecycle バージョン 1.0.0-beta02

2020 年 4 月 1 日

androidx.camera:camera-lifecycle:1.0.0-beta02 がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • camera-camera2:1.0.0-beta02 アーティファクトと camera-core:1.0.0-beta02 アーティファクトのバグ修正をサポートするように更新しました。

Camera-Lifecycle バージョン 1.0.0-alpha10

2020 年 2 月 10 日

androidx.camera:camera-lifecycle:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

API の変更

  • BindToLifecycle、unbind、unbindAll の各メソッドに @MainThread アノテーションを追加しました。(I990d2)

Camera-Lifecycle バージョン 1.0.0-alpha03

2020 年 1 月 22 日

androidx.camera:camera-lifecycle:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。

更新

  • Camera Core と Camera2 の変更をサポートするためのさまざまな修正と更新。

Camera-Lifecycle バージョン 1.0.0-alpha02

2019 年 12 月 18 日

androidx.camera:camera-lifecycle:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

依存関係の変更

  • androidx.camera:camera-core:1.0.0-alpha08 を使用するように更新しました。

Camera-Lifecycle バージョン 1.0.0-alpha01

2019 年 12 月 4 日

androidx.camera:camera-lifecycle:1.0.0-alpha01 がリリースされました。Camera-Lifecycle バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

API に関する注

  • camera-lifecycle アーティファクトが追加され、LifeCycleCameraProvider インターフェースと ProcessCameraProvider と呼ばれる実装が提供されます。この実装は、以前の CameraX クラスの多くの機能を Core で提供し、getInstance() メソッドを介して取得されます。
  • CameraX を使用するには、アプリに Camera-Lifecycle ライブラリを含める必要があります。
  • ProcessCameraProvider を使用して CameraX の初期化を実行する方法については、camera-core セクションの注をご覧ください。

Camera-Extensions と Camera-View バージョン 1.0.0

バージョン 1.0.0-alpha32

2021 年 12 月 15 日

androidx.camera:camera-extensions:1.0.0-alpha32 と androidx.camera:camera-view:1.0.0-alpha32 がリリースされました。バージョン 1.0.0-alpha32 に含まれる commit については、こちらをご覧ください。

API の変更

  • 内部クラス / インターフェースから不要な @RequiresApi(21) アノテーションを削除しました(I8e286、b/204917951)。
  • camera-extensions アーティファクトの API ファイルを更新しました(If683a、b/161377155)。

バグの修正

  • アプリが VideoCapture のバインド時に拡張モードを有効にすることを禁止します。CameraX の拡張機能がサポートするのは ImageCapture と Preview のみです。VideoCapture はまだサポートできません。アプリが VideoCapture をバインドして拡張モードを有効にすると、IllegalArgumentException がスローされます(I0d87b)。
  • 結果セットが空の場合に、CameraSelector#filter が IllegalArgumentException をスローしなくなりました(I27804)。
  • ListenableFuture を返すため、API 名 ExtensionsManager#getInstance を getInstanceAsync に変更しました。関数名の接尾辞が Async であることから、非同期関数であることがはっきりとわかるようになりました(I279d2)。
  • ユーザーが ImageCapture ユースケースでどのサイズがサポートされているか特定できず、返された遅延情報が最大キャプチャ出力サイズに対するものか、入力解像度パラメータに対するものか識別できないため、ExtensionsManager#getEstimatedCaptureLatencyRange API から解像度パラメータを削除しました(I74bb2)。
  • ExtensionsManager 関数の CameraProvider パラメータを getInstance() API に移動しました。これにより、ユーザーは ExtensionsManager 関数を呼び出すたびに CameraProvider パラメータを入力する必要がなくなりました(Ic7e48)。

バージョン 1.0.0-alpha31

2021 年 11 月 17 日

androidx.camera:camera-extensions:1.0.0-alpha31 と androidx.camera:camera-view:1.0.0-alpha31 がリリースされました。バージョン 1.0.0-alpha31 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraSelector#filter を公開 API に追加し、CameraSelector に基づいて CameraInfo のリストをフィルタリングできるようにしました。(I105d0)

バグの修正

  • 特定のデバイスで拡張機能モードをすばやく切り替えるとクラッシュする問題を修正しました。(Iebbef)

バージョン 1.0.0-alpha30

2021 年 10 月 13 日

androidx.camera:camera-extensions:1.0.0-alpha30 と androidx.camera:camera-view:1.0.0-alpha30 がリリースされました。バージョン 1.0.0-alpha30 に含まれる commit については、こちらをご覧ください。

API の変更

  • @RequiresApi(21) アノテーションをすべての CameraX クラスに追加し、AndroidManifest.xml から minSdkVersion を削除しました。これにより、minSdkVersion が 21 未満のアプリに camera-core を簡単に組み込めるようになりますが、API 21 以降に依存するコードパスは条件付きで使用することをおすすめします。minSdkVersiong が 21 以降のアプリの場合、この変更に対応する必要はありません。(Ie7f2e、b/200599470)

バグの修正

  • ProGuard が有効になっている場合に発生する AbstractMethodError の問題を修正しました。(Iae468、b/201177844)

バージョン 1.0.0-alpha29

2021 年 9 月 29 日

androidx.camera:camera-extensions:1.0.0-alpha29 と androidx.camera:camera-view:1.0.0-alpha29 がリリースされました。バージョン 1.0.0-alpha29 に含まれる commit については、こちらをご覧ください。

API の変更

  • API が試験運用版でなくなったため、ExperimentalUseCaseGroup アノテーションが削除されました。(I01ef5)
  • RotationProvider#removeAllListeners() を削除します。代わりに RotationProvider#removeListener(...) を使用してください。(Id9d4a)
  • RotationReceiver クラスを更新しました。具体的には、setListener / clearListener を addListener / removeListener / removeAllListener に変更し、デフォルトでメインスレッドを使用する setListener のバリエーションを削除し、メソッドのアノテーションを追加しました。(Ib1669)

バグの修正

  • 拡張機能モードで何が行われるかを正確に表現するため、ExtensionMode#BEAUTY の名前を FACE_RETOUCH に変更しました。(I61f54、b/198515274)
  • 1 つのアクティビティで複数の CameraController と PreviewView を使用すると、カメラが予期せず終了する問題を修正しました。(Ibfd18、b/197539358)

バージョン 1.0.0-alpha28

2021 年 8 月 18 日

androidx.camera:camera-extensions:1.0.0-alpha28 と androidx.camera:camera-view:1.0.0-alpha28 がリリースされました。バージョン 1.0.0-alpha28 に含まれる commit については、こちらをご覧ください。

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 クラス、ExtensionErrorListener、および関連する ExtensionsManager API を削除しました。(I3b8c3)

バージョン 1.0.0-alpha27

2021 年 7 月 21 日

androidx.camera:camera-extensions:1.0.0-alpha27 と androidx.camera:camera-view:1.0.0-alpha27 がリリースされました。バージョン 1.0.0-alpha27 に含まれる commit については、こちらをご覧ください。

API の変更

  • ビューポート API を試験運用版から昇格させました。API の試験運用版アノテーションは削除します。(I717ea)
  • CoordinateTransform#getTransform の名前を CoordinateTransform#transform に変更し、JavaDoc を更新しました。(I864ae)

バグの修正

  • Compose UI と一緒に使用する際の PreviewView PERFORMANCE モードの引き伸ばしに関する問題を修正しました。(Ie1137、b/183864890)

バージョン 1.0.0-alpha26

2021 年 6 月 30 日

androidx.camera:camera-extensions:1.0.0-alpha26 と androidx.camera:camera-view:1.0.0-alpha26 がリリースされました。バージョン 1.0.0-alpha26 に含まれる commit については、こちらをご覧ください。

API の変更

  • 最新の tap-to-focus 結果を公開する新しいメソッド CameraController#getTapToFocusState() を追加します。(Iaccb0)
  • CameraController に camera-core 機能(ターゲット アスペクト比、ターゲット解像度、キャプチャ モード、CameraControl、カスタム エグゼキュータのゲッター / セッター)をさらに追加します。(Iea8f2)
  • Surface の回転の変更を受け取る RotationReceiver クラスを追加します。これは、デバイスが固定の縦表示 / 横表示になっているときにターゲットの回転を設定する場合に使用できます。(Ib278f)
  • ExtensionsManager クラスの新しい getEstimatedCaptureLatencyRange 公開 API を公開しました。(I6a8ec)
  • ExtensionsErrorListener が非推奨になりました。現在、このインターフェースは、拡張機能モードを有効にしたときに Preview または ImageCapture が不足しているかどうかをモニタリングする場合にのみ使用されます。CameraX は、拡張機能が正常に動作するように、自動的に Preview または ImageCapture をさらに追加します。その後は、このインターフェースを介してエラーは報告されません。(I47d9e)
  • 新しい ExtensionsManager getInstance、isExtensionAvailable、getExtensionEnabledCameraSelector の公開 API を公開し、古い <EffectName><UseCase>Extender クラスと関連する API を非推奨にしました。(I329e6)

バージョン 1.0.0-alpha25

2021 年 6 月 2 日

androidx.camera:camera-extensions:1.0.0-alpha25 と androidx.camera:camera-view:1.0.0-alpha25 がリリースされました。バージョン 1.0.0-alpha25 に含まれる commit については、こちらをご覧ください。

API の変更

  • ExperimentalCameraFilter API が試験運用版から正式な API になりました。アノテーション付き OptIn がなくても使用できます。(I4bc94)
  • ユースケース間で座標を変換するユーティリティを追加しました。使用例: ImageAnalysis ユースケースで検出された座標を変換し、検出されたオブジェクトをプレビューでハイライト表示します。(I63ab1、b/137515129)
  • CameraView を削除しました。CameraView を CameraController に置き換えました。移行方法については、移行ガイドをご覧ください。(Id5005)

バグの修正

  • ExperimentalUseCaseGroupLifecycle が ExperimentalUseCaseGroup に変更されました。(I3b2ef、b/159033688)

バージョン 1.0.0-alpha24

2021 年 4 月 21 日

androidx.camera:camera-extensions:1.0.0-alpha24 と androidx.camera:camera-view:1.0.0-alpha24 がリリースされました。バージョン 1.0.0-alpha24 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 試験運用版の API に対するアノテーション @Experimental を @RequiresOptIn に置き換えました。試験運用版の API を呼び出す場合は、非推奨の androidx.annotation.experimental.UseExperimental ではなく androidx.annotation.OptIn を使用してください。(Iff226)
  • Samsung J5 Prime で PreviewView が引き伸ばされる問題を修正しました。(Ib10b6)

Camera Extensions と View バージョン 1.0.0-alpha23

2021 年 3 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha23 と androidx.camera:camera-view:1.0.0-alpha23 がリリースされました。バージョン 1.0.0-alpha23 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraView は非推奨になる予定です。代わりに LifecycleCameraController を使用してください。移行ガイドをご覧ください。(Idac2c)
  • setLinearZoom() に FloatRange アノテーションを追加しました。(I69971)

バグの修正

  • 1.0.0 アーティファクトに依存するように camera-view の依存関係を固定しました。camera-view に依存しても、Gradle の依存関係の解決によって camera-core、camera-camera2、camera-lifecycle が自動的に最新の 1.1.0 アーティファクトにアップグレードされることはなくなりました。ただし、1.1.0 を使用するように明示的に設定されている場合、camera-view は引き続き 1.1.0 アーティファクトとの互換性を保持します。(Ic8fa1、b/181599852)
  • Samsung A3 で PreviewView のプレビューが引き伸ばされる問題を修正しました。(Iacb30、b/180121821)
  • カメラの初期化前にカメラセレクタを設定できない問題を修正しました。(Ic8bd0)

Camera Extensions と View バージョン 1.0.0-alpha22

2021 年 2 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha22 と androidx.camera:camera-view:1.0.0-alpha22 がリリースされました。バージョン 1.0.0-alpha22 に含まれる commit については、こちらをご覧ください。

API の変更

  • CameraInfo ゲッターを CameraController に追加しました。(Ib8138、b/178251727)

バグの修正

  • Preview または ImageCapture がバインドされたときのみにエラーを報告するように ExtensionsErrorListener を修正しました。(I5ae39)

Camera Extensions と View バージョン 1.0.0-alpha21

2021 年 1 月 27 日

androidx.camera:camera-extensions:1.0.0-alpha21 と androidx.camera:camera-view:1.0.0-alpha21 がリリースされました。バージョン 1.0.0-alpha21 に含まれる commit については、こちらをご覧ください。

リリースにより他のカメラ ライブラリ アーティファクトがサポートされるようになりました。

Camera Extensions と View バージョン 1.0.0-alpha20

2020 年 12 月 16 日

androidx.camera:camera-extensions:1.0.0-alpha20 と androidx.camera:camera-view:1.0.0-alpha20 がリリースされました。バージョン 1.0.0-alpha20 に含まれる commit については、こちらをご覧ください。

リリースにより他のカメラ ライブラリ アーティファクトがサポートされるようになりました。

Camera-Extensions と Camera-View バージョン 1.0.0-alpha19

2020 年 11 月 11 日

androidx.camera:camera-extensions:1.0.0-alpha19 と androidx.camera:camera-view:1.0.0-alpha19 がリリースされました。バージョン 1.0.0-alpha19 に含まれる commit については、こちらをご覧ください。

バグの修正

  • @ExperimentalVideo アノテーションが camera-view に導入されました。このアノテーションにより、機能開発完了時に変更される可能性のある試験運用版の動画機能を公開する API がマークされます。これらの API を使用するメソッドでは、ExperimentalVideo を markerClass として @UseExperimental アノテーションを使用する必要があります。(I6d729)

Camera-Extensions バージョン 1.0.0-alpha18

2020 年 10 月 14 日

androidx.camera:camera-extensions:1.0.0-alpha18 がリリースされました。バージョン 1.0.0-alpha18 に含まれる commit については、こちらをご覧ください。

バグの修正

  • CameraX の初期化と bindToLifecycle のレイテンシを改善しました。(I61dc5)
  • Camera インスタンスに接続する前に <UseCase>.getTargetRotation() を呼び出すと、Surface.ROTATION_0 が返されます。ただし、Builder または UseCase に targetRotation が設定されている場合はその限りではありません。(I80fcd)

Camera-View バージョン 1.0.0-alpha18

2020 年 10 月 14 日

androidx.camera:camera-view:1.0.0-alpha18 がリリースされました。バージョン 1.0.0-alpha18 に含まれる commit については、こちらをご覧ください。

リリースにより他のカメラ ライブラリ アーティファクトがサポートされるようになりました。

Camera-Extensions バージョン 1.0.0-alpha17

2020 年 9 月 23 日

androidx.camera:camera-extensions:1.0.0-alpha17 がリリースされました。バージョン 1.0.0-alpha17 に含まれる commit については、こちらをご覧ください。

バグの修正

Camera-View バージョン 1.0.0-alpha17

2020 年 9 月 23 日

androidx.camera:camera-view:1.0.0-alpha17 がリリースされました。バージョン 1.0.0-alpha17 に含まれる commit については、こちらをご覧ください。

バグの修正

Camera-Extensions バージョン 1.0.0-alpha16

2020 年 9 月 16 日

androidx.camera:camera-extensions:1.0.0-alpha16 がリリースされました。バージョン 1.0.0-alpha16 に含まれる commit については、こちらをご覧ください。

バグの修正

  • カメラ インスタンスで拡張機能の有効化とクエリに使用される Extensions オブジェクトを取得するメソッドを ExtensionsManager に追加しました。(I4fb7e)

Camera-View バージョン 1.0.0-alpha16

2020 年 9 月 16 日

androidx.camera:camera-view:1.0.0-alpha16 がリリースされました。バージョン 1.0.0-alpha16 に含まれる commit については、こちらをご覧ください。

API の変更

  • PreviewView#setDeviceRotationForRemoteDisplayMode() と PreviewView#getDeviceRotationForRemoteDisplayMode() が削除されました。この 2 つのメソッドは、目的の回転がディスプレイの回転でない場合に、プレビューの回転をカスタマイズするために使用するものです(リモート ディスプレイなど)。ディスプレイ以外のプレビューの回転を処理するには、Preview#setTargetRotation() と新しく追加された PreviewView#getViewPort(targetRotation) を使用して目的の回転を設定するようになりました。(Ib62cc)
  • createSurfaceProvider() の名前を getSurfaceProvider() に変更しました。このメソッドは常に Preview.SurfaceProvider の同じインスタンスを返します。(Iff83c)

バグの修正

  • 拡張効果が有効であり、出力サーフェスでベンダー ライブラリの実装に特別な処理を必要とする場合、PreviewView で TextureView を使用するようにしました。(I0c3cc)
  • プレビューの任意のターゲットを回転できます。変換情報は、新しい TranformationInfoListener コールバックを介して計算され、ユーザーに即時に返されます。(I21470)

既知の問題

  • PreviewView で、エンドユーザーが PreviewView をクリックしたときに OnClickListener#onClick() が呼び出されません。タッチイベントが PreviewView#onTouchEvent() で誤って使用されます。この問題は次のリリースで修正される予定です。
  • PreviewView で ViewPort が使用されている場合、PreviewView#getMeteringPointFactory() から取得した MeteringPoint が間違っていることがあります。

Camera-Extensions バージョン 1.0.0-alpha15

2020 年 8 月 19 日

androidx.camera:camera-extensions:1.0.0-alpha15 がリリースされました。バージョン 1.0.0-alpha15 に含まれる commit については、こちらをご覧ください。

バグの修正

  • ExtensionsManager.init() メソッドは、0 個の引数を持つのではなく、Context をパラメータとして受け取るようになりました。(Ife754)
  • Context.getApplicationContext() から Application オブジェクトを返さない Context を使用したときに、初期化がクラッシュしなくなりました。(I3d3c9、b/160817073)

    Camera-View バージョン 1.0.0-alpha15

    2020 年 8 月 19 日

androidx.camera:camera-view:1.0.0-alpha15 がリリースされました。バージョン 1.0.0-alpha15 に含まれる commit については、こちらをご覧ください。

バグの修正

  • DisplayOrientedMeteringPointFactory は CameraSelector ではなく CameraInfo のインスタンスを受け取るようになりました。これは、ファクトリがポイントを生成する Camera への直接マッピングが行われるようにするためです。DisplayOrientedMeteringPointFactory を使用するすべてのクラスも、CameraSelector ではなく CameraInfo のインスタンスを受け取ります。(I400c1)
  • TextureViewMeteringPointFactory を削除しました。PreviewView は、TextureView と SurfaceView のどちらを使用しているかにかかわらず、測光ポイント ファクトリを作成するための公開 API(createMeteringPointFactory())を提供するようになりました。(Ide693)
  • PreviewView の SURFACE_VIEW / TEXTURE_VIEW 実装モードの名前を PERFORMANCE / COMPATIBLE に変更しました。PERFORMANCE は元の SURFACE_VIEW モードで、COMPATIBLE は元の TEXTURE_VIEW モードです。(I0edc2)
  • 画像キャプチャで、カメラの向きに基づいてメタデータ内の水平フリップフラグを上書きするようになりました。(I28499)

Camera Extensions バージョン 1.0.0-alpha14

2020 年 7 月 22 日

androidx.camera:camera-extensions:1.0.0-alpha14 がリリースされました。バージョン 1.0.0-alpha14 に含まれる commit については、こちらをご覧ください。

Camera-View バージョン 1.0.0-alpha14

2020 年 7 月 22 日

androidx.camera:camera-view:1.0.0-alpha14 がリリースされました。バージョン 1.0.0-alpha14 に含まれる commit については、こちらをご覧ください。

Camera-Extensions バージョン 1.0.0-alpha13

2020 年 6 月 24 日

androidx.camera:camera-extensions:1.0.0-alpha13 がリリースされました。バージョン 1.0.0-alpha13 に含まれる commit については、こちらをご覧ください。

バグの修正

  • カメラ ID と CameraCharacteristics でカメラをフィルタリングするための試験的なインターフェースを追加しました。(I28f61)

Camera-View バージョン 1.0.0-alpha13

2020 年 6 月 24 日

androidx.camera:camera-view:1.0.0-alpha13 がリリースされました。バージョン 1.0.0-alpha13 に含まれる commit については、こちらをご覧ください。

バグの修正

  • バインドされた直後に Lifecycle が DESTROYED 状態に移行する LifecycleOwner にバインドする場合、CamleView が IllegalArgumentException でクラッシュすることがなくなりました。DESTROYED 状態の Lifecycle をバインドしても、カメラを開こうとしません。(I7c2b8)
  • CameraView.getPreviewStreamState() を通じて PreviewView StreamState を使用できるようになりました。(I21a2b)

Camera-Extensions バージョン 1.0.0-alpha12

2020 年 6 月 10 日

androidx.camera:camera-extensions:1.0.0-alpha12 がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください。

バグの修正

  • スマートフォンがサイレント モードのときに CameraX を初期化すると、アプリの起動時にクラッシュする問題を修正しました。InitializationException が発生すると、アプリがクラッシュするのではなく、CameraUnavailableException が初期化結果の ListenableFuture に設定されます。(I9909a、b/149413835)

Camera-View バージョン 1.0.0-alpha12

2020 年 6 月 10 日

androidx.camera:camera-view:1.0.0-alpha12 がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください。

バグの修正

  • プレビュー サーフェスに表示されるコンテンツのビットマップ表現を返す PreviewView#getBitmap() API を追加しました。(I9b500、b/157659818)

Camera-Extensions バージョン 1.0.0-alpha11

2020 年 5 月 27 日

androidx.camera:camera-extensions:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください。

Camera-View バージョン 1.0.0-alpha12

2020 年 6 月 10 日

androidx.camera:camera-view:1.0.0-alpha12 がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください。

新機能

API の変更

バグの修正

  • プレビュー サーフェスに表示されるコンテンツのビットマップ表現を返す PreviewView#getBitmap() API を追加しました。(I9b500、b/157659818)

Camera-View バージョン 1.0.0-alpha11

2020 年 5 月 27 日

androidx.camera:camera-view:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください。

API の変更

  • プレビューがストリーミングされているかどうかをアプリが監視できるようにする PreviewView#getPreviewStreamState API を追加しました。また、PreviewView が TEXTure_VIEW モードの場合は、STREAMING 状態によりプレビュー画像の表示が保証されます。(Ic0906、b/154652477)
  • アプリがリモート表示モードで実行されている場合に変換計算用のデバイス回転を提供する PreviewView#setDeviceRotationForRemoteDisplayMode() API を追加しました。(I59b95、b/153514525)

バグの修正

  • Android 7.0 以下を搭載する FULL/LIMITED/LEVEL_3 カメラでプレビューに歪みが生じる問題を修正しました。Android バージョンが 7.0 以下の場合、ImplementationMode#TEXTURE_VIEW モードが強制的に使用されます。(I83e30、b/155085307)
  • PreviewView#createSurfaceProvider() から CameraInfo パラメータを削除し、PreviewView が SurfaceRequest から内部的にそれを取得するようにしました。(If18f0、b/154652477)
  • CameraView で、VideoCapture のデフォルトのアスペクト比を 16:9 に修正しました。(Ie6a7b、b/153237864)
  • Preview フラグメントをスワイプアウトしてから ViewPager2 にスワイプバックすると PreviewView 画面が黒くなる問題を修正しました。また、removeView(previewview) の後に addView(previewView) を呼び出す場合の問題も修正しました。(Iab555、b/149877652、b/147354615)
  • CameraView#takePicture() API を更新して、画像を Uri と OutputStream に保存できるようにしました。また、テストアプリを更新して、Uri を正規の例として使用するようにしました。(Ia2459、b/153607583)
  • ScaleType 属性を設定することにより、XML レイアウトから PreviewView のスケールタイプを設定できるようになりました。(I08565、b/153015659)
  • CameraView.ScaleType を削除しました。CameraView でスケールタイプを設定または取得するには、代わりに PreviewView.ScaleType を使用してください。(Ia8974、b/153014831)
  • PreviewView に背景色が設定されていない場合は、背景色を設定します。これにより、プレビュー ストリームの開始前に、その背後にコンテンツが見える問題を回避できます。(I09fad)

Camera-Extensions バージョン 1.0.0-alpha10

2020 年 4 月 15 日

androidx.camera:camera-extensions:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Camera-Core のリリースをサポートするように修正しました。

Camera-View バージョン 1.0.0-alpha10

2020 年 4 月 15 日

androidx.camera:camera-view:1.0.0-alpha010 がリリースされました。バージョン 1.0.0-alpha010 に含まれる commit については、こちらをご覧ください。

バグの修正

  • PreviewView の surfaceView 実装が特定のデバイスでうまく動作せず、プレビューを再開した後にアプリがクラッシュしてしまうという以前の既知の問題を修正しました。(I5ed6b)

Camera-Extensions バージョン 1.0.0-alpha09

2020 年 4 月 1 日

androidx.camera:camera-extensions:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

バグの修正

  • camera-camera2:1.0.0-beta02、camera-core:1.0.0-beta02、および camera-lifecycle:1.0.0-beta02 アーティファクトのバグ修正をサポートするように更新しました。

Camera-View バージョン 1.0.0-alpha09

2020 年 4 月 1 日、androidx.camera:camera-view:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

既知の問題

  • 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 インスタンスを取得します。null インスタンスが渡された場合、または優先実装モードを ImplementationMode.TEXTURE_VIEW に設定した場合は、ImplementationMode.TEXTURE_VIEW が内部的に使用されます。
  • 次のコードサンプルは、PreviewView で以前使用されていたプレビューのユースケース使用例を示しています。

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

    現時点では、次のように記述できます。

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • @UiThread アノテーションが PreviewView.getSurfaceProvider() に追加されました。つまり、メインスレッドから呼び出す必要があります。(I192f3)

  • プレビューのスケールタイプを設定できる PreviewView.setScaleType() を追加しました。PreviewView.ScaleType のいずれかの値を受け入れ、デフォルトは PreviewView.ScaleType.FILL_CENTER です。

  • PreviewView.getScaleType() を追加しました。

  • XML レイアウトで implementationMode 属性を使用して PreviewView の実装モードを設定するサポートを削除しました。

  • createMeteringPointFactory() API を PreviewView に追加して、PreviewView の (x, y) を MeteringPoint に変換するサポートを追加しました。(Ib36d7)

バグの修正

  • PreviewView のサイズ変更後に誤ったプレビューが表示される問題を修正しました。(I71101)

Camera-Extensions バージョン 1.0.0-alpha08

2020 年 2 月 26 日

androidx.camera:camera-extensions:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

Camera-View バージョン 1.0.0-alpha08

2020 年 2 月 26 日

androidx.camera:camera-view:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

バグの修正

  • SurfaceRequest.provideSurface() の ListenableFuture を Executor と Callback に変更しました。これにより provideSurface() での例外の処理が不要になることで API が簡素化され、provideSurface() コールバックをキャンセルできなくなります。これは、サーフェスのリリースが早すぎるために発生する古いデバイスでのクラッシュを防ぐためのものです。SurfaceRequest.Result オブジェクトは、SurfaceRequest が指定された Surface をどのように使用するかを追跡するために使用されるようになりました。(I7854b)
  • SurfaceRequest.setSurface(Surface) の名前を SurfaceRequest.provideSurface(Surface) に、SurfaceRequest.setWillNotComplete() の名前を SurfaceRequest.willNotProvideSurface() に変更しました。(I224fe)
  • デフォルトの CameraXConfig プロバイダを設定するフラグを保持することにより、ProGuard を有効にしたアプリのバリアントの初期化を修正しました。(I2d6c1)

Camera-Extensions バージョン 1.0.0-alpha07

2020 年 2 月 10 日

androidx.camera:camera-extensions:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 以前に ImageCapture.OnImageSavedCallback.onError() と ImageCapture.OnImageCapturedCallback.onError() で渡されていた引数は、単一の引数 ImageCaptureException(以前に渡されていた情報をすべて含む)に変更されました。
  • ImageCapture.OnImageSavedCallback.onImageSaved() で以前に渡されていた file 引数は削除されました。(I750d2)

Camera-View バージョン 1.0.0-alpha07

2020 年 2 月 10 日

androidx.camera:camera-view:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

API の変更

  • PreviewView の TextureView 実装で、TextureView のサイズをカメラセンサーの出力サイズに設定してから、親の PreviewView を表示するようにスケーリングするようになりました。カメラ プレビューで UI 全体(画面全体など)を表示したい場合は、PreviewView のサイズを固定値に設定したり、コンテンツをラップしたりしないでください。属性「wrap_content」など)を使用すると、カメラ プレビューが PreviewView の一部のみに表示されることがあります(カメラセンサーの出力サイズが小さい場合)。代わりに、PreviewView を親と同じ大きさに設定する必要があります(属性「match_parent」などを使用します)。(1204869)

バグの修正

  • Uri と OutputStream に画像を保存できるように ImageCapture を更新しました。オーバーロードされた takePicture メソッドを 1 つに統合しました。典型例として Uri を使用するようテストアプリを更新しました。(Ia3bec)
  • Preview.PreviewSurfaceProvider の名前が Preview.SurfaceProvider に変更されました。SurfaceProvider ではデベロッパーが独自の ListenableFuture を作成する必要がなくなり、新しい SurfaceRequest オブジェクトを介して Surface が提供されるようになりました。Preview.getPreviewSurfaceProvider() メソッドは、Preview が PreviewView などの他のクラスとペア設定される場合に悪用される可能性があるため、削除されました。(I20105)
  • 以前に ImageCapture.OnImageSavedCallback.onError() と ImageCapture.OnImageCapturedCallback.onError() で渡されていた引数は、単一の引数 ImageCaptureException(以前に渡されていた情報をすべて含む)に変更されました。
  • ImageCapture.OnImageSavedCallback.onImageSaved() で以前に渡されていた file 引数は削除されました。(I750d2)
  • API が CameraInfo の getZoomRatio()、getMaxZoomRatio()、getMinZoomRatio()、および getLinearZoom() メソッドで更新され、ZoomState インスタンスを返す getZoomState() に統合されました。(Ib19fe)

Camera Extensions バージョン 1.0.0-alpha06

2020 年 1 月 22 日

androidx.camera:camera-extensions:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。

更新

  • Camera Core と Camera2 の変更をサポートするためのさまざまな修正と更新。

Camera-View バージョン 1.0.0-alpha06

2020 年 1 月 22 日

androidx.camera:camera-view:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。

更新

  • Camera Core と Camera2 の変更をサポートするためのさまざまな修正と更新。

Camera Extensions バージョン 1.0.0-alpha05

2019 年 12 月 18 日

androidx.camera:camera-extensions:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 内部 Camera Core API に合わせて更新されました。

Camera-View バージョン 1.0.0-alpha05

2019 年 12 月 18 日

androidx.camera:camera-view:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。

既知の問題

  • PreviewView の使用時に、アスペクト比が正しくない場合があります。(b/146215202)

新機能

  • SurfaceTexture のライフサイクルを TextureView サーフェスのカメラの使用と同期させる、PreviewView.TextureViewImplementation という新しいクラスを実装しました。

Camera-Extensions バージョン 1.0.0-alpha04

2019 年 12 月 4 日

androidx.camera:camera-extensions:1.0.0-alpha04 がリリースされました。camera-extensions のバージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • 拡張機能の可用性の確認と有効化により、CameraSelector を入力パラメータとして使用できるようになりました。これは、ユースケースのバインドに使用されるのと同じ CameraSelector である必要があります。

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • 拡張機能ライブラリを使用する前に拡張機能を初期化する必要があります。

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

Camera-View バージョン 1.0.0-alpha04

2019 年 12 月 4 日

androidx.camera:camera-view:1.0.0-alpha04 がリリースされました。camera-view のバージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • PreviewView クラスは、Preview ユースケースからの出力をアプリで簡単に表示するために用意されています。
  • PreviewView はレイアウトに含めることができます。

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView は、Preview ユースケースを簡単に接続するための PreviewSurfaceProvider を提供します。

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • 「ZoomLevel」は、API 命名規則により「ZoomRatio」になりました。

  • メソッドの一部のパラメータについて、null 可能性が変更されました。

Camera-Extensions と Camera-View バージョン 1.0.0-alpha03

2019 年 10 月 9 日

androidx.camera:camera-extensions:1.0.0-alpha03 と androidx.camera:camera-view:1.0.0-alpha03 がリリースされました。camera-extensions:1.0.0-alpha03 に含まれる commit と、camera-view:1.0.0-alpha03 に含まれる commit があります。

新機能

  • 拡張機能のコンテキスト イニシャライザを追加しました。拡張機能のバージョンを 1.1.0 に変更しました。

Camera-Extensions と Camera-View バージョン 1.0.0-alpha02

2019 年 9 月 5 日

androidx.camera:camera-extensions:1.0.0-alpha02 と androidx.camera:camera-view:1.0.0-alpha02 がリリースされました。camera-extensions:1.0.0-alpha02 に含まれる commit と、camera-view:1.0.0-alpha02 に含まれる commit があります。

  • PreviewImageProcessorImpl がタイムスタンプを正しく実装していることを確認するテストを追加しました。
  • Nexus 5(API レベル 21)での ExtensionTest テストの失敗を修正し、プレビューを利用できるようにしました。

Camera-Extensions と Camera-View バージョン 1.0.0-alpha01

2019 年 8 月 7 日

androidx.camera:camera-extensions:1.0.0-alpha01 と androidx.camera:camera-view:1.0.0-alpha01 がリリースされました。camera-extensions:1.0.0-alpha01 に含まれるコミットと、camera-view:1.0.0-alpha01 に含まれるコミットがあります。

  • サポートされているデバイスのエフェクトにアクセスするための、今後の Camera Extensions 用の新しいライブラリ。このライブラリは作業進行中です。
  • 新しいカメラビュー クラス。このライブラリは作業進行中です。