import android.hardware.Camera; //导入方法依赖的package包/类
/**
* 在摄像头启动前设置参数
*
* @param camera
* @param width
* @param height
*/
private void setCameraParams(Camera camera, int width, int height) {
// 获取摄像头支持的pictureSize列表
Camera.Parameters parameters = camera.getParameters();
List pictureSizeList = parameters.getSupportedPictureSizes();
// 从列表中选择合适的分辨率
Point pictureSize = FaceUtil.findBestResolution(pictureSizeList, new Point(width, height), true, 0.15f);
// 根据选出的PictureSize重新设置SurfaceView大小
parameters.setPictureSize(pictureSize.x, pictureSize.y);
// 获取摄像头支持的PreviewSize列表
List previewSizeList = parameters.getSupportedPreviewSizes();
Point preSize = FaceUtil.findBestResolution(previewSizeList, new Point(width, height), false, 0.15f);
parameters.setPreviewSize(preSize.x, preSize.y);
float w = preSize.x;
float h = preSize.y;
float scale = 1.0f;
int tempW = (int) (height * (h / w));
int tempH = (int) (width * (w / h));
if (tempW >= width) {
setLayoutParams(new FrameLayout.LayoutParams(tempW, height));
scale = tempW / h;
} else if (tempH >= height) {
setLayoutParams(new FrameLayout.LayoutParams(width, tempH));
scale = tempH / w;
} else {
setLayoutParams(new FrameLayout.LayoutParams(width, height));
}
if (mFaceDetector != null) {
mFaceDetector.setZoomRatio(5f * scale);
mFaceDetector.setPreviewWidth((int) w);
mFaceDetector.setPreviewHeight((int) h);
}
parameters.setJpegQuality(100);
if (parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
// 连续对焦
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
camera.cancelAutoFocus();
setCameraDisplayOrientation();
camera.setParameters(parameters);
}