/**
* 打开相机
*
* @param holder
*/
private void openCamera(SurfaceHolder holder) {
// 打开相机
Log.e(TAG, "相机开始成功-------------");
mCamera = Camera.open(CAMERA_ID);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.e(TAG, "相机开始失败", e);
closeCamera();
return;
}
Camera.Parameters params = mCamera.getParameters();
/*
* 设置自动对焦
*/
List<String> supportedFocusModes = params.getSupportedFocusModes();
if (supportedFocusModes != null && supportedFocusModes.size() > 0) {
if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
} else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
} else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
}
// 获取支持的最大的 16:9 比例尺寸图片尺寸
Camera.Size maxSize = getMaxPictureSize(params, 1280);
// 设置预览尺寸为图像尺寸
params.setPreviewSize(maxSize.width, maxSize.height);
// 设置预览编码图像编码格式为 NV21
params.setPreviewFormat(ImageFormat.NV21);
mCamera.setParameters(params);
// // 获取相机应旋转角度
// int rotate = getRotateAngle();
// // 根据旋转角度调整view的宽高
// changeViewSize(rotate);
// mCamera.setDisplayOrientation(180);
mPreviewData = new byte[maxSize.width * maxSize.height * 3 / 2];
mCamera.addCallbackBuffer(mPreviewData);
// if (previewCallback != null) {
// // 设置预览回调
// mCamera.setPreviewCallback(previewCallback);
// }
// 开始相机预览
mCamera.startPreview();
}
安卓摄像头打开模糊问题
最新推荐文章于 2024-07-25 23:12:21 发布