首先要自定义SurfaceView实时显示摄像头捕获的画面
SurfaceView非常强大,有双缓存机制,可以在子线程更新ui,在游戏开发中最常用,下面是自定义SurfaceView
仿照别人的博客写的地址忘记了
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private static final String TAG = "MySurfaceView";
public Camera mCamera;
private final SurfaceHolder mHolder;
public MySurfaceView(Context context, Camera camera) {
super(context);
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(this);
// 设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到界面 在Android3.0之后弃用
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
/**
* 在SurviceView创建的时候调用
*
* @param holder
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
/**
* 在SurviceView大小改变是调用
*
* @param holder
* @param format