Android Camera takePicture 正在使用 Previews 小缓冲区

Posted

技术标签:

【中文标题】Android Camera takePicture 正在使用 Previews 小缓冲区【英文标题】:Android Camera takePicture is using Previews small buffer 【发布时间】:2013-05-15 23:23:27 【问题描述】:

我正在使用 OPENCV 开发一个项目。我在 onCameraFrame 上有一些处理。当它显示预览时,用户可以拍照。但是在某些设备中,我在调用 takePicture(...) 方法后会出错。我该怎么办?

E/Camera-JNI(11783): Manually set buffer was too small! Expected 539380 bytes, but got 460800!

新症状:这个缓冲区的大小是我的帧大小,460800。我在 onCameraFrame 记录了帧大小。每帧的大小为 460800。据我了解,takePicture 尝试使用预览缓冲区。而且它们的尺寸不同。

【问题讨论】:

【参考方案1】:

我解决了这种问题。 在 android 2.2.1 上,您似乎必须在调用之前设置相机参数

camera.startPreview()

但在 Android 3.2.1 等更高版本的系统上,这不再是问题(但可能是特定于供应商的)。

【讨论】:

我已经设置了相机参数.. :(如果我将图片帧大小设置为一半,它可以工作。但我的方法不对。【参考方案2】:

我解决了我的问题。我将缓冲区大小设置为图片大小。但是预览开始荒谬的行为,例如在某些设备上拍照后无法继续预览,...因此,当我按下重拍或后退按钮时,我关闭并重新启动预览。

【讨论】:

以上是关于Android Camera takePicture 正在使用 Previews 小缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

Android Camera takePicture 正在使用 Previews 小缓冲区

android中用Camera来调用摄像头,只能用takePicture来拍照吗?

camera.takePicture() 使我的应用程序崩溃

Android:java.lang.RuntimeException:takePicture失败

Camera1 源码解析系列—— Camera1 takePicture() 流程解析

Camera1 源码解析系列—— Camera1 takePicture() 流程解析