[devdiv精华转载] android开发 使用摄像头----调用摄像头的API

原帖地址:http://www.devdiv.com/forum.php?mod=viewthread&tid=56648&extra=page%3D2%26filter%3Ddigest%26digest%3D1%26digest%3D1

 

public class CamActivity extends Activity {
         private Preview mPreview;
            
            @Override
                protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                
                // Hide the window title.
                requestWindowFeature(Window.FEATURE_NO_TITLE);
            
                // Create our Preview view and set it as the content of our activity.
                mPreview = new Preview(this);
                setContentView(mPreview);
            }

        }

        // ----------------------------------------------------------------------

        class Preview extends SurfaceView implements SurfaceHolder.Callback {
            SurfaceHolder mHolder;
            Camera mCamera;
            
            Preview(Context context) {
                super(context);
                
                // Install a SurfaceHolder.Callback so we get notified when the
                // underlying surface is created and destroyed.
                mHolder = getHolder();
                mHolder.addCallback(this);
                mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            }

            public void surfaceCreated(SurfaceHolder holder) {
                // The Surface has been created, acquire the camera and tell it where
                // to draw.
                mCamera = Camera.open();
                try {
                   mCamera.setPreviewDisplay(holder);
                } catch (IOException exception) {
                    mCamera.release();
                    mCamera = null;
                    // TODO: add more exception handling logic here
                }
            }

            public void surfaceDestroyed(SurfaceHolder holder) {
                // Surface will be destroyed when we return, so stop the preview.
                // Because the CameraDevice object is not a shared resource, it's very
                // important to release it when the activity is paused.
                mCamera.stopPreview();
                mCamera.release();
                mCamera = null;
            }

            public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
                // Now that the size is known, set up the camera parameters and begin
                // the preview.
                Camera.Parameters parameters = mCamera.getParameters();
//                parameters.setPreviewSize(w, h);
                mCamera.setParameters(parameters);
                mCamera.startPreview();
            }

        }

posted on 2011-12-06 13:44  Evalon  阅读(226)  评论(0)    收藏  举报

导航