デバイス メーカーは、カメラ拡張機能検証ツールを使用して、カメラ拡張機能 OEM ベンダー ライブラリが正しく実装されていることを検証できます。このツールには、自動検証テストと手動検証テストが含まれています。
自動検証テスト: ベンダー ライブラリ インターフェースが正しく実装されていることを検証します。たとえば、画像キャプチャに
CaptureProcessor
が必要な場合は、画像をキャプチャするために必要なCaptureStage
インスタンスをImageCaptureExtenderImpl#getCaptureStages()
が返すかどうかが検証されます。手動検証テスト: 画像のエフェクトと、プレビュー画像およびキャプチャ画像の品質を検証します。デバイス メーカーは、たとえば顔写真加工エフェクトが正しく適用されているかどうかや、ボケ味の強さが十分かどうかを手動で検証できます。
検証ツールのソースコードは、Android Jetpack リポジトリにある拡張機能テストアプリの一部です。
カメラ拡張機能検証ツールをビルドする
拡張機能検証ツールのビルド手順は次のとおりです。
Android Jetpack ライブラリのソースコードをダウンロードします。詳しくは、Android Jetpack README のコードのチェックアウトに関するセクションをご覧ください。
extensionstestapp
APK をビルドします。この APK で手動検証テストを実行できます。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 をビルドします。この 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
APK と androidTest
APK をインストールします。
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. Failures が返された自動テストの結果
特定のクラスの自動テストを実行する
特定のクラスの自動テストを実行するには、テスト対象のクラスの名前とパスを指定します。次の例は、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. 検証ツールモード
いずれかのカメラをタップすると、テスト対象の拡張機能モードが表示されます。選択したカメラでサポートされていない拡張機能モードはグレーで表示されます。
図 4. カメラで使用可能な拡張機能モード
プレビューの結果を確認する
プレビューの結果を確認するには、選択したカメラの拡張機能モードをタップして、手動テストを開始します。プレビューを含む画像キャプチャ アクティビティが表示されます。
図 5. ボケを有効にしたプレビュー画像
画像キャプチャ アクティビティは次の機能に対応しています。
- ズームイン / ズームアウト
- タップしてフォーカス
- フラッシュ モードの切り替えボタン
- EV + / -
- 拡張機能有効 / 無効の切り替えボタン
ズームイン / ズームアウト、タップしてフォーカス、フラッシュ モード、EV + /- の機能が正しく動作することをプレビューで確認します。
キャプチャ画像の結果を確認する
画像をキャプチャするには、画像キャプチャ アクティビティのキャプチャ ボタン(丸いボタン)をタップします。画像検証アクティビティが起動され、キャプチャ画像を表示します。
図 6. ボケを有効にしたキャプチャ画像
画像検証アクティビティには次の機能が含まれます。
- ピンチ操作で画像を拡大 / 縮小
- 左右のスライド操作でキャプチャ画像を切り替え
- 再キャプチャ
- 「画像を保存」メニュー項目
キャプチャ画像が正しいかどうか、画像をキャプチャする際に設定されていたズームイン / ズームアウト、タップしてフォーカス、フラッシュ モード、EV + / - の設定と一致するかどうかを確認します。
キャプチャ結果が正しい場合は、右下隅の合格ボタン(チェックマーク)をタップします。正しくない場合は、左下隅の不合格ボタン(感嘆符)をタップします。
テスト結果を表示する
拡張機能モードの検証が合格または不合格となると、その拡張機能モードに対応するリスト項目の背景色とインジケーターが変わります。すべてのカメラのリストビューでは、項目が次の色で表示されます。
- 背景が白: カメラは少なくとも 1 つの拡張機能モードをサポートしています。サポートされている拡張機能モードのいずれかが検証されていません。
- 背景が緑: カメラは少なくとも 1 つの拡張機能モードをサポートしています。サポートされているすべての拡張モードが検証され、結果はすべて合格です。
- 背景が赤: カメラは少なくとも 1 つの拡張機能モードをサポートしています。サポートされているすべての拡張機能モードが検証され、1 つ以上の拡張機能モードの結果が不合格です。
- 背景がグレー: この機能は利用できません。
図 7. カメラと拡張機能モードのテスト結果を示す色
検証ツールのその他の機能
すべてのテストが完了したら、カメラリスト アクティビティの次の機能を実行できます。
- テスト結果のエクスポート: テスト結果を CSV ファイルで
Documents/ExtensionsValidation
フォルダにエクスポートします。 - リセット: キャッシュに保存されたテスト結果をすべて消去します。
- 拡張機能サンプルアプリ: 拡張機能サンプルアプリ モードに切り替えます。
テストの完了後、テスト結果をエクスポートできます。問題が見つかったため、ソリューションが適用されたベンダー ライブラリ実装の新しいバージョンをもう一度検証する必要がある場合は、前回のテスト結果をリセットし、すべてのカメラですべてのサポートされている拡張機能を再度実行し、問題が修正されたことを確認します。