【问题标题】:Using both cameras on android: "Fail to connect to camera service"在 android 上使用两个摄像头:“无法连接到摄像头服务”
【发布时间】:2011-08-27 14:46:11
【问题描述】:

我无法同时访问这两个摄像头(前置和后置摄像头)。 打开一台相机时,它可以工作。 当我先关闭然后再打开时,它可以工作。 当我尝试打开第二个摄像头而第一个摄像头仍在显示图像时,它会出现以下异常。

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() ,否则它将保留 锁定并且对其他应用程序不可用。 您的应用程序一次应该只有一个相机对象处于活动状态 硬件摄像头。

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

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

【问题讨论】:

标签: android video camera


【解决方案1】:

This 问题基本上说它不能完成,但可能会有一些黑客攻击。 This 谷歌群组没有回复告诉我很可能不是。 Here 是另一个关于谷歌群组的无回应帖子。 Here 是另一篇讨论同时使用两个摄像头的帖子。

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

编辑 11/21/11:不幸的是,我发现了进一步的证据表明它无法完成,来自 Sprint/HTC here 的官方消息。我知道您使用的是 Sensation,这是 EVO 4g,但我确信它仍然适用。

【讨论】:

    【解决方案2】:

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

    $ adb shell getprop
    

    检查字段 [ro.board.platform],对于 Nexus 6,它返回

    [ro.board.platform]: [msm8084]
    

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

    谢谢,杰

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 这不是操作系统的限制; API 不禁止同时打开两个 Camera 实例。这是不允许我们保持两个摄像头打开的实现。不幸的是,即使某些设备功能齐全(例如三星 S4 和 S5 手机),它们也不会将此功能暴露给第三方。另一方面,基于 Snapdragon-801 的手机通常可以正常工作,请参阅更多 here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2017-09-14
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多