StreamConfigurationMap map = characteristics.get(Cameracharacteristics.SCALER_STREAM_CONfigURATION_MAP); mPrevIEwSize = map.getoutputSizes(SurfaceTexture.class)[0];
这似乎是设备支持的最大预览尺寸.我不确定这个尺寸是否适用于所有设备并且适合其设备的纵横比而不会被拉伸.有人知道吗?
解决方法 如果您的相机分辨率,纹理视图和设备的显示尺寸不同,则必须调整尺寸.为此,您必须将TextureVIEw放在FrameLayout中.以下代码适用于具有各种显示分辨率的所有设备.如果要全屏预览,请选择显示尺寸.获取int DSI_height,int DSI_wIDth全局变量.
displayMetrics displayMetrics = new displayMetrics(); getwindowManager().getDefaultdisplay().getMetrics(displayMetrics); DSI_height = displayMetrics.heightPixels; DSI_wIDth = displayMetrics.wIDthPixels;
从Camera2 API中选择所需的分辨率并指定大小imageDimension,全局获取私有大小imageDimension并使用
setAspectRatioTextureVIEw(imageDimension.getHeight(),imageDimension.getWIDth());
并使用以下逻辑
private voID setAspectRatioTextureVIEw(int ResolutionWIDth,int ResolutionHeight ) { if(ResolutionWIDth > ResolutionHeight){ int newWIDth = DSI_wIDth; int newHeight = ((DSI_wIDth * ResolutionWIDth)/ResolutionHeight); updateTextureVIEwSize(newWIDth,newHeight); }else { int newWIDth = DSI_wIDth; int newHeight = ((DSI_wIDth * ResolutionHeight)/ResolutionWIDth); updateTextureVIEwSize(newWIDth,newHeight); } } private voID updateTextureVIEwSize(int vIEwWIDth,int vIEwHeight) { Log.d(TAG,"TextureVIEw WIDth : " + vIEwWIDth + " TextureVIEw Height : " + vIEwHeight); textureVIEw.setLayoutParams(new FrameLayout.LayoutParams(vIEwWIDth,vIEwHeight)); }总结
以上是内存溢出为你收集整理的Android Camera 2预览尺寸和设备纵横比全部内容,希望文章能够帮你解决Android Camera 2预览尺寸和设备纵横比所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)