大佬教程收集整理的这篇文章主要介绍了使用Android camera2进行全屏预览,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法找到一种方法来全屏显示相机.在代码示例中,他们使用比率优化来适应所有屏幕,但它只占屏幕高度的3/4左右.
这是我的AutoFitTextureView代码:
public class AutoFitTextureView extends TextureView { privatE int mRatioWidth = 0; privatE int mRatioHeight = 0; public AutoFitTextureView(Context context) { this(context,null); } public AutoFitTextureView(Context context,AttributeSet attrs) { this(context,attrs,0); } public AutoFitTextureView(Context context,AttributeSet attrs,int defStylE) { super(context,defStylE); } /** * Sets the aspect ratio for this view. The size of the view will be measured based on the ratio * calculated from the parameters. Note that the actual sizes of parameters don't matter,that * is,calling setAspectRatio(2,3) and setAspectRatio(4,6) make the same result. * * @param width Relative horizontal size * @param height Relative vertical size */ public void setAspectRatio(int width,int height) { if (width < 0 || height < 0) { throw new IllegalArgumentexception("Size cAnnot be negative."); } mRatioWidth = width; mRatioHeight = height; requestLayout(); } @Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpeC) { super.onMeasure(widthMeasureSpec,heightMeasureSpec); int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); if (0 == mRatioWidth || 0 == mRatioHeight) { setMeasuredDimension(width,height); } else { if (width < height * mRatioWidth / mRatioHeight) { setMeasuredDimension(width,width * mRatioHeight / mRatioWidth); } else { setMeasuredDimension(height * mRatioWidth / mRatioHeight,height); } } }
}
非常感谢您的帮助.
private static Size chooseVideoSize(Size[] choices) { for (Size size : choices) { // Note that it will pick only HD video size,you should create more robust solution depending on screen size and available video sizes if (1920 == size.getWidth() && 1080 == size.getHeight()) { return size; } } Log.e(tag,"Couldn't find any suitable video size"); return choices[choices.length - 1]; }
然后我更正了this method以根据视频大小纵横比选择预览尺寸,结果如下.
private static Size chooSEOptimalSize(Size[] choices,int width,int height,Size aspectRatio) { // Collect the supported resolutions that are at least as big as the preview Surface List<Size> bigEnough = new ArrayList<Size>(); int w = aspectRatio.getWidth(); int h = aspectRatio.getHeight(); double ratio = (doublE) h / w; for (Size option : choices) { double optionRatio = (doublE) option.getHeight() / option.getWidth(); if (ratio == optionRatio) { bigEnough.add(option); } } // Pick the smallest of those,assuming we found any if (bigEnough.size() > 0) { return Collections.min(bigEnough,new CompareSizesByArea()); } else { Log.e(tag,"Couldn't find any suitable preview size"); return choices[1]; } }
我希望它会对你有所帮助!
以上是大佬教程为你收集整理的使用Android camera2进行全屏预览全部内容,希望文章能够帮你解决使用Android camera2进行全屏预览所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。