「カメラ用画像をセット」コマンド
iOS 17以降のクラウド端末では、「カメラ用画像をセット」のコマンドを使用して画像をセットすることができます。このコマンドの実行後にテスト対象アプリが撮影を行うと、実際の写真の代わりに、セットした画像が取得されます。
ただし、アプリのカメラ機能の実装方法によっては、画像を取得できないことがあります。詳しくは、下記の「アプリ開発者向け情報」をご確認ください。
本機能はテストケースが「カメラ用画像をセット」コマンドを含んでいる場合、自動的に有効化されます。
- 一括実行の場合、一括実行の中に一つでも「カメラ用画像をセット」コマンドを含んだテストケースが含まれる場合、一括実行に含まれるすべてのテストケースに対して有効化されます。
- テストケース編集ページでテストを実行する場合、下記のタイミングでこの機能が有効化/無効化されます。(つまり、「カメラ用画像をセット」コマンドを追加しても、下記のタイミングまでは、この機能は有効化されません。)
- クラウドデバイスの起動タイミング
- 「(初回のみプロセス再起動)」以外のオプションが選択された状態で、「テスト対象アプリを起動」コマンドが実行されたタイミング
制限事項
本機能をご利用の際は、以下の点にご注意ください。
- 設定する画像は1枚の静止画です。同一フレームを継続的に表示するカメラ映像として表示され、動画として再生されることはありません。
- Live Photos には対応していません。
- ポートレートモードなどの深度を利用した機能には対応していません。
- フラッシュやフォーカスなどの撮影設定は、取得される画像に影響しません。
- 本コマンドで画像を設定する前に AUT が写真撮影を試みた場合、AUT がクラッシュすることはありませんが、写真を取得することはできません。
- 本機能を使わずに iOS シミュレータのカメラを利用してテストを実行するように作られた AUT の場合、本機能を有効にすると AUT が正常に動作しなくなることがあります。
アプリ開発者向け情報
下記に記載のメソッド名は Swift版のものです。対応するObjective-C版メソッドについては、Apple社の公式ドキュメントをご参照ください。
設定した画像は標準のカメラパイプラインを通じて提供されるため、以下はすべて実際のカメラがその画像を返しているかのように動作します。
- 写真撮影(
AVCapturePhotoOutput)— 設定した画像が撮影写真として返されます。 - ライブプレビュー(
AVCaptureVideoPreviewLayer)— 設定した画像がカメラプレビューに表示されます。 - ビデオフレーム(
AVCaptureVideoDataOutput)— 設定した画像がフレームごとに配信されます。 - 動画録画(
AVCaptureMovieFileOutput)— 設定した画像の動画として録画されます。 - メタデータ(バーコード、QR コード、顔検出など)(
AVCaptureMetadataOutput)— 設定した画像内のメタデータが検出・報告されます。
写真撮影のフロー
写真撮影の場合、AUT は以下のフローを使用する必要があります。
- AUT は
AVCapturePhotoOutputクラスのcapturePhoto(with:delegate:)を呼び出し、デリゲートのインスタンスを渡す必要があります。
capturePhoto(with:delegate:) が呼び出されると、クラウドデバイスは以下のデリゲートメソッドを順番に呼び出します。
-
photoOutput(_:willBeginCaptureFor:)→ 撮影が開始されることを通知します。 -
photoOutput(_:willCapturePhotoFor:)→ 写真が撮影される直前であることを通知します。 -
photoOutput(_:didFinishProcessingPhoto:error:)→ 撮影された(この場合はシミュレートされた)写真画像を返します。 -
photoOutput(_:didFinishCaptureFor:error:)→ 写真撮影処理が完了したことを通知します。
デリゲートが特定のメソッドを実装していない場合、そのメソッドは単にスキップされます。これら以外のメソッドは呼び出されません。
実行時エラーを防ぐため、カメラ関連クラスの基本的な API は安全に動作するよう構成されています。
-
AVCaptureSession -
AVCaptureDevice -
AVCaptureDeviceInput -
AVCaptureDeviceDiscoverySession -
AVCapturePhotoOutput -
AVCapturePhoto -
AVCaptureResolvedPhotoSettings -
AVCaptureVideoDataOutput -
AVCaptureVideoPreviewLayer -
AVCaptureMetadataOutput -
AVCaptureMovieFileOutput AVCaptureConnection
より高度なカメラ制御やカスタマイズが必要な場合は、お問い合わせください。