2 实现自己的拍照Activity(1) 本节的例子代码所在的工程目录是srcch14ch14_camera 拍照的核心类是android
hardware
Camera,通过Camera 类的静态方法open 可以获得Camera 对象,并通过 Camera 类的startPreview 方法开始拍照,最后通过Camera类的takePicture 方法结束拍照,并在相应的事件中处理照片数据
上述的过程只是拍照过程的简化
在拍照之前,还需要做如下的准备工作
指定用于显示拍照过程影像的容器,通常是SurfaceHolder 对象
由于影像需要在SurfaceView 对象中显示,因此可以使用 SurfaceView 类的getHolder 方法获得SurfaceHolder 对象
在拍照过程中涉及到一些状态的变化
这些状态包括开始拍照(对应surfaceCreated 事件方法);拍照状态变化(例如图像格式或方向,对应 surfaceChanged 事件方法);结束拍照(对应surfaceDestroyed 事件方法)
这 3 个事件方法都是在 SurfaceHolder
Callback 接口中定义的,因此,需要使用 SurfaceHolder 接口的addCallback 方法指定 SurfaceHolder
Callback 对象,以便捕捉这 3 个事件
拍完照后需要处理照片数据
处理这些数据的工作需要在PictureCallback 接口的onPictureTaken 方法中完成
当调用 Camera 类的takePicture 方法后,onPictureTaken 事件方法被调用
如果需要自动对焦,需要调用 Camera 类的autoFocus 方法
该方法需要一个AutoFocusCallback 类型的参数值
AutoFocusCallb