同时访问后置和前置摄像头

时间:2015-05-21 14:43:42

标签: android camera

我想要实现的目标:同时访问前置和后置摄像头。

我研究过的内容:我知道Android相机API不支持使用相机的多个实例,并且在使用另一个相机之前必须先释放相机。我已经阅读了几十个有关此问题的问题,我知道在某些设备上它是可能的(如三星S4或其他新设备)。 我还发现在某些设备上可以在Android KitKat中访问它们。 我也知道在api> = 21时,使用camera2 API,可以同时访问它们,因为它是线程安全的。

到目前为止我所做的是:实现一次访问摄像机以提供画中画。

我知道不可能在每台设备上实现双同时摄像头,我只是想让一些设备可以使用它。

如何测试设备是否能够访问它们?

我还搜索了一个可以允许我这样的图书馆,但我没有找到任何东西。有没有这样的图书馆?

我想为尽可能多的设备提供此功能,而对于其他设备,我将保留该功能的当前状态(逐个)。

任何人都可以帮助我,至少有一些建议吗?

由于 !

4 个答案:

答案 0 :(得分:10)

Android相机API通常允许同时使用多个相机,但大多数设备没有足够的硬件资源来支持实际操作 - 例如,通常只有一个相机图像处理器共享两个相机。

如果您可以同时使用多台摄像机,那么Android API中包含的任何查询都不会提前告诉您。

唯一可以告诉您的方法是在打开第二台相机时尝试打开第二台相机。如果您可以打开第二台摄像机,那么您可以进行画中画等。如果您尝试打开第二台摄像机时遇到异常,那么该特定设备不支持打开两台摄像机。

答案 1 :(得分:1)

可以使用Android Camera2 API,但如上所述,大多数设备都没有硬件支持。如果您使用的是Nexus 5X,Nexus 6或Nexus 6P,则可以使用此BothCameras app进行测试。我使用硬件h264编码器实现了blitting以允许视频录制(除静态图片外)。

答案 2 :(得分:-1)

由于硬件限制,您无法访问所有Android手机中的两个摄像头。最好的替代方案是逐个使用相机。为此,您可以使用单个相机对象,并可以更改相机面以拍摄另一张照片。

我在我的一个申请中这样做了。 https://play.google.com/store/apps/details?id=com.ushaapps.bothie

答案 3 :(得分:-1)

我决定提一下,在某些情况下,仅使用 Camera2 API 打开两个摄像头并不足以了解支持。

有些设备在打开时不会抛出错误。第二个摄像头正确打开,但第一个将调用 onCaptureFailed 回调。

因此,最准确的方法是启动两个摄像头并等待每个摄像头的帧,然后检查是否存在捕获失败错误。