CameraX
androidx.camera
グループ内のすべてのアーティファクトのリストを以下に示します。
アーティファクト | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
camera-camera2 | 1.3.4 | 1.4.0-rc01 | - | - |
camera-core | 1.3.4 | 1.4.0-rc01 | - | - |
カメラ効果 | - | 1.4.0-rc01 | - | - |
camera-extensions | 1.3.4 | 1.4.0-rc01 | - | - |
camera-lifecycle | 1.3.4 | 1.4.0-rc01 | - | - |
camera-mlkit-vision | - | 1.4.0-rc01 | - | - |
camera-view | 1.3.4 | 1.4.0-rc01 | - | - |
カメラのビューファインダー | - | - | 1.3.0-beta02 | 1.4.0-alpha07 |
camera-video | 1.3.4 | 1.4.0-rc01 | - | - |
デバイスのテスト
CameraX はラボの多くのデバイスでテストされています。現在ラボにあるデバイスの一覧を確認するには、CameraX のラボでテスト済みのデバイスをご覧ください。
依存関係の宣言
CameraX への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { // CameraX core library using the camera2 implementation def camerax_version = "1.4.0-rc01" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}" // If you want to additionally use the CameraX Lifecycle library implementation "androidx.camera:camera-lifecycle:${camerax_version}" // If you want to additionally use the CameraX VideoCapture library implementation "androidx.camera:camera-video:${camerax_version}" // If you want to additionally use the CameraX View class implementation "androidx.camera:camera-view:${camerax_version}" // If you want to additionally add CameraX ML Kit Vision Integration implementation "androidx.camera:camera-mlkit-vision:${camerax_version}" // If you want to additionally use the CameraX Extensions library implementation "androidx.camera:camera-extensions:${camerax_version}" }
Kotlin
dependencies { // CameraX core library using the camera2 implementation val camerax_version = "1.4.0-rc01" // The following line is optional, as the core library is included indirectly by camera-camera2 implementation("androidx.camera:camera-core:${camerax_version}") implementation("androidx.camera:camera-camera2:${camerax_version}") // If you want to additionally use the CameraX Lifecycle library implementation("androidx.camera:camera-lifecycle:${camerax_version}") // If you want to additionally use the CameraX VideoCapture library implementation("androidx.camera:camera-video:${camerax_version}") // If you want to additionally use the CameraX View class implementation("androidx.camera:camera-view:${camerax_version}") // If you want to additionally add CameraX ML Kit Vision Integration implementation("androidx.camera:camera-mlkit-vision:${camerax_version}") // If you want to additionally use the CameraX Extensions library implementation("androidx.camera:camera-extensions:${camerax_version}") }
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
カメラ ビューファインダー 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 ネイティブのビューファインダー コンポーザブルを導入しています。コンポーズ可能なビューファインダーは、さまざまなアスペクト比をサポートし、タッチイベントを処理しています。
カメラ ビューファインダー バージョン 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)。
Camera バージョン 1.4
バージョン 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 の場合は何もしません。(I821f4)。
バグの修正
ImageCapture
がPreview
+VideoCapture
+ImageCapture
UseCase
の組み合わせで 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 では 4000x3000)。(Ie3ed3、b/337336152)。 - プレビューで写真を撮影するときに
ImageCapture
とVideoCapture(UHD)
が Google Pixel 4XL API29 でバインドされる問題を修正しました。(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)。ImageCapture.takePicture
suspend 関数を追加し、Kotlin 固有の方法で呼び出せるようにしました。(I920be)。
API の変更
ImageCapture
に出力形式の API を追加し、デバイス機能をクエリできるようにgetSupportedOutputFormats
メソッドをImageCaptureCapabilities
に追加しました。デフォルトの出力形式の値は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
から別のものに変換できます。たとえば、ImageAnalysis
で検出されたオブジェクトの座標をPreviewView
オーバーレイに変換します。(I947ab)。camera-viewfinder
とcamera-viewfinder-compose
で使用できるように、camera-viewfinder-core
API をより一般的なものにしました。(I1e295)。getSurface
関数をViewfinderSurfaceRequest
に追加します。(I781a0)。camera-viewfinder
でcamera-viewfinder-core
を使用し、ViewfinderSurfaceRequest
とCameraViewfinder
を非推奨にします。(I6198c)。- ピンチしてズームのアクティビティ専用に設定されたスケーリング ジェスチャーを解釈する
ZoomGestureDetector
を追加しました。(Ifafbf)。
バグの修正
ImageAnalysis
' を修正しましたアナライザのデフォルトのターゲット解像度設定に関連する解像度選択の問題: アプリケーションで別のアナライザのデフォルトの解像度設定を設定しても、ターゲット解像度が誤って 640x480 に維持されていました。アプリケーションでこの問題(1.3.0 ~ 1.3.2)が発生し、ソリューションを含む新しいバージョン リリースを使用するようにアップグレードできない場合は、ResolutionSelector
を適切な解像度で直接設定し、AspectRatioStrategy
をImageAnalysis
UseCase
と一致させると、この問題を回避できます。(I81f72、b/330091012)。- 現在のリクエストが失敗した場合、キュー内の
takePicture
リクエストの実行が失敗する可能性がある問題を修正しました。(Ie0801)。 - Vivo X60 および X60 Pro デバイスに適用される無効な JPEG データチェックを行います。これにより、これらのデバイスで異常に大きい画像が表示される問題を解決できます。(I82247、b/288828159)。
- Samsung A24 デバイスでの不正確な JPEG 画像メタデータの問題を修正しました。この修正により、CameraX は JPEG 画像を正常に保存できます。また、Samsung A24 デバイスで
ImageProxy.toBitmap()
関数を呼び出したときに正しいビットマップ オブジェクトを返すこともできます。(I8d6eb、b/309005680)。 - キャプチャした画像が 10 MB を超える場合、すべての Samsung デバイスに対して無効な JPEG データの確認が適用されるようになりました。これにより、Samsung デバイスで異常に大きい画像が表示される現象を修正できます。(Ic2a65、b/288828159)。
- 多くの OEM が提供している CameraX 拡張機能の
ImageAnalysis
サポートを削除拡張機能の実装はImageAnalysis
では適切に機能せず、一貫性のない問題を引き起こす可能性があります。(I2d926)。
バージョン 1.4.0-alpha04
2024 年 1 月 24 日
androidx.camera:camera-*:1.4.0-alpha04
がリリースされました。バージョン 1.4.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
- 新しいアーティファクト: camera-effects: CameraX の出力にリアルタイム効果(
Preview
、VideoCapture
、ImageCapture
など)を適用するためのライブラリ。このアーティファクトには、カメラ出力を効率的に処理する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#ScreenFlash#clear
イベントは、ImageCapture
がバインド解除されたり、カメラが閉じられたりするとすぐに呼び出されます。また、このようなシナリオでのキャプチャが正しく完了していないために呼び出されないバグを修正しました。(If99f9)。takePicture
リクエストが完了する前にライフサイクルを停止するとクラッシュが発生する問題を修正しました(Idf017、b/306202751)。- 一部のデバイスで拡張機能が有効になっているとカメラ プレビューが黒くなる問題を修正しました。(I1ffd0)
- Snapdragon 778G SoC を搭載したデバイスでの録画時間が正しくなかった問題を修正しました。(If6aa7、b/316057919)。
バージョン 1.4.0-alpha03
2023 年 12 月 13 日
androidx.camera:camera-*:1.4.0-alpha03
がリリースされました。バージョン 1.4.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- 地域的な制限に従ってシャッター音を鳴らす必要があるかどうかの情報を提供するために、
CameraInfo.mustPlayShutterSound
を追加しました。(Ifda84)。 - カメラがフレームの露出を開始したときに通知するための
OnImageCapturedCallback.onCaptureStarted
とOnImageSavedCallback.onCaptureStarted
を追加しました。この段階でシャッター音またはシャッター アニメーションを再生することをおすすめします。(Ic49b3)。 - CameraX に前面カメラでの画像キャプチャ用のスクリーン フラッシュ機能のサポートが追加されました。CameraX は、フレームワーク側の API 処理を行い、必要に応じてアプリの UI の変更とタイミングを同期させます(例: アプリ画面の色や明るさが変更された後の AE プリキャプチャ トリガー)。アプリは、CameraX に提供される
ScreenFlashUiControl
インターフェースに UI 側の実装を追加するだけで済みます。(I8ae84)。 - CameraX に画面のフラッシュ機能の UI 側の実装のサポートを追加しました。アプリは、
PreviewView
から基本的なImageCapture.ScreenFlashUiControl
実装、または新しく追加されたScreenFlashView
を取得できるようになります。これにより、モノカラーのオーバーレイ ビューが追加され、画面のフラッシュ写真のキャプチャ時に画面の明るさが最大化されます。(I1810e)。
API の変更
- 新しい拡張機能のサポート(ポストビューとキャプチャ プロセスの進行状況): アプリがポストビューの機能をクエリし、プロセスの進行状況コールバックをクエリするための
ImageCapture#getImageCaptureCapabilities()
API を追加しました。アプリではImageCapture.Builder#setPostviewEnabled()
を使用してポストビューを有効にできます。ポストビューのサイズは、ImageCapture.Builder#setPostviewResolutionSelector()
を使用して選択できます。takePicture()
を呼び出すときに、onPostviewBitmapAvailable
とonCaptureProcessProgressed
をOnImageSavedCallback
またはOnImageCapturedCallback
に実装して、ポストビューと処理の進行状況通知を取得できます(サポートされている場合)。(I5cd88)。 - Surface にカメラの向きの情報が含まれているかどうかを示すフラグを使用して、センサーから現在のバッファへの座標変換を計算するための API。(I59096)。
- プレビュー
UseCase
でPreviewCapabitlity
をクエリする API を公開します。(Ie5b6c)。 VideoCapture
のより多くの品質をサポートする API を追加しました。Recorder.Builder#setVideoCapabilitiesSource(int)
をVIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES
とともに使用して、VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE
よりも多くの品質をサポートするRecorder
インスタンスを作成できます。一般的なユースケースとして、アプリは可能な限り UHD 動画を録画しようとしていて、コーデックが UHD 動画を録画できるにもかかわらず、デバイスのCamcorderProfile
に UHD 設定が含まれていないことがあります。(Iedbe2、b/263961771)。ImageAnalysis
出力形式のゲッター/セッターをCameraController
に追加しました。(I9a96c、b/308240643)。
バグの修正
- カメラ
1.3.1
以降:ProcessCameraProvider#bindToLifecycle()
のパフォーマンスを改善しました。主な変更点は、UseCases
に最適なサイズの組み合わせを特定するプロセスが最適化されることです。最適な結果は、特定のUseCase
の組み合わせや、対象デバイスでサポートされる出力サイズの数によって異なります。(I454f2)。 - 拡張機能が有効な場合に
VideoCapture
の使用を許可する。(I91f32)。 - Samsung A71 および M51 シリーズ デバイスでキャプチャされた大きな JPEG 画像に関する問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。キャプチャした画像のファイルサイズが極端に大きくなる。これらの冗長な 0 のパディング データは、キャプチャされた画像のファイルサイズを通常のサイズにするために削除されます。(I01afc、b/288828159)。
- Pixel での
ImageAnalysis
のサポートを無効にして、空でないImageAnalysis
のサポートサイズを誤って返す Google 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)。
- 公開テスト API として
ProcessCameraProvider.shutdownAsync
をリリースしました。これにより、テストの合間に異なる方法で CameraX の初期化が必要になるテストスイートで、プロセスカメラ プロバイダを使用できるようになりました。(I9eca7)。 - 動画キャプチャのダイナミック レンジ、フレームレート、ミラーモードを設定するための API を追加しました。(Ifb8f7)。
OutputSize
のサポートを終了し、ResolutionSelector
に置き換えます。ResolutionSelector
は、解像度を選択するより包括的な方法で、カメラコア API との整合性があります。(I93abd、b/286801438)。
バグの修正
- 背面カメラの
ImageAnalysis
で拡張機能のボケ表現または顔写真加工を有効にすると、Samsung Galaxy S23 Ultra 5G でプレビューが黒くなる問題を修正しました。(I2e8b1)。 - Moto E5 Play のプレビューと
VideoCapture
で伸ばされる問題を修正しました。(73dce2)。
バージョン 1.4.0-alpha01
2023 年 9 月 20 日
androidx.camera:camera-*:1.4.0-alpha01
がリリースされました。バージョン 1.4.0-alpha01 に含まれる 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 を使用して最大画角を取得する方法に関する情報を追加しました。(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)が発生し、ソリューションを含む新しいバージョン リリースを使用するようにアップグレードできない場合は、ResolutionSelector
を推奨される解像度で直接設定し、ImageAnalysis
UseCase に一致するAspectRatioStrategy
を設定することで、この問題を回避できます。(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 ミリ秒~ 12 ミリ秒
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 以降の重要な変更
- 10 ビット HDR、切り抜き、ミラー/非ミラー、ミュート/ミュート解除、フレームレートの設定などの動画機能。
- デュアル同時カメラ
- エフェクト ライブラリ
- 解像度セレクタ
- 超広角望遠カメラの選択
- 録画中のカメラの切り替え(試験運用版機能)
バージョン 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 の変更
PendingRecording.asPersistentRecording
を追加しました。これにより、レコーダーが接続されているVideoCapture
がリバウンドされている間、録音を継続できるようになりました。(I517c6)。
バグの修正
- ストリームが
VideoCapture
とプレビューの両方で共有されている場合にクラッシュする問題を修正しました。また、従来のデバイスでストリーム共有が有効になっている場合に画面が黒くなる問題を修正しました。 - Samsung S7(SM-G930T、SM-G930V)シリーズ デバイスでキャプチャされた大きな JPEG 画像に関する問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。そのため、キャプチャした画像のファイルサイズが大きくなります。これらの冗長な 0 のパディング データは、キャプチャされた画像のファイルサイズを通常のサイズにするために削除されます。(I407b0、b/288828159)。
- Samsung S22(SM-S901B、SM-S901B/DS)と S22+(SM-S906B)シリーズのデバイスでキャプチャされた大きな JPEG 画像の問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。S22 SM-S901B/DS デバイスでキャプチャされた画像のファイルサイズは約 13 MB になります。これらの冗長な 0 のパディング データは、キャプチャされた画像のファイルサイズを通常のサイズにするために削除されます。(I73be9、b/288828159)。
- Samsung A5、A52、A70、A72 シリーズのデバイスでキャプチャされた大きな JPEG 画像に関する問題を修正しました。キャプチャされた JPEG 画像には、JFIF 圧縮データ セグメントに冗長な 0 のパディング データが含まれています。キャプチャした画像のファイルサイズが極端なものになります(例: 約 32 MB、96 MB)。これらの冗長な 0 のパディング データは、キャプチャされた画像のファイルサイズを通常のサイズにするために削除されます。(I97c4d、b/288828159)。
- 拡張機能を有効にして写真を撮影するとネイティブ コードでクラッシュする問題を修正しました(I698f5)
バージョン 1.3.0-beta02
2023 年 7 月 26 日
androidx.camera:camera-*:1.3.0-beta02
がリリースされました。バージョン 1.3.0-beta02 に含まれる 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)。isImageAnalysisSupported
API をExtensionsManager
に追加しました。この API により、拡張機能が有効な場合に、プレビューとImageCapture
とともにImageAnalysis
のユースケースをバインドできるかどうかをアプリが判断できるようになりました。(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)。 - 回復不能なエラーを処理するために、
CameraEffect
にエラーリスナーを追加しました(Ice471)。 - テスト性を高めるために
ResolutionInfo
にパブリック コンストラクタを追加(If6d1c) setTargetRotationDegrees
の使用を置き換え、APIImageAnalysis.setTargetRotationDegrees(int)
、ImageCapture.setTargetRotationDegrees(int)
、VideoCapture.setTargetRotationDegrees(int)
を非推奨にするために APIUseCase.snapToSurfaceRotation(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
の 3 つがあります。カメラ プレビューに合わせるには、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 を追加しました。以下に例を示します。
List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
boolean isConcurrentCameraModeOn()
およびConcurrentCameraConfig
、SingleCameraConfig
、ConcurrentCamera
(Iab1c1)
ImageProcessor.Response#getOutputImage
を NonNull にする(Ib9c60)VideoCapture
ミラーリング API を追加しました(VideoCapture.Builder.setMirrorMode(int)
、VideoCapture.getMirrorMode()
を含む)。この API は、録画を一般的なカメラ プレビューの動作と一致させる必要があるアプリケーションに役立ちます。たとえば、背面カメラのプレビューはミラーリングされず、前面カメラのプレビューはミラーリングされます。(I713b6、b/194634656)。VideoCapture
のVideoCapture.Builder
API とgetTargetFramerate()
API にsetTargetFrameRate()
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
ローテーション API を追加しました(VideoCapture.Builder.setTargetRotation(int)
、VideoCapture.setTargetRotation(int)
、VideoCapture.setTargetRotationDegrees(int)
、VideoCapture.getTargetRotation()
を含む)。この API は、デバイスの向きをロックするアプリに役立ちます。ImageCapture.setTargetRotationDegrees(int)
とImageAnalysis.setTargetRotationDegrees(int)
も追加されています。(Id3ffe、b/205242781)。VIDEO_CAPTURE
とPREVIEW|VIDEO_CAPTURE
をエフェクト ターゲットとして許可。VIDEO_CAPTURE
をターゲットとする効果はVideoCapture
ユースケースに適用されます。PREVIEW|VIDEO_CAPTURE
をターゲットとするエフェクトは、プレビュー ストリームとVideoCapture
ストリームにコピーする前に共有ストリームに適用されます。(Iee6f3)。
バグの修正
- カメラ
1.2.2
から: Google Pixel などの一部のデバイスで Proguard が有効になっていると CameraX 拡張機能が正常に動作しない問題を修正しました。(I90aa2) - アプリ自体が画面の向きを処理する場合に発生する
PreviewView
のバグを修正しました。回転するとプレビューが歪むことがあります。これは特定のデバイスでのみ発生します。Google Pixel a4、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
と組み合わせることができる APIRecorder.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 については、こちらをご覧ください。
バグの修正
- Google Pixel などの一部のデバイスで ProGuard が有効になっている場合、CameraX 拡張機能が正常に動作しない問題を修正しました。(I90aa2)
バージョン 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
に APIisFocusMeteringSupported
を追加し、指定されたFocusMeteringAction
が現在のカメラでサポートされているかどうかをアプリで確認できるようにしました。ImageCapture
、ImageAnalysis
の解像度情報を提供するgetResolutionInfo
API を公開しました。- 写真の撮影時に JPEG 出力画像の圧縮品質の変更を許可する新しい API
ImageCapture.Builder#setJpegQuality
を追加しました。 CameraSelector#filter
を公開 API に追加し、CameraSelector
に基づいてCameraInfos
のリストをフィルタリングできるようにしました。- 既存のキャプチャ リクエスト オプションをクリアできるように、
Camera2CameraControl.clearCaptureRequestOptions
を追加しました。 - MLKit のような外部画像処理ライブラリで
CameraController
を使用するための試験運用版の API を追加しました。 - カメラに固有の
CameraSelector
を返す試験運用版の APICameraInfo#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 に変更されました。新しい APIQualitySelector.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
により選択されたカメラ)に関する情報を直接取得するための APIProcessCameraProvider.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 11CONTROL_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-Core 1.0.0-beta10 がサポートされるようになりました。
Camera-Camera2 バージョン 1.0.0-beta09
2020 年 9 月 16 日
androidx.camera:camera-camera2:1.0.0-beta09
がリリースされました。バージョン 1.0.0-beta09 に含まれる 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()
を使用します。
- アプリの UI の設計に応じて、
- 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-Core 1.0.0-beta10 がサポートされるようになりました。
Camera-Lifecycle バージョン 1.0.0-beta09
2020 年 9 月 16 日
androidx.camera:camera-lifecycle:1.0.0-beta09
がリリースされました。バージョン 1.0.0-beta09 に含まれる 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-Core 1.0.0-beta10 がサポートされるようになりました。
Camera-View バージョン 1.0.0-alpha17
2020 年 9 月 23 日
androidx.camera:camera-view:1.0.0-alpha17
がリリースされました。バージョン 1.0.0-alpha17 に含まれる commit については、こちらをご覧ください。
バグの修正
- リリースにより Camera-Core 1.0.0-beta10 がサポートされるようになりました。
Camera-Extensions バージョン 1.0.0-alpha16
2020 年 9 月 16 日
androidx.camera:camera-extensions:1.0.0-alpha16
がリリースされました。バージョン 1.0.0-alpha16 に含まれる 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 用の新しいライブラリ。このライブラリは作業進行中です。
- 新しいカメラビュー クラス。このライブラリは作業進行中です。