Android 同时访问前后摄像头

Android 同时访问前后摄像头,android,camera,Android,Camera,我试图实现的目标是:同时访问前后摄像头 我研究的内容:我知道android camera API不支持使用多个摄像头实例,你必须在使用另一个摄像头之前释放一个摄像头。我已经读过几十个关于这方面的问题,我知道在一些设备上这是可能的(比如三星S4,或者他们的其他新设备)。 我还发现,在某些设备上,可以通过Android KitKat访问这两个功能。 我还知道,在api>=21上,使用camera2 api,可以同时访问它们,因为这是线程安全的 到目前为止,我得到的是:一次访问一个摄像头以提供画中画的

我试图实现的目标是:同时访问前后摄像头

我研究的内容:我知道android camera API不支持使用多个摄像头实例,你必须在使用另一个摄像头之前释放一个摄像头。我已经读过几十个关于这方面的问题,我知道在一些设备上这是可能的(比如三星S4,或者他们的其他新设备)。 我还发现,在某些设备上,可以通过Android KitKat访问这两个功能。 我还知道,在api>=21上,使用camera2 api,可以同时访问它们,因为这是线程安全的

到目前为止,我得到的是:一次访问一个摄像头以提供画中画的实现

我知道不可能在每台设备上同时安装双摄像头,我只想找到一种方法使某些设备可以使用双摄像头

我如何测试设备是否能够访问这两个设备

我也找了一个图书馆,可以让我这样做,但我没有找到任何东西。有这样的图书馆吗

我希望尽可能多的设备可以使用此功能,对于其他设备,我将保留此功能的当前状态(一个接一个)

有谁能帮我,至少给我一些建议吗

谢谢
!

Android camera API通常允许同时使用多个摄像头,但实际上大多数设备没有足够的硬件资源来支持这一点——例如,两个摄像头通常只共享一个摄像头图像处理器

Android API中没有任何查询可以预先告诉您是否可以同时使用多个摄像头


唯一的办法是,当你已经打开了一个相机时,试着打开第二个相机。如果可以打开第二个摄像头,则可以执行画中画等操作。如果尝试打开第二个摄像头时出现异常,则该特定设备不支持同时打开两个摄像头。

由于硬件限制,您无法在所有安卓手机中同时访问这两个摄像头。最好的选择是一个接一个地使用两个摄像头。为此,您可以使用单个摄影机对象,并可以更改摄影机面以拍摄另一张照片

我已经在我的一个申请中这样做了。

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

我决定要提到的是,在某些情况下,仅使用Camera2 API打开两个摄像头还不足以了解支持

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


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

谢谢,我不知道这一点。我猜新的三星设备每台相机都有一个图像处理器。我将尝试这样实现它,并在多个设备上进行测试。三星S4、S5和S6支持双摄像头模式,但他们选择使用专有API实现;它甚至没有与三星相机SDK一起发布。LG Optimus G Pro也是如此。我相信可以对这个API进行反向工程,但还没有看到这种情况发生。可能没有足够的激励。在Pixel XL上试用最新的Android 7.1。尽管它的硬件有一个能够处理多个摄像头的图像处理器,但在尝试使用Camera2 API打开两个摄像头时,我仍然遇到了错误。不幸的是,如果这是开源的,那就太好了。我想改进它。你能和git共享代码吗?也许它对像我们这样的初学者会有帮助