Android: ¿Cómo usar la cámara web en el emulador?

82

Estoy conectando una cámara web a mi emulador configurando la cámara frontal en "webcam0" en AVD Manager. Cuando inicio la aplicación de la cámara del emulador, aparece el error

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

Aquí está la parte relevante del código fuente de 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;
    }

    [...]
}

A la cámara web se le ha asignado correctamente un ID de 0 porque solo hay 1 cámara. Sin embargo, mNumberOfCameraspresumiblemente sigue siendo 0. Esto significa que el emulador está registrando la cámara, pero no se ha molestado en actualizar el número de cámaras conectadas.

¿Cómo puedo conectar una cámara web para que el emulador la reconozca correctamente?

Editar: el comando emulator -webcam-list -avd <name of your AVD>en \android-sdks\toolsda el resultado:

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

Cuando ejecuto la cámara web desde el administrador AVD de Eclipse o la uso emulator -camera-front webcam0 -avd <name of your AVD>, aparece la siguiente ventana:

ingrese la descripción de la imagen aquí

Edición 2: esto parece ser un error en el emulador. La respuesta sugerida le dice qué hacer para configurar la cámara, pero no me resuelve el problema. Finalmente lo resolví usando una computadora portátil con una cámara web incorporada. Quizás otra cámara web USB podría haber funcionado también.

1 ''
fuente

Respuestas:

110

ACTUALIZAR

En Android Studio AVD:

  1. Abra AVD Manager:

Menú AVD

  1. Agregar / editar AVD:

Tira AVD específica

  1. Haga clic en Configuración avanzada en la parte inferior de la pantalla:

Configuración avanzada de AVD

  1. Configure su cámara de elección como las cámaras frontal / trasera:

Configuración de la cámara AVD

Nurnachman
fuente
3
No debe configurar las cámaras frontal y trasera en la misma fuente.
Chris River
1
@ChrisRiver ¿Por qué no? No debería importar.
DaveTheMinion
2
¡Frio! Pero, ¿cómo cambiar la webcam si tenemos más de una?
walkmn
2
Al instante bloquea el simulador cuando se inicia la cámara. Estoy en una mac.
Milind Mevada
2
@walkmn Puede usar una cámara alternativa a través de la CLI:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
steamer25
41

Siga los pasos a continuación en Eclipse.

  1. Ir a -> Administrador de AVD
  2. Cree / edite el AVD.
  3. Hardware> Nuevo:
  4. Configura la cámara mirando hacia atrás
  5. Haga clic en el valor de la propiedad y elija = "webcam0".
  6. Una vez hecho todo lo anterior, la cámara web debe estar conectada. Si no es así, debe verificar los controladores de su WebCam.

Consulte aquí para obtener más información: ¿Cómo usar la cámara web en el emulador de Android para capturar una imagen en vivo?

ingrese la descripción de la imagen aquí

Lalith B
fuente
2
Creo que esta es una interfaz de usuario más antigua para el administrador de AVD. Solía ​​tener una ventana que se veía así, pero ahora puedo seleccionar las cámaras frontal y trasera de los menús desplegables dedicados.
1 ''
Yo uso una mac para que eclipse se vea así en mac osx. Por lo tanto, las ventanas y los menús pueden ser diferentes en Microsoft Windows y Linux.
Lalith B
Tenga en cuenta que también debe elegir la API correcta. Puede elegir la emulación para API 10 pero no funcionará. Creo que API 16 fue la primera en admitirlo realmente.
Nux
No, la emulación se basa en ADT y no en la API de Android. ADT admite la emulación desde 19, creo.
Lalith B
En Android Studio, para el paso 3, seleccione el botón "Mostrar configuración avanzada" para mostrar las opciones de la cámara.
eldes
7

Le sugiero que mire esta publicación de blog altamente calificada que logra dar una solución al problema que enfrenta:

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

Su código se basa en las API de Android actuales y debería funcionar en su caso dado que está utilizando una API de Android reciente.

Halim Qarroum
fuente
He visto esto, pero asumí que estaba desactualizado. Lo usaré si no hay otra manera. Sin embargo, el administrador de AVD le permite especificar una cámara web como cámara frontal o trasera, por lo que supongo que el emulador tiene una capacidad nativa para usar una cámara web como entrada.
1 ''
Por emulator -webcam-list -avd <name of your AVD>cierto, ¿ qué te dice el comando? Si cambió las propiedades de AVD para configurar su cámara web en webcam0, intente iniciarla usandoemulator -camera-front webcam0 -avd <name of your AVD>
Halim Qarroum
3

Sugeriría verificar los controladores y actualizarlos si es necesario.

Tanuj Nayak
fuente
2
Mi controlador, a pesar de tener 6 años, supuestamente está actualizado y no puedo encontrar una versión más nueva en línea. Puedo intentar cambiar de cámara si encuentro otra.
1 ''