package com.ab.view.app; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; public class AbCameraView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder surfaceHolder; private Camera camera; public AbCameraView(Context context) { super(context); surfaceHolder = getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } @Override public void surfaceCreated(SurfaceHolder surfaceholder) { try { camera = Camera.open(); camera.setPreviewDisplay(surfaceholder); } catch (Exception e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { if(camera!=null){ camera.startPreview(); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { if(camera!=null){ camera.setPreviewCallback(null); camera.stopPreview(); camera.release(); camera = null; } } }