尝试在 4.0 硬件手机上启动 android 相机示例应用程序并仅显示一些帧

Posted

技术标签:

【中文标题】尝试在 4.0 硬件手机上启动 android 相机示例应用程序并仅显示一些帧【英文标题】:Trying to launch android camera sample app on 4.0 hardware phone and show only some frames 【发布时间】:2016-01-26 15:24:39 【问题描述】:

我正在尝试在 android 上使用相机制作应用程序。

我尝试了谷歌给出的例子,但它说我的手机上有旧的 sdk。

Google 示例使用 camera2。

如何让我的android 4.0手机启动它?


另外,在我的自定义相机应用程序中,我需要从 cam 预览中获取图像,如果符合我的标准,然后将它们显示在屏幕上 - 不要在屏幕上显示每个预览图像,这可能吗?

【问题讨论】:

android.hardware.camera2 包已添加到 API 级别 21(Android 'Lollilop' 5.0)。由于它在旧版本的 Android 中不存在,因此您只是无法在您的 Android 4.0(API 级别 14)设备上使用它。对于任何建议,了解您在谈论什么样的标准会有所帮助? IE。人脸识别,标记识别,完全不同的东西?根据您的回答,可能还有其他 API 和/或库值得研究。 【参考方案1】:

你实际上问了两个不相关的问题。第一个问题以评论的名义从MH得到了完整的答案。

第二个答案是:您无法控制相机预览显示的帧(无论是相机SurfaceView,还是TextureView,还是SurfaceTexture)。您可以隐藏1所有个预览帧(例如,只需将相机预览与另一个非透明视图叠加),但仍会在onPreviewFrame() 回调。您可以在回调2 中执行任何处理,并以您喜欢的方式(使用 Canvas、或 OpenGL,或其他)。


脚注:

1 有很多尝试在不显示预览的情况下运行 Android 相机。每种此类方法都有其局限性,并且不能在所有设备上完美运行。

请注意,如果您选择 SurfaceTexture + OpenGL 方法,则相对容易可靠地隐藏原始预览流程,并且仅显示符合您的条件的帧。

2 在 OpenGL 中进行图像处理并非不可能,例如请参阅replacing glReadPixels with EGL_KHR_image_base for faster pixel copy,但这涉及到先进的设备相关技术。

【讨论】:

以上是关于尝试在 4.0 硬件手机上启动 android 相机示例应用程序并仅显示一些帧的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上基于软件的 Android 配件

Android 手机裸眼 3D 技术原理和编程实现

在 Android 4.0+ 上检测屏幕截图尝试

Android 4.0 ,如何截屏,当竖屏时。

无法识别启动活动:升级到 Android Studio 4.0 后未找到默认活动

Android低功耗蓝牙(蓝牙4.0)——BLE开发(上)