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 カメラには ID 0 が正しく割り当てられています。ただし、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 マネージャーから、または を使用して Web カメラを起動するとemulator -camera-front webcam0 -avd <name of your AVD>
、次のウィンドウが表示されます。
編集 2: これはエミュレーターのバグのようです。提案された回答は、カメラをセットアップするために何をすべきかを教えてくれますが、私にとっては問題を解決しません。最終的には、Web カメラが内蔵されたラップトップを使用して解決しました。おそらく、別の USB Web カメラも同様に機能した可能性があります。