使用没有表面视图的Android相机

我正在开发Android,我想用相机(处理像素的值)做一些事情,但只是在后台,是否有可能做到没有表面视图? 只需使用缓冲区来读取像素的值并进行处理。 感谢每一个人都可以帮助我

Solutions Collecting From Web of "使用没有表面视图的Android相机"

我一直在寻找这个答案。 我在那里find了,为了方便,在这里复制。

http://handycodeworks.com/?p=19

基本上,我们只需创build一个虚拟的SurfaceView(即使在Service中也可以),并将其用于Camerafunction。

SurfaceView view = new SurfaceView(this); c.setPreviewDisplay(view.getHolder()); c.startPreview(); c.takePicture(shutterCallback, rawPictureCallback, jpegPictureCallback); 

在API-Level 11中添加了SurfaceTexture 。 有了它,SurfaceView就不再需要了。 我用我的三星Galaxy S3 Neotesting了下面的代码。

 mCamera = Camera.open(); try { mCamera.setPreviewTexture(new SurfaceTexture(10)); } catch (IOException e1) { Log.e(Version.APP_ID, e1.getMessage()); } Parameters params = mCamera.getParameters(); params.setPreviewSize(640, 480); params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); params.setPictureFormat(ImageFormat.JPEG); mCamera.setParameters(params); mCamera.startPreview(); mCamera.takePicture(null, null, null, new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { Log.i(Version.APP_ID, "picture-taken"); } });