大佬教程收集整理的这篇文章主要介绍了Android相机 – 录制视频时预览放大,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@Override public void surfaceChanged(SurfaceHolder holder,int format,int width,int height) { Camera.Parameters myParameters = mCamera.getParameters(); List<Camera.Size> sizes = myParameters.getSupportedPreviewSizes(); Camera.Size myBestSize = getBestPreviewSize(sizes,width,height); if (myBestSize != null) { myParameters.setPreviewSize(myBestSize.width,myBestSize.height); myParameters.setVideoStabilization(false); mCamera.setParameters(myParameters); mCamera.startPreview(); mCamera.unlock(); } } private Camera.Size getBestPreviewSize(List<Camera.Size> sizes,int height) { final double ASPECT_TOLERANCE = 0.05; double targetRatio = (doublE) width / height; if (sizes == null) return null; Camera.Size optimalSize = null; double minDiff = Double.max_value; int targetHeight = height; // Find size for (Camera.Size size : sizes) { double ratio = (doublE) size.width / size.height; if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) conTinue; if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } if (optimalSize == null) { minDiff = Double.max_value; for (Camera.Size size : sizes) { if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } return optimalSize; }
但录制视频时,预览仍会放大.我尝试手动将预览大小设置为1280×720,但是它在我测试的所有设备上都不起作用,有些显示黑色的SurfaceView.
录制视频时有什么办法阻止预览放大吗? StackOverflow中的这些解决方案都不会似乎有效.
编辑:我尝试使用自己的onMesaure方法创建了一个自定义的SurfaceView,但是当我启动MediaRecorder时,我收到一个-19错误. (不顾赏金中的-16)
>实现mCamera.setZoomchangelistener,例如:
@H_119_2@mCamera.setZoomchangelistener(new Camera.onZoomchangelistener() { @Override public void onZoomChange(int i,Boolean b,Camera camera) { Log.e("StackOverflow","Zoom just changed !"); // Inspect things from here } });>禁用平滑缩放:
@H_119_2@mCamera.stopSmoothZoom(); // My device doesn't support it,but maybe your device does>检查所有的相机Camera.Parameters:
Log.e("StackOverflow","All Camera parameters :"); for(String s : mCamera.getParameters().flatten().split(";")) Log.e("StackOverflow",s + "\n");
>然后切换可以缩放相关的任何东西,例如:
Camera.Parameters parameters = mCamera.getParameters(); parameters.setZoom(100); // My device support some values in the range 100 | 400 parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY); parameters.setVideoStabilization(false); // Don't forget to add the new parameters to the camera : mCamera.setParameters(parameters);
问候
以上是大佬教程为你收集整理的Android相机 – 录制视频时预览放大全部内容,希望文章能够帮你解决Android相机 – 录制视频时预览放大所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。