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カメラも同様に機能した可能性があります。




