android - 用于相机预览的隐形 SurfaceView

标签 android camera surfaceview preview

我只需要获取相机预览数据,而不是可见预览。 由于我在服务中执行所有这些操作,因此我必须创建一个虚拟 SurfaceView,它运行良好。

我使用了这个答案中的代码: https://stackoverflow.com/a/10268650/1395697

但是,对于 TYPE_SYSTEM_OVERLAY 它不起作用。它是不可见的,但没有收到预览数据(在 onPreviewFrame() 中)。当我将此参数更改为 0 时,我得到了预览数据,但是 SurfaceView 是可见的。

你知道其他方法吗?

我现在所做的只是制作一个宽度和高度为 1 的可见 SurfaceView,然后我创建一个具有特定颜色的 ImageView 叠加层,这样您就不会查看 SurfaceView 的颜色变化。但这一点都不整洁,我真的很想做得更好。

最佳答案

我也使用了相同的 stackOverflow 答案,得到了同样的问题。所以:

我已经添加了这段代码

this.setZOrderOnTop(true);
SurfaceHolder h = this.getHolder();
h.setFormat(PixelFormat.TRANSPARENT);

到我的 surfaceChanged 方法,而不是 Activity (或我的情况下的服务),并使其透明,但日志提示废弃的帧:(

关于android - 用于相机预览的隐形 SurfaceView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959767/

相关文章:

Android:如何将 <string> 元素注入(inject)到 XML 中的另一个 <string> 元素中?

快速核心数据: save images from camera

Android - 使用 SurfaceView 和 Camera2 API 处理屏幕方向

Android OpenGL 扩展 GLSurfaceView 空指针异常

java - 如何获取我在 Android 中的 MotionEvent.ACTION_MOVE 事件上移动了多少像素

android - Android 应用程序中何时有多个 "activities"的示例

java - 我如何在 Android Studio 中为注册表单设置 onClick 验证

java - 菜单 Intent 上的相机预览卡住

c++ - 使用 opencv mog 检测器和 c++ 从实时摄像机馈送中进行背景减法

android - 将 MySurfaceView 与 main.xml (android) 一起使用