XML声明的SurfaceView,从中获得一个SurfaceHolder,设置该Surface是一个“推送”类型Surface,意味着Surface本身外部维持绘图缓存区。该缓冲区由Camera类管理。“推送”类型是Camera预览所需的Surface。
SurfaceView cameraView=(CameraView)this.findViewById(R.id.CameraView);
SurfaceHolder surfaceHolder=cameraView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
活动实现SurfaceHolder.Callback,得在创建、修改及销毁该Surface时活动获得通知。实现回调
surfaceChanged(SurfaceHolder holder,int format,int w,int h),surfaceCreated(SurfaceHolder holder){} surfaceDestroyed(SurfaceHolder holder){}
告诉SurfaceHolder.addCallback(this);
try{
camera.setPreviewDisplay(holder);
}
catch(IOEXCEption exception){
camera.release();}
最后,启动摄像头预览。
camera.startPreview();
相应的,在surfaceDestroyed也需要该Camera对象stopPreview,确保释放的资源被清理。
surfaceDestroyed(SurfaceHolder holder)
camera.stopPreview();
camera.release();
1.设置Camera对象的参数
Camera.Parameters parameters=camera.getParameters();
parameters.set("some parameter","some value");
parameters.set("some parameter",some_int);
camera.setParameters(parameters);