根据 Java SDK 端的 android 相机文档,必须为相机预览帧提供一个(可见且活动的)要绘制的表面,以便访问帧数据。我已经链接了我在这里遇到的一些事情(我是新来的,所以最多只能有 2 个超链接),但是在结束在 SO 上发布我自己的问题之前,我查阅了大量关于各种事情的文档。
我的问题:
a)我明确不想将相机预览绘制到屏幕上,如果可能的话,我只想直接从相机缓冲区中获取字节数据(我可以从这里获得)。
b) 是的,我看到了这个: 从没有预览的相机拍照。
然而,这要求使用这个库的应用程序必须将这个(看似)任意视图插入到它们的应用程序布局中,它必须始终可见(它们不能切换布局、更改父容器的可见性或使用子活动)应用程序生命周期。
事实上,我的需求与这张海报的类似,除了我想要相机预览数据的连续实时流,而不是保存到磁盘上的图像的捕获。因此PictureCallback
与myCamera.takePicture
呼叫一起为他工作。出于显而易见的原因,将连续捕获写入磁盘不是我的解决方案,因此在我的情况下不起作用。myCamera.takePicture
也比获取预览帧慢得多。
c) 我已经开始涉足 NDK,并且对它有很好的感觉。但是,据此通过本机访问相机数据是不支持或不推荐的,即使这样,设备兼容性也是一个巨大的麻烦。
如果这已经过时,并且有可靠的 NDK 路线从 android 设备获取相机数据,我找不到它们,所以如果你能指出它们,那就太好了。
d) 我想让这个库可以从 Unity 之类的工具中访问(以统一插件的形式),我希望能够将它编译成 JAR(或者 .so 对于本机)并期望它能够工作以这种方式导入库的 android 应用程序,这样他们就可以使用相机,而无需应用程序开发人员提供特定的 UI/布局配置。
语境:
我希望能够创建一个用于 android 应用程序的视觉处理库,并且不想限制使用该库的应用程序必须使用特定的应用程序布局并将特定视图绘制到屏幕上才能使用视觉处理结果——举一个非常简单的例子,如果一个应用程序想要使用我的库来获取相机看到的平均颜色,并且想要在屏幕上为图像着色该颜色。
无论我对我的任何观点提出什么建议,都会非常有帮助。非常感谢您的时间!