在用SurfaceView 和Camera做摄像头程序时,常常会遇到一些问题简单描述下:
1、预览取景反转
这种情况,在低版本sdk中,必须设置为横屏模式[android:screenOrientation="landscape"]
2、预览图像被拉伸变形
由于预览大小跟SurfaceView大小不一致引起,常常需要根据surfaceChanged事件的参数width和height,获取系统支持的所有预览尺寸[getSupportedPictureSizes],然后再取一个比较接近的尺寸进行设置[setPreviewSize]
3、预览速率
需要先根据[GetSupportedPreviewFrameRates]获取系统支持的,然后,选择一个最低的进行设置[setPreviewFrameRate]即可
4、保存图片反转
在拍照[takePicture]之前,先对rotation进行偏转设置[rotation]
5、设置为横屏模式之后,UI界面伪横竖屏
添加个OrientationEventListener根据获取不同方向,调整UI布局,对于一些比较特殊,不变调整的控件,可以采用播放动画的方式来实现。