2013-12-20 96 views
1

这是我的场景:当有人在锁定屏幕中输入不正确的密码时,我正试图从前置相机拍摄一张照片。基本上,我需要能够在没有预览的情况下从前置摄像头拍照。SurfaceTexture上的Android相机预览

经过大量的谷歌搜索之后,我发现要做到这一点的方法是opengl和SurfaceTexture。您将相机预览指引到SurfaceTexture,稍后以某种方式从此纹理中提取图片。我发现了这一点,从以下资源:

  1. https://stackoverflow.com/a/10776349/902572(建议1)
  2. http://www.freelancer.com/projects/Android-opengl/Android-OpenGL-App-Access-Raw.html,这是一样的(1)
  3. https://groups.google.com/forum/#!topic/android-developers/U5RXFGpAHPE(见罗曼对11年12月22日文章)

我明白要做什么,但我一直无法正确地把它们放到代码中,因为我是新手opengl。

回答

0

CameraToMpegTest示例具有您所需的大部分功能,尽管它远不止您的使用案例(它将一系列预览帧录制为视频)。

其余的你需要的是在ExtractMpegFramesTest。特别是,您想渲染到屏幕外pbuffer(而不是MediaCodec编码器输入表面),并且可以使用saveFrame()将pbuffer内容保存为PNG文件。

以上都写成小“无头”测试用例。您可以在Grafika的完整应用程序中看到类似的代码。