Usando ambas cámaras en Android: "No se pudo conectar al servicio de la cámara"

Tengo problemas para acceder a ambas (cámara frontal y trasera al mismo tiempo). Cuando enciende una cámara, funciona. Cuando apago primero y enciendo en segundo lugar, funciona. Da la siguiente excepción cuando intento encender la segunda cámara mientras la primera todavía muestra la imagen.

E/AndroidRuntime(32325): FATAL EXCEPTION: main
E/AndroidRuntime(32325): java.lang.RuntimeException: Fail to connect to camera service
E/AndroidRuntime(32325):    at android.hardware.Camera.native_setup(Native Method)
E/AndroidRuntime(32325):    at android.hardware.Camera.<init>(Camera.java:265)
E/AndroidRuntime(32325):    at android.hardware.Camera.open(Camera.java:226)
E/AndroidRuntime(32325):    at com.example.videostreamer.MainActivity$CameraHandler.start(MainActivity.java:116)
E/AndroidRuntime(32325):    at com.example.videostreamer.MainActivity$2.onClick(MainActivity.java:74)
E/AndroidRuntime(32325):    at android.view.View.performClick(View.java:2532)
E/AndroidRuntime(32325):    at android.widget.CompoundButton.performClick(CompoundButton.java:99)

En la documentación encontré una frase que dice:

Cámara estática pública abierta (int cameraId)

Desde: API Nivel 9 Crea un nuevo objeto Cámara para acceder a una cámara de hardware en particular. Debe llamar a release () cuando haya terminado de usar la cámara; de lo contrario, permanecerá bloqueada y no estará disponible para otras aplicaciones. Su aplicación solo debe tener un objeto Cámara activo a la vez para una cámara de hardware en particular.

.. pero solo tengo un objeto Camera para una cámara de hardware y quería crear un segundo objeto para el segundo dispositivo.

  1. ¿Alguien sabe si esto es posible (estoy usando Android 2.3.3)?
  2. El lugar: android.hardware.Camera.native_setup (método nativo) puede sugerir que probablemente sea una limitación de hardware / controlador: estoy usando HTC Sensation.

preguntado el 27 de agosto de 11 a las 14:08

Esto no es exactamente un duplicado, pero hay discusiones mucho más populares sobre el tema relacionado: Usando cámaras frontal y trasera simultáneamente android -

Se ha añadido compatibilidad con multicámara en Android10. Incluyeron las instrucciones en este video: youtube.com/watch?v=u38wOv2a_dA -

3 Respuestas

Este patrón de La pregunta básicamente dice que no se puede hacer, pero puede haber algún truco. Este patrón de La falta de respuesta de los grupos de Google me dice que lo más probable es que no. Aquí es otra publicación sin respuesta en los grupos de Google. Aquí es otra publicación que discute el uso de dos cámaras al mismo tiempo.

Entonces mi respuesta inicial es no, no es posible. PERO puede haber alguna solución, es posible que tenga que encontrarla usted mismo porque aún no se ha descubierto :).

EDITAR 11/21/11: Desafortunadamente encontré aún más pruebas de que no se puede hacer, oficial de Sprint / HTC aquí. Me doy cuenta de que está utilizando un Sensation, y este es un EVO 4g, pero estoy seguro de que todavía se aplica.

contestado el 23 de mayo de 17 a las 14:05

Ambas cámaras se pueden iniciar juntas siempre que el hardware lo admita. Primero debe encontrar el SoC específico que usa su teléfono. Puedes encontrar esto usando el comando

$ adb shell getprop

Revisa el campo [ro.board.platform], para Nexus 6 devuelve

[ro.board.platform]: [msm8084]

Ahora debería comprobar si este chipset tiene capacidad de doble ISP en el hardware. Para los conjuntos de chips Snapdragon de Qualcomm, puede encontrarlo aquí. Para Samsung Exynos puedes encontrarlo aquí. Ahora, si su dispositivo admite cámara dual y tiene el último sistema operativo instalado, entonces puede usar esta aplicación (árbitro) desarrollado por Jens para verificar si la cámara dual funciona. Probablemente debería funcionar, funciona en mi Nexus 6. Vídeo: http://youtu.be/lt8N1Lpa9Zw

Gracias, jai

Respondido 17 Oct 15, 19:10

Desafortunadamente, Samsung S4 y S5 no exponen la API pública para abrir la cámara dual, como se explica en ¿Cómo capturar las cámaras frontal y trasera en Galaxy S4 simultáneamente?. Además, confirmado el Desarrolladores de Samsung foros. - Alex Cohn

También quería hacer lo mismo, pero no puedo lograrlo, su limitación del sistema operativo Android.

TIENE QUE LIBERAR el objeto de cámara conectado para que pueda acceder a él otro.

Se enfrenta el mismo problema al acceder a la clase AudioRecord, simplemente no puede convertirlo en un objeto hasta que libere el primero.

Respondido el 30 de enero de 14 a las 16:01

Esta no es una limitación del sistema operativo; la API no prohíbe abrir dos instancias de Camera simultáneamente. Son las implementaciones las que no nos permiten mantener dos cámaras abiertas. Desafortunadamente, algunos dispositivos no exponen esta funcionalidad a terceros a pesar de que son totalmente capaces (por ejemplo, teléfonos Samsung S3 y S4). Por otro lado, los teléfonos basados ​​en Snapdragon-5 a menudo funcionan, ver más aquí. - Alex Cohn

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.