1.相机照片的尺寸只有几种固定的,2592×1936,2048×1536,1600×1200,1024×768,320×240等,这些尺寸还要物理设备支持才有。设置照片的尺寸(当然要设备支持),在给相机的参数设置中去设定。
2.自定义相机时照片预览拉伸。因为照片的尺寸跟自定义的SurfaceView比例不同的原因。先设置照片的尺寸,再根据照片的尺寸去设置预览的尺寸。
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Parameters parameters = camera.getParameters();// 获得相机参数
parameters.setPictureSize(1024, 768);
Size size = parameters.getPictureSize();
double w = size.width;
double h = size.height;
if (width > height) {
this.setLayoutParams(new LinearLayout.LayoutParams(
(int) (height * (w / h)), height));
} else {
this.setLayoutParams(new LinearLayout.LayoutParams(width,
(int) (width * (h / w))));
}
parameters.setPreviewSize(width, height); // 设置预览图像大小
parameters.setPictureFormat(PixelFormat.JPEG); // 设置照片格式
camera.setParameters(parameters);// 设置相机参数
camera.startPreview();
}
遇到setParameters failed 错误,是因为自定义SurfaceView控件的宽和高设置成了固定的大小,设置成wrap_content才行
<com.saya.CameraView android:id="@+id/cameraView" android:layout_width="wrap_content" android:layout_height="wrap_content" > </com.saya.CameraView>
传送门:http://www.devdiv.com/android_camera_-blog-67600-6759.html