Camera Extensions検証ツールを使用すると、デバイスメーカーは、 CameraExtensionsOEMベンダーライブラリが正しく実装されていることを確認できます。このツールには、自動および手動の検証テストが含まれています。
自動検証テスト:ベンダーライブラリインターフェイスが正しく実装されていることを検証します。たとえば、画像のキャプチャに
CaptureProcessor
が必要な場合、テストでは、ImageCaptureExtenderImpl#getCaptureStages()
が画像のキャプチャに必要なCaptureStage
インスタンスを返すことを検証します。手動検証テスト:プレビューおよびキャプチャされた画像の画像効果と品質を検証します。たとえば、テストにより、デバイスメーカーは、顔のレタッチ効果が正しく適用されているかどうか、またはボケの強さが十分であるかどうかを手動で検証できます。
検証ツールのソースコードは、 AndroidJetpackリポジトリの拡張機能テストアプリの一部です。
カメラ拡張機能検証ツールを構築する
拡張機能検証ツールを構築するには、次の手順に従います。
AndroidJetpackライブラリのソースコードをダウンロードします。詳細については、 AndroidJetpackREADMEの「コードのチェックアウト」セクションを参照してください。
extensionstestapp
をビルドします。これにより、手動の検証テストを実行できます。cd path/to/checkout/frameworks/support/
./gradlew camera:integration-tests:camera-testapp-extensions:assembleDebug
APKは次のパスに出力されます。
path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
androidTest
ビルドします。このAPKを使用すると、自動検証テストを実行できます。cd path/to/checkout/frameworks/support/
./gradlew camera:integration-tests:camera-testapp-extensions:assembleAndroidTest
APKは次のパスに出力されます。
path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk
自動検証テストを実行する
自動検証テストを実行するには、 extensionstestapp
とandroidTest
をインストールします。
extensionstestapp
テストアプリAPKadb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
androidTest
APKadb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk
すべての自動テストを実行する
APKをインストールした後、すべての自動テストを実行してベンダーライブラリの実装を検証するには、次のコマンドを実行します。
adb shell am instrument -w -r androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner
すべてのテストに合格すると、 OKの結果が返されます。それ以外の場合、最終テストレポートには、すべてのテストが完了した後のターミナルの障害が表示されます。
図1.自動テストのOK結果
図2.失敗した自動テストの結果
特定のクラスの自動テストを実行する
特定のクラスの自動テストを実行するには、ターゲットクラスの名前とパスを指定します。次の例は、 ImageCaptureTest
クラスのテストを実行するコマンドを示しています。
adb shell am instrument -w -r -e class **androidx.camera.integration.extensions.ImageCaptureTest** androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner
手動検証テストを実行する
手動検証テストは、拡張機能テストアプリにあります。拡張機能テストアプリをインストールして起動した後、右上のメニュー項目をタップして検証ツールモードに切り替えます。
検証ツールモードに切り替えた後、最初のページには、 REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
機能を含むすべてのカメラが一覧表示されます。カメラが拡張モードをサポートしていない場合、対応するリスト項目は灰色になります。
図3.検証ツールモード
カメラの1つをタップして、テスト用の拡張モードを確認します。選択したカメラでサポートされていない拡張モードは灰色で表示されます。
図4.カメラで使用可能な拡張モード
プレビュー結果を確認する
プレビュー結果を確認するには、選択したカメラの拡張モードをタップして手動テストを開始します。次に、プレビューを含む画像キャプチャアクティビティが表示されます。
図5.ボケを有効にした画像のプレビュー
画像キャプチャアクティビティは、次の機能をサポートしています。
- ズームイン/ズームアウト
- タップしてフォーカス
- フラッシュモード切り替えボタン
- EV +/-
- 拡張機能の有効化/無効化スイッチボタン
ズームイン/ズームアウト、タップツーフォーカス、フラッシュモード、およびEV+/-機能がプレビューで期待どおりに機能することを確認します。
キャプチャされた画像の結果を確認する
画像をキャプチャするには、画像キャプチャアクティビティの[キャプチャ]ボタン(丸いボタン)をタップします。これにより、キャプチャされた画像を表示する画像検証アクティビティが起動します。
図6.ボケを有効にしてキャプチャした画像
画像検証アクティビティには、次の機能が含まれます。
- ピンチイン/ピンアウトして画像を拡大縮小します
- 左右にスライドして、キャプチャした画像を切り替えます
- 奪還
- 画像の保存メニュー項目
キャプチャされた画像が正しく、ズームイン/アウト、タップしてフォーカス、フラッシュモード、および画像のキャプチャ時に設定されたEV+/-設定と一致するかどうかを確認します。
キャプチャされた結果が正しい場合は、右下隅にあるPASSボタン(チェックマーク)をタップします。それ以外の場合は、左下隅にあるFAILボタン(感嘆符)をタップします。
テスト結果を表示する
拡張モードが合格または不合格として確認された後、拡張モードのリストアイテムには、異なる背景色とインジケータが表示されます。すべてのカメラのリストビューでは、アイテムは次の色で表示されます。
- 白い背景:カメラは少なくとも1つの拡張モードをサポートしており、サポートされている拡張モードは完全には検証されていません。
- 緑の背景:カメラは少なくとも1つの拡張モードをサポートしています。サポートされているすべての拡張モードが検証され、すべての結果が渡されます。
- 赤い背景:カメラは少なくとも1つの拡張モードをサポートしています。サポートされているすべての拡張モードが検証され、少なくとも1つの拡張モードの結果が失敗します。
- 灰色の背景:この機能は使用できません。
図7.カメラと拡張モードのテスト結果を示す色
その他の検証ツール機能
すべてのテストが完了すると、カメラリストアクティビティは次の機能を提供します。
- テスト結果のエクスポート:テスト結果をCSVファイルとして
Documents/ExtensionsValidation
フォルダーにエクスポートします。 - リセット:キャッシュされたすべてのテスト結果をクリアします。
- 拡張機能サンプルアプリ:拡張機能サンプルアプリモードに切り替えます。
テストが完了したら、テスト結果をエクスポートできます。問題が見つかり、ソリューションを含むベンダーライブラリの実装の新しいバージョンを再度確認する必要がある場合は、以前のテスト結果をリセットし、サポートされているすべての拡張モードをすべてのカメラで再実行して、問題が修正されていることを確認します。