Android自定义相机开发
入门第一个接手的项目,如今重新拾起来整理一下。
1.添加相关权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
2.拍照原理
(1)拍照流程
- 检测camera的存在并访问camera
通过open(int)方法获取camera的实例,int为camera的id
使用getParameters()获取相机当前的设置,包括预览尺寸,拍照尺寸等等参数
如果修改了相关设置,调用setParameters(Camera.Parameters)将更改的信息重新生效 - 继承SurfaceView并添加SurfaceHolder接口以显示预览画面
有需要的话使用setDisplayOrientation(int)来改变预览画面的方向
使用setPreviewDisplay(SurfaceHolder)传递一个完整初始化的SurfaceHolder,没有surface,就没法启动预览画面 - 为预览画面添加你需要的布局和控件
在拍照之前先调用startPreview()来更新预览画面 - 增加对拍照事件的监听
调用takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback, Camera.PictureCallback)进行拍照,在回调函数中获得照片对象并做处理 - 使用拍照功能并保存照片
预览画面会在拍照后关闭,如果还需要拍照,记得先startPreview()
用stopPreview()来关闭预览画面 - 最后要释放camera
camera使用之后一定要调用release()释放掉