Android 在低版本sdk中没有getSupportedPreviewSizes和getSupportedPictureSizes函数怎么办?...

在做camera和SurfaceView做摄像头程序时,需要获取camera支持的相片大小,在低版本sdk中没有getSupportedPictureSizes函数,怎么办呢,请参阅下面的关键代码:

1、定义Size类

public class Size { /*** * Sets the dimensions for pictures. * * @param w the photo width (pixels) * @param h the photo height (pixels) */ public Size(int w, int h) { width = w; height = h; } /*** * Compares {@code obj} to this size. * * @param obj the object to compare this size with. * @return {@code true} if the width and height of {@code obj} is the * same as those of this size. {@code false} otherwise. */ @Override public boolean equals(Object obj) { if (!(obj instanceof Size)) { return false; } Size s = (Size) obj; return width == s.width && height == s.height; } @Override public int hashCode() { return width * 32713 + height; } /*** width of the picture */ public int width; /*** height of the picture */ public int height; }

2、定义CameraHelper类

import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import android.hardware.Camera;public class CameraHelper { private static final String KEY_PREVIEW_SIZE = "preview-size"; private static final String KEY_PICTURE_SIZE = "picture-size"; private static final String SUPPORTED_VALUES_SUFFIX = "-values"; private Camera.Parameters mParms; public CameraHelper(Camera.Parameters parm) { this.mParms = parm; } public List<Size> GetSupportedPreviewSizes() { String str = mParms.get(KEY_PREVIEW_SIZE + SUPPORTED_VALUES_SUFFIX); return splitSize(str); } public List<Size> GetSupportedPictureSizes() { String str = mParms.get(KEY_PICTURE_SIZE + SUPPORTED_VALUES_SUFFIX); return splitSize(str); } private ArrayList<Size> splitSize(String str) { if (str == null) return null; StringTokenizer tokenizer = new StringTokenizer(str, ","); ArrayList<Size> sizeList = new ArrayList<Size>(); while (tokenizer.hasMoreElements()) { Size size = strToSize(tokenizer.nextToken()); if (size != null) sizeList.add(size); } if (sizeList.size() == 0) return null; return sizeList; } private Size strToSize(String str) { if (str == null) return null; int pos = str.indexOf('x'); if (pos != -1) { String width = str.substring(0, pos); String height = str.substring(pos + 1); return new Size(Integer.parseInt(width), Integer.parseInt(height)); } return null; } }

其实,主要是通过Camera.Parameters的get方法,然后再解析获取的字符串来代替那些不存在的api。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值