在android上使用两个摄像头:“无法连接到摄像头服务”

问题描述:

我在同时访问两个摄像头(前后摄像头)时遇到问题。 当打开一台摄像机时,它可以工作。 当我第一次关闭并打开第二次它的作品。 它给出了以下例外,当我试图打开第二个相机,而第一个仍然显示图像。在android上使用两个摄像头:“无法连接到摄像头服务”

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) 

在文件建立,我发现一个短语,说:

公共静态相机打开(INT cameraId)

自:API等级9 创建一个新的Camera对象访问特定硬件摄像头。 完成使用相机后,必须调用release(),否则将保持 锁定并对其他应用程序不可用。 您的应用程序一次只能为一个特定的 硬件摄像头启用一个Camera对象。

..但我只有一个摄像头对象的一个​​硬件摄像头,我想为第二个设备创建第二个对象。

  1. 有没有人知道这是可能的(我使用Android 2.3.3)?
  2. 地点:android.hardware.Camera.native_setup(本机方法)可以建议,可能是硬件/驱动程序限制 - 我使用HTC Sensation。
+0

这是不完全重复,但也有相关主题的更热门的讨论:* [同时使用前后相机同时安卓](https://*.com/q/11419940/192373)* –

This问题基本上说它不能做,但可能会有一些黑客。 This谷歌群体的反应不足告诉我很可能不会。 Here是Google群组上的另一个无回复帖子。 Here是另一篇讨论同时使用两台摄像机的文章。

所以我最初的答案是否定的,这是不可能的。但可能有一些解决方法,你可能必须自己找到它,因为它还没有被发现:)。

编辑11/21/11:不幸的是我发现更进一步的证明,它不能做到,从Sprint/HTC here官方。我意识到你正在使用Sensation,这是一款EVO 4G,但我相信它仍然适用。

我也想做同样的事情,但不能实现它,它的限制android操作系统。

您必须发布连接的相机对象才能被其他人访问。

访问AudioRecord类时也面临同样的问题,直到你释放第一个类时,你才能创建它的对象。

+0

这不是OS的限制;该API不禁止同时打开Camera的两个实例。这是不允许我们保持两台相机打开的实现。不幸的是,有些设备即使具备完全能力(例如三星S4和S5手机),也不会将此功能展示给第三方。另一方面,基于Snapdragon-801的手机通常可以工作,请参阅更多[这里](http://*.com/a/28811277/192373)。 –

只要硬件支持,两台相机都可以一起启动。首先,您需要找到您的手机使用的特定SoC。你可以使用命令

$ adb shell getprop 

Chech the field [ro.board。平台],对于Nexus 6,它返回

[ro.board.platform]: [msm8084] 

现在您需要检查此芯片组是否具有双ISP能力的硬件。对于高通Snapdragon芯片组,您可以找到它here。对于三星Exynos你可以找到它here。现在,如果您的设备支持双摄像头并且安装了最新的操作系统,那么您可以使用由Jens开发的此应用程序(ref)来验证双摄像头是否工作。它可能应该工作,但它确实在我的Nexus 6 视频工作:http://youtu.be/lt8N1Lpa9Zw

谢谢你,宰

+0

不幸的是,三星S4和S5不公开API以打开双相机,如* [如何在Galaxy S4中同时捕获前后相机?]中讨论的(http://*.com/questions/17061045/how -to-捕获两者-前端和背面摄像机功能于星系-S4-同时)*。此外,在[** Samsung Developers **论坛](http://developer.samsung.com/forum/thread/a/201/247737)上得到确认。 –