画像取得のためのAndroidカメラインターフェース

はじめに

Imatest に、Android API レベル 15 以降 (Icecream Sandwich 以降) の Android デバイスから直接イメージを取得する機能が追加されました。付属の Android アプリImatestAcquire (場合によっては ITSservice サービスも使用) を使用することで、 Imatest はリモートで取得コマンドを発行し、結果データを USB 経由でダウンロードできます。ImatestAcquire により、 Imatest はAndroid デバイスをリモートでテストできるようになりました。

ImatestAcquire は、Android デバイスに内蔵されているカメラ アプリを使用して画像をキャプチャするか、一部のデバイスでは Android の CameraITS を使用して画像をキャプチャできます (以下のリストを参照)。内蔵カメラ アプリからの取得はすべてのデバイスで利用可能で、デバイスに複数のカメラ アプリがある場合は、ユーザーが好みのアプリを選択できます。この動作モードでは、ポイント アンド シュート カメラの機能が提供され、Android デバイスでユーザーの入力 (たとえば、ユーザーがシャッター ボタンを押す必要がある) が必要になります。Android の Camera 2 API をサポートするデバイスでは、 ImatestAcquire は 完全に自動化された方法で動作し、ISO 感度、露光時間、画像サイズ、画像フォーマット (YUV、JPEG、RAW [1] ) などの重要な取得設定にユーザーがアクセスできるようにします。

*注記* Imatest 5.0以降、画像取得機能はImatest Masterに搭載されています。Imatest 5.0より前のバージョンでは、画像取得機能はImatest ISに搭載されていました。

ImatestAcquire Androidアプリ

 ImatestAcquire-Mainactivity

ImatestAcquireアプリが起動すると、メイン画面(上記参照)が表示されます。ユーザーインターフェースは、 「接続」 、 「写真撮影」 、 「設定」ボタンで構成され、前2つのボタンにはそれぞれステータスインジケーターが表示されます。Imatestはアプリと自動的に連携するため、通常はこれらの各種コントロールを使用する必要はありません。ただし、詳細は後述します。

ImatestAcquireは起動時に接続の検索を開始し、ImatestがImatestAcquireに自動的に接続できるようにします。必要に応じて、 [接続]ボタンを使用して、 ImatestAcquireに手動で接続の検索を開始させることもできます。接続を待機している間は、「接続を待機しています」というメッセージが表示されます。接続が確立されると、ステータスインジケーターが「ポート2112で/127.0.0.1に接続しました」のように変わります。タイムアウト期間内に接続が確立されない場合は、 「接続がタイムアウトしました。もう一度お試しください。」というメッセージが表示されます。

「撮影」ボタンを押すと、保存された設定を使用して手動で画像取得が開始され、画像の送信が試みられます。なお、Imatest ISは自動的に画像取得を開始するため、このボタンを使用する必要はありません。

設定ボタンをクリックすると、設定画面が開きます。

設定アクティビティ

設定アクティビティでは、キャプチャおよび接続に関連する以下の設定にアクセスできます。

  • 接続タイムアウト - ImatestAcquireが接続を待機できる時間。タイムアウト制限を無効にするには、0秒に設定してください。
  • 接続ポート番号- Imatest IS との接続に使用される Android デバイス上のポート番号。この値は、 Imatest ISの Android 設定ダイアログの「デバイスポート」フィールドに表示されている値と同じである必要があります。
  • キャプチャ方法 -画像を取得するソース。対応デバイス(下記リスト参照)では、内蔵カメラアプリまたはCameraITSを選択でき、キャプチャモード設定と手動キャプチャ設定が有効になります。それ以外の場合は、この設定は内蔵カメラアプリに限定され、前述のコントロールは無効になります。
  • 撮影モード- CameraITSオプションでは、ユーザーはフルオート撮影かマニュアル撮影かを選択できます。マニュアル撮影を選択した場合は、マニュアル撮影設定が有効になります。

ImatestがImatestAcquireからキャプチャを要求すると、これらの設定は上書きされることに注意してください。

ImatestAcquire-Settingsactivity

手動キャプチャ設定アクティビティ

設定アクティビティでは、以下の手動キャプチャ関連設定にアクセスできます。

  • 画像フォーマット- yuv 、 jpeg 、または一部のデバイスではrawから選択してください。
  • 露光時間 -露光時間を1~200ミリ秒の範囲で設定します。
  • 感度 - ISO感度を設定します
  • カスタム画像サイズチェックボックス - これを選択すると、カスタム画像サイズが有効になります。カメラは固定された画像サイズセットをサポートしていることに注意してください。カスタム画像サイズは、 ImatestのAndroid設定ウィンドウから設定するのが最適です。
  • 画像の幅 -画像の幅(ピクセル単位)
  • 画像の高さ- 画像の高さ(ピクセル単位)

ImatestがImatestAcquireからキャプチャを要求すると、これらの設定は上書きされることに注意してください。

ImatestAcquire-ITS設定

Androidデバイスの設定

Android デバイスがImatestと通信できるようにするには、デバイスを USB ケーブルでホスト コンピュータに接続し、デバイスで USB デバッグを有効にする必要があります。このオプションを有効にすると、ホスト コンピュータとの USB 通信が可能になります。USB デバッグを有効にするオプションは、「設定」アプリの「開発者向けオプション」セクションからアクセスできます。API レベル 17 (Android 4.2) 以降では、「開発者向けオプション」はデフォルトで非表示になっています。API バージョン 15 または 16 のデバイスの場合は、 「USB デバッグを有効にする」セクションに進んでください。

開発者向けオプションを有効にする

開発者向けオプションを有効にする手順はデバイスによって若干異なる場合がありますが、この例では Google Nexus 5 を使用します。有効にするには、設定アプリを開き、下にスクロールして「端末情報」を選択します。「端末情報」内で、 「ビルド番号」までスクロールし、 「ビルド番号」を 7 回タップします。3 回タップすると、励みになるトーストが表示されます (下記参照)。

 Android-EnableDeveloper

USBデバッグを有効にする

次に、設定アプリに戻り、下にスクロールして「開発者向けオプション」セクションを選択します。

Android開発者オプション
開発者向けオプションで「USBデバッグ」を選択すると、デバイスの設定が完了します。

 Android-EnableUSBDebug

一部のデバイスでは、工場出荷時設定にリセットしなくても開発者向けオプションを非表示にできることに注意してください。これを行うには、設定アプリを開き、「アプリ」セクションを選択します。 「すべて」セクションまでスクロールし、さらに下にスクロールして「設定」アプリを選択します。 「データを消去」ボタンをクリックすると、開発者向けオプションセクションが再び非表示になります。

Imatestの設定Imatest - Android設定を開く

Imatestを使用してデータを取得するには、まずAndroidの設定ウィンドウを使用して接続とキャプチャの設定を構成し、 ImatestがAndroidからデータを取得するように設定する必要があります。

Androidの設定ウィンドウ

Android設定ウィンドウは、接続されているAndroidデバイスを選択し、そのデバイスのデータ取得設定を定義するために使用します。このウィンドウは、 Imatestメインウィンドウの「設定」メニューから「Android設定」を選択することでアクセスできます。ダイアログが利用可能なAndroidデバイスをポーリングする必要があるため、ウィンドウが表示されるまで数秒かかる場合がありますのでご注意ください。

接続設定セクション

このセクションでは、ユーザーがAndroidデバイスとの接続を確立できます。ImatestはUSB経由で転送されるTCP接続を介してAndroidデバイスと通信します。この接続により、Androidデバイスのポートとホストコンピュータのポートの両方で設定が可能になります。通常、ポートを変更する必要はありません。

上記の説明どおりにデバイスが正しく設定されていれば、ダイアログが読み込まれると、デバイスのシリアル番号が「デバイスの選択」ドロップダウンメニューに表示されます(表示されない場合は、上記の説明に従ってUSBデバッグが有効になっていることを確認してください)。デバイスを選択すると、 ImatestはImatestAcquireアプリ(および対応デバイスの場合はITSservice)をインストールし、 「ImatestAcquireの開始」 、 「デバイスの再起動」、 「ImatestAcquireの停止」ボタンを有効にします。これらのボタンを使用すると、デバイス上でImatestAcquireを初期状態から開始できます。

取得設定セクションAndroid_settings

このセクションには、キャプチャを定義するために必要なさまざまなコントロールがあります。最初のラジオボタングループは「取得ソース」グループで、内蔵アプリまたはCameraITSのいずれかからキャプチャできます。内蔵アプリで取得すると、デバイス上でユーザーが選択したカメラアプリが起動して画像を取得します。CameraITS オプションを選択すると、Android のCameraITSサービスから画像を取得します。これは、特定のデバイスでのみ利用可能です。内蔵アプリを選択すると、 CameraITSでのみ利用可能なこのセクションの他のすべてのコントロールが無効になります。CameraITS をサポートしていないデバイスでは、利用可能な取得ソースは内蔵アプリのみであることに注意してください。

CameraITS の選択では、キャプチャ モード、画像フォーマット、露出、感度のコントロールに加え、カスタム画像サイズのドロップダウン メニューと、リニア トーン マップを強制適用するためのチェックボックスが表示されます。キャプチャ モードグループには、次のオプションがあります。

フルオート撮影モードでは、他のコントロールは無効になり、YUV画像フォーマットのみが許可されます。マニュアル撮影モードでは、露光時間、ISO感度、画像サイズを変更できるほか、リニアトーンマップを使用するかどうかも設定できます。ただし、露光時間、感度、およびカスタムサイズに関する制限はデバイスによって規定されていることに注意してください。また、使用可能な画像フォーマットもデバイスによって規定されており、マニュアルモードではすべてのフォーマットが使用可能です。

ImatestからのAndroid取得を有効にする

ImatestでAndroid端末からデータを取得するには、 Imatestメインウィンドウの「設定」メニューをクリックします。次に「デバイスからイメージを取得」を選択し、最後に「Android」を選択します。これで、 Imatestは接続されたAndroid端末からデータを取得する準備が整いました。

Imatest-select Android

CameraITS(カメラ2)でサポートされているデバイスの一覧

既知の問題

  1. Nexus 5などの一部のAndroid端末は、USB3ポート経由での通信が不安定になる場合があります。数回キャプチャしただけで「エラー:デバイスがオフラインです」というエラーが表示される場合は、端末をUSB2ポートに接続して再度お試しください。

[1] この文書の執筆時点では、Android は Camera 2 API に RAW サポートを追加していません。RAW サポートは、Android API バージョン L が完全にリリースされたときに利用可能になるはずです。