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