前记:今天突然发现我刚打开的项目代码在eclipse中打了好几个警告,Camera is deprecated, Camera.Parameters is deprecated……等已经废弃的警告。一看官方文档原来Google本次Android版本更新对Camera这块新出了替代类Android.hardware.camera2。
这个类把Camera设备封装成多级(包含多个处理阶段)的线性管道,这个管道用来处理输入请求中捕获的每个帧。通过camera2向系统请求拍照时,会返回一个带有一套图像缓冲的输出数据包。如果多个请求的会按顺序处理,多次重复请求只发一次。
使用新API:
1.获取CameraManager实例就可以遍历,查询和打开一个Camera对象。
2.通过cameraManager对象调研getCameraCharacteristics(String)来获得CameraCharacteristics对象,该对象包含设备的设置信息和输出参数。
3.通过CameraCaptureSession对象为每个预览对象进行预设置,如大小和format(这些格式必须是设备支持的),可以调用camera.createCaptureSession(List, CameraCaptureSession.StateCallback, Handler)就可获得此对象。
4.创建SurfaceView orTextureView (via its SurfaceTexture). 渲染图像。系统底层或调用RenderScript或OpenGles,甚至native本地方法来实例传给view的数据。
5.构造一个CaptureRequest对象,来描述每次捕获图片的具体设置。
6.最终调用capture()方法完成图像的捕获。
注意事项:
如果用cameraManager对象打开或获取camera对象失败将,再或者试图连接到一个已经打开的设备抛出异常,记得用CameraAccessException捕获并处理异常。