我正在尝试使用onPreviewFrame()回调显示已过滤的相机预览.
问题是当我删除这一行:mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
为了隐藏预览,应用程序崩溃了.日志显示:08-19 15:57:51.042:ERROR/CameraService(59):registerBuffers失败,状态为-38
这是什么意思?这记录在哪里?
我正在使用SDK APIDemos中的CameraPreview:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
小智 9
SURFACE_TYPE_PUSH_BUFFERS为SurfaceView生成多个缓冲区.组件锁定(填充数据)并在OS代码深处推送(显示数据)这些缓冲区.特别是OpenMax(相机硬件设备接口)使用"图形缓冲区"="推送缓冲区"来填充数据和显示数据.具体而言,相机硬件可以直接填充推送缓冲区,而图形硬件可以直接显示推送缓冲区(它们共享这些缓冲区).结论:操作系统强制您使用推送缓冲区创建SurfaceView.然后它可以使用相机设备的缓冲区.
在Google的"相机指南"中,您可以找到对此的简要提及.根据该指南SURFACE_TYPE_PUSH_BUFFERS,3.0之前的设备所需的弃用设置.
查看构造函数底部的"创建预览类"部分中的代码示例,它说:
// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Run Code Online (Sandbox Code Playgroud)
如果您还没有这样做,请仔细阅读相机指南,这是一个好主意,它包含一些重要的内容,这些内容不在Camera类的API文档中.
这是什么意思?
这意味着你没有正确配置SurfaceView通过SurfaceHolder.
这记录在哪里?
这是什么"?下面是文档SurfaceView,SurfaceHolder,SURFACE_TYPE_PUSH_BUFFERS,和Camera.
如果你真正的问题是"它Camera需要记录在哪里SURFACE_TYPE_PUSH_BUFFERS",我怀疑这是没有证件的.您可以SURFACE_TYPE_PUSH_BUFFERS用于相机预览和视频播放,也可能用于其他情况.
| 归档时间: |
|
| 查看次数: |
19750 次 |
| 最近记录: |