问题 在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)

在文档中我发现了一个短语:

public static Camera open(int cameraId)

自:API等级9   创建一个新的Camera对象以访问特定的硬件摄像头。   使用完相机后必须调用release(),否则它将保留   已锁定且无法用于其他应用程序。    您的应用程序一次只能有一个Camera对象处于活动状态   硬件相机。

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

  1. 有人知道这是否可行(我使用的是Android 2.3.3)?
  2. 这个地方:android.hardware.Camera.native_setup(Native Method)可以建议可能是硬件/驱动程序限制 - 我正在使用HTC Sensation。

5476
2017-08-27 14:46


起源

这不完全是重复的,但有相关主题的更受欢迎的讨论: 同时使用前后摄像头android - Alex Cohn


答案:


这个 问题基本上说不能做,但可能有一些黑客攻击。 这个 谷歌团体缺乏回应告诉我很可能没有。 这里 是谷歌团体的另一个无回复帖子。 这里 另一篇文章讨论了同时使用两台摄像机的问题。

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

编辑11/21/11:不幸的是,我发现Sprint / HTC官方无法做到更进一步的证据 这里。我意识到你正在使用Sensation,这是一款EVO 4g,但我确信它仍然适用。


14
2017-08-27 17:00





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

$ adb shell getprop

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

[ro.board.platform]: [msm8084]

现在,您需要检查此芯片组是否具有硬件双ISP功能。对于Qualcomm snapdragon芯片组,您可以找到它 这里。对于三星Exynos,你可以找到它 这里。现在,如果您的设备支持双摄像头并且其中安装了最新的操作系统,那么您可以使用此应用程序 (参考文献) 由开发  验证双摄像头是否正常工作。它应该可以工作,它确实适用于我的Nexus 6。 视频: http://youtu.be/lt8N1Lpa9Zw 

谢谢,Jai


2
2017-10-17 16:07



不幸的是,三星S4和S5不公开公共API打开双摄像头,如中所述 如何同时捕捉Galaxy S4中的前置和后置摄像头?。另外,确认 三星开发者 论坛。 - Alex Cohn


我也想做同样的事,但无法实现它,它的android os限制。

您必须释放连接的摄像机对象才能被另一个摄像机对象访问。

访问AudioRecord类时遇到同样的问题,在释放第一个类之前,你无法创建它的对象。


0
2018-01-30 12:25



这不是OS的限制; API不会禁止同时打开两个Camera实例。这些实现不允许我们保持两个摄像头打开。不幸的是,有些设备没有将此功能暴露给第三方,即使它们完全有能力(例如三星S4和S5手机)。另一方面,基于Snapdragon-801的手机通常可以工作,请参阅更多信息 这里。 - Alex Cohn