2013-12-20 130 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的完整應用程序中看到類似的代碼。