资源描述
对于一些,像HTC,当自界说Camera时,挪用Camera.Parameters的
parameters.setPreviewSize(width,height)办法时,假如width跟height为奇数状况下,那么会出
现黑屏景象,处理办法可参考
SDK供给的ApiDemos中对于Camera的例子:
List<Size>sizes=parameters.getSupportedPreviewSizes();
SizeoptimalSize=getOptimalPreviewSize(sizes,w,h);
parameters.setPreviewSize(optimalSize.width,optimalSize.height);
同时,在HTC中,设置parameters.setPictureSize(width,height)
属性,
也会招致黑屏,而在三星上那么不咨询题。另有假如设置
setPreviewSize属
性的宽高过错的话,拍出的照片也会存在掉真等Bug,因此碰到适配咨询题时,最
好的办法确实是不设置PreviewSize跟PictureSize属性。
getOptimalPreviewSize办法
privateSizegetOptimalPreviewSize(List<Size>sizes,intw,inth){
finaldoubleASPECT_TOLERANCE=0.05;
doubletargetRatio=(double)w/h;
if(sizes==null)
returnnull;
SizeoptimalSize=null;
doubleminDiff=Double.MAX_VALUE;
inttargetHeight=h;
//Trytofindansizematchaspectratioandsize
for(Sizesize:sizes){
doubleratio=(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);
}
}
//Cannotfindtheonematchtheaspectratio,ignoretherequirement
if(optimalSize==null){
minDiff=Double.MAX_VALUE;
for(Sizesize:sizes){
if(Math.abs(size.height-targetHeight)<minDiff){
optimalSize=size;
minDiff=Math.abs(size.height-targetHeight);
}
}
}
returnoptimalSize;
}
展开阅读全文