2011-08-27 15 views
11

Tengo problemas para acceder a las cámaras (delantera y trasera al mismo tiempo). Cuando enciendes una cámara, funciona. Cuando apago primero y enciendo segundo, funciona. Da la siguiente excepción cuando intento encender la segunda cámara mientras la primera muestra la imagen.Uso de ambas cámaras en Android: "No se puede conectar al servicio de la cámara"

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 el documentaion encontré una frase que dice:

público cámara estática abierta (int cameraId)

desde: API de nivel 9 Crea un nuevo objeto de cámara para acceder a una determinada cámara de hardware. Debe llamar a release() cuando termine de usar la cámara, de lo contrario permanecerá bloqueado y no estará disponible para otras aplicaciones. Su aplicación solo debe tener un objeto de cámara activo a la vez para una cámara de hardware en particular.

.. pero estoy teniendo un solo objeto de cámara 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.
+0

Esto no es exactamente un duplicado, pero hay discusiones mucho más populares del tema relacionado: * [El uso de ambos cámaras frontal y posterior simultáneamente en Android] (https://stackoverflow.com/q/11419940/192373) * –

Respuesta

14

This pregunta básicamente dice que no se puede hacer, pero puede haber algún truco. This la falta de respuesta de los grupos de google me dice que probablemente no. Here es otra publicación sin respuesta en grupos de google. Here es otra publicación que analiza el uso de dos cámaras al mismo tiempo.

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

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

0

También quería hacer lo mismo, pero no puedo lograrlo, su limitación de Android OS.

TIENE QUE LIBERAR el objeto de cámara conectado para que otro acceda.

El mismo problema se presenta al acceder a la clase AudioRecord, simplemente no se puede convertir en objeto hasta que se lanza el primero.

+0

Esto no es una limitación del sistema operativo; la API no prohíbe abrir dos instancias de cámara simultáneamente. Son las implementaciones que no nos permiten mantener abiertas dos cámaras. Desafortunadamente, algunos dispositivos no exponen esta funcionalidad a terceros a pesar de que son totalmente capaces (por ejemplo, teléfonos Samsung S4 y S5). Por otro lado, los teléfonos basados ​​en Snapdragon-801 a menudo funcionan, ver más [aquí] (http://stackoverflow.com/a/28811277/192373). –

2

Ambas cámaras se pueden iniciar juntas siempre que el hardware lo admita. Primero necesita encontrar el SoC específico usado por su teléfono. Puede encontrarlo utilizando el comando

$ adb shell getprop 

Revise el campo [ro.board.plataforma], para Nexus 6 vuelve

[ro.board.platform]: [msm8084] 

Ahora lo que se necesita para comprobar si este chipset tiene la capacidad de doble ISP en el hardware. Para los conjuntos de chips Snapdragon de Qualcomm, puede encontrarlo here. Para Samsung Exynos, puede encontrarlo here. Ahora, si su dispositivo admite una cámara dual y tiene instalado el sistema operativo más reciente, puede usar esta aplicación (ref) desarrollada por Jens para verificar si la cámara doble funciona. Probablemente debería funcionar, funciona en mi Nexus 6. vídeo: http://youtu.be/lt8N1Lpa9Zw

Gracias, Jai

+0

Desafortunadamente, Samsung S4 y S5 no exponen la API pública para abrir la cámara dual, como se discutió en * [¿Cómo capturar las cámaras frontal y posterior en Galaxy S4 simultáneamente?] (Http://stackoverflow.com/questions/17061045/how -to-capture-both-front-and-back-cameras-in-galaxy-s4-simultáneamente) *. Además, se confirmó en [** Samsung Developers ** forum] (http://developer.samsung.com/forum/thread/a/201/247737). –

Cuestiones relacionadas