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