Android:エミュレーターでWebカメラを使用する方法は?


84

AVD Managerでフロントカメラを「webcam0」に設定して、Webカメラをエミュレーターに接続しています。エミュレータのカメラアプリケーションを起動すると、エラーが発生します

CameraService::connect X (pid 702) rejected (invalid cameraId 0).

Androidソースコードの関連部分は次のとおりです。

sp<ICamera> CameraService::connect(
    const sp<ICameraClient>& cameraClient, int cameraId) {

    int callingPid = getCallingPid();

    [...]

    if (cameraId < 0 || cameraId >= mNumberOfCameras) {
        LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).",
            callingPid, cameraId);
        return NULL;
    }

    [...]
}

カメラが1つしかないため、WebカメラにはID0が正しく割り当てられています。ただし、mNumberOfCamerasおそらくまだ0です。これは、カメラがエミュレーターによって登録されていることを意味しますが、接続されているカメラの数を更新する必要はありません。

エミュレーターによって正しく認識されるようにWebカメラを接続するにはどうすればよいですか?

編集:のコマンドは結果emulator -webcam-list -avd <name of your AVD>\android-sdks\tools与えます:

List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`

EclipseのAVDマネージャーからemulator -camera-front webcam0 -avd <name of your AVD>、またはを使用してWebカメラを起動すると、次のウィンドウが表示されます。

ここに画像の説明を入力してください

編集2:これはエミュレータのバグのようです。提案された答えは、カメラをセットアップするために何をすべきかを教えてくれますが、私にとっては問題を解決しません。最終的には、Webカメラを内蔵したラップトップを使用して解決しました。おそらく、別のUSBWebカメラも同様に機能した可能性があります。

回答:


113

更新

Android Studio AVDの場合:

  1. AVDマネージャーを開きます。

AVDメニュー

  1. AVDの追加/編集:

特定のAVDストリップ

  1. 画面の下部にある[詳細設定]をクリックします。

AVDの詳細設定

  1. 選択したカメラをフロント/バックカメラとして設定します。

AVDカメラ設定


3
フロントカメラとバックカメラを同じソースに設定しないでください。
クリスリバー

1
@ChrisRiverどうして?それは問題ではないはずです。
DaveTheMinion

2
涼しい!しかし、複数ある場合、Webカメラを変更するにはどうすればよいですか?
walkmn

2
カメラが起動すると、シミュレータが即座にクラッシュします。私はMacを使用しています。
MilindMevada20年

2
あなたは、CLI経由で別のカムを使用することができます@walkmn:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
steamer25

42

Eclipseで以下の手順に従います。

  1. 後藤-> AVDマネージャー
  2. AVDを作成/編集します。
  3. ハードウェア>新規:
  4. カメラを後ろ向きに設定します
  5. プロパティ値をクリックして、= "webcam0"を選択します。
  6. 上記のすべてが完了すると、Webカメラが接続されます。そうでない場合は、WebCamドライバーを確認する必要があります。

詳細については、こちらを確認してください: AndroidエミュレーターでWebカメラを使用してライブ画像をキャプチャする方法は?

ここに画像の説明を入力してください


2
これはAVDマネージャーの古いUIだと思います。以前はこんな感じのウィンドウでしたが、今では専用のドロップダウンメニューからフロントカメラとリアカメラを選択できるようになりました。
1 ''

私はMacを使用しているので、MacOSXでは日食がこのように見えます。そのため、WindowsとメニューはMicrosoftWindowsとLinuxOSで異なる場合があります。
ラリスB 2013

正しいAPIも選択する必要があることに注意してください。API 10のエミュレーションを選択できますが、機能しません。API16が最初にそれを実際にサポートしたと思います。
Nux 2013年

エミュレーションはADTに基づいており、AndroidAPIに基づいていません。ADTは19年からエミュレーションをサポートしていると思います。
ラリスB 2013

Android Studioで、手順3で[詳細設定を表示]ボタンを選択して、カメラオプションを表示します。
eldes 2016

7

私はあなたが直面している問題の解決策を何とか与えることができるこの高評価のブログ投稿を見ることをお勧めします:

http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

彼のコードは現在のAndroidAPIに基づいており、最近のAndroid APIを使用している場合は、この場合に機能するはずです。


私はこれを見ましたが、時代遅れだと思いました。他に方法がない場合は使用します。ただし、AVDマネージャーではWebカメラをフロントカメラまたはバックカメラとして指定できるため、エミュレーターにはWebカメラを入力として使用するネイティブ機能があると思います。
1 ''

emulator -webcam-list -avd <name of your AVD>ちなみに、コマンドは何を教えてくれますか?ウェブカメラをwebcam0に設定するようにAVDのプロパティを変更した場合は、emulator -camera-front webcam0 -avd <name of your AVD>
Halim Qarroum 2012

3

ドライバーを確認し、必要に応じて更新することをお勧めします。


2
私のドライバーは6歳ですが、おそらく最新のものであり、オンラインで新しいバージョンを見つけることができません。別のカメラが見つかったら、カメラを変えてみるかもしれません。
1 ''
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.