解决Camera.parameter.setPreviewSize/Camera.parameter.setPictureSize适应不同手机问题

来源:互联网 发布:宿舍网络搭建 编辑:程序博客网 时间:2024/06/08 03:38
解决类:(当然这个也是套用大师的!)
import java.util.Collections;import java.util.Comparator;import java.util.List;import android.hardware.Camera;import android.hardware.Camera.Size;public class MyCamPara {private final CameraSizeComparator sizeComparator = new CameraSizeComparator();private static MyCamPara myCamPara = null;private MyCamPara(){}public static MyCamPara getInstance(){if(myCamPara == null){myCamPara = new MyCamPara();return myCamPara;}else{return myCamPara;}}public  Size getPreviewSize(List<Camera.Size> list, int th){Collections.sort(list, sizeComparator);Size size=null;for(int i=0;i<list.size();i++){size=list.get(i);if((size.width>th)&&equalRate(size, 1.3f)){break;}}return size;}public Size getPictureSize(List<Camera.Size> list, int th){Collections.sort(list, sizeComparator);Size size=null;for(int i=0;i<list.size();i++){size=list.get(i);if((size.width>th)&&equalRate(size, 1.3f)){break;}}return size;}public boolean equalRate(Size s, float rate){float r = (float)(s.width)/(float)(s.height);if(Math.abs(r - rate) <= 0.2){return true;}else{return false;}}public  class CameraSizeComparator implements Comparator<Camera.Size>{//按升序排列@Overridepublic int compare(Size lhs, Size rhs) {// TODO Auto-generated method stubif(lhs.width == rhs.width){return 0;}else if(lhs.width > rhs.width){return 1;}else{return -1;}}}}

调用方法:

private static Size pictureSize,previewSize;pictureSize= MyCamPara.getInstance().getPictureSize(parameter.getSupportedPictureSizes(), 800);  //预览大小previewSize=MyCamPara.getInstance().getPreviewSize(parameter.getSupportedPreviewSizes(), display.getHeight());  if(previewSize!=null)parameter.setPreviewSize(previewSize.width,previewSize.height);if(pictureSize!=null)parameter.setPictureSize(pictureSize.width,pictureSize.height);


0 0
原创粉丝点击