Android SurfaceView预览模糊
我有一个简短的问题。我正在使用Android的SurfaceView拍照并保存它。然而,预览尺寸和图片质量本身都很糟糕;如中所示,它非常模糊。图像质量根本没有清晰度 这里是我初始化surfaceView的地方:Android SurfaceView预览模糊,android,android-camera,surfaceview,Android,Android Camera,Surfaceview,我有一个简短的问题。我正在使用Android的SurfaceView拍照并保存它。然而,预览尺寸和图片质量本身都很糟糕;如中所示,它非常模糊。图像质量根本没有清晰度 这里是我初始化surfaceView的地方: camera.setDisplayOrientation(90); Parameters parameters = camera.getParameters(); pa
camera.setDisplayOrientation(90);
Parameters parameters = camera.getParameters();
parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
parameters.setExposureCompensation(0);
parameters.setPictureFormat(ImageFormat.JPEG);
parameters.setJpegQuality(100);
Camera.Size picSize = getOptimalPreviewSize(parameters.getSupportedPreviewSizes(),
getResources().getDisplayMetrics().widthPixels,
getResources().getDisplayMetrics().heightPixels);
parameters.setPictureSize(picSize.width, picSize.height);
parameters.setPreviewSize(picSize.width, picSize.height);
camera.setParameters(parameters);
camera.setPreviewDisplay(holder);
camera.startPreview();
getOptimalPreviewSize()返回参数中可用的最佳大小。GetSupportedPreviewSize()。它返回的大小是1280x720,这是我的手机支持的最佳大小。然而,surfaceView仍然非常模糊。我做的有什么明显的错误吗,或者有没有办法优化surfaceView?谢谢 有两个原因使图像和预览看起来模糊 1) 您设置图片大小和预览大小的方式是错误的。您必须查询支持的尺寸,并决定哪种尺寸最适合您,然后从您的列表中设置尺寸。不能给arbit值。检查此示例应用程序以了解实施详细信息- 2) 你必须把你的相机置于自动foucs模式,这样它就会自动对焦。(更好的方法是使用适当的ui实现触摸对焦)。一旦你的相机启动,只需设置以下参数
private void setCamFocusMode(){
if(null == mCamera) {
return;
}
/* Set Auto focus */
Parameters parameters = mCamera.getParameters();
List<String> focusModes = parameters.getSupportedFocusModes();
if (focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
} else if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
}
mCamera.setParameters(parameters);
}
private void setCamFocusMode(){
if(null==mCamera){
返回;
}
/*设置自动对焦*/
Parameters=mCamera.getParameters();
List focusModes=parameters.getSupportedFocusModes();
if(focusModes.contains(Camera.Parameters.FOCUS\u MODE\u CONTINUOUS\u PICTURE)){
parameters.setFocusMode(相机.参数.聚焦模式\u连续图像);
}else if(focusModes.contains(Camera.Parameters.FOCUS\u MODE\u AUTO)){
parameters.setFocusMode(相机.参数.聚焦模式自动);
}
mCamera.setParameters(参数);
}
确保您的舱单中有适当的权限
希望这有帮助
问候,,
Shrish这帮了大忙。谢谢。嘿,我正在用Surface view播放视频。你能告诉我我是否可以模糊整个表面视图(或者你可以说视频)。如果有其他方法可以做到同样的,请告诉我。