您的位置:首页 > 其它

原生Camera设置的分析(二):分辨率的过滤

2014-06-25 10:48 232 查看
       分辨率的过滤问题总体思路分为三步,

 1、首先要读取底层所支持的所有分辨率,与上层支持的分辨率比较;

 2、然后过滤当前尺寸比例的分辨率;

 3、最后与上层已经过滤一次的分辨率再比较(我觉得第三步是不是多余的???)。

     主要代码如下:

if (pictureSize != null && pictureRatio != null) {
//第一步:
filterUnsupportedOptionsForPictureSize(group, pictureSize, sizeListToStringList(
mParameters.getSupportedPictureSizes()), false,
SettingChecker.ROW_SETTING_PICTURE_SIZE);
//第二步:
List<String> supportedForRatio = buildSupportedPictureSize(mContext, mParameters, pictureRatio.getValue());
//第三步:
filterDisabledOptions(group, pictureSize, supportedForRatio, false,
SettingChecker.ROW_SETTING_PICTURE_SIZE);
}

    在第一步中,mParameters.getSupportedPictureSizes() 是用来获取底层所支持的分辨率,然后用函数sizeListToStringList()将其转化为String型。然后进入函数filterUnsupportedOptionsForPictureSize(...)里最主要的代码是pref.filterUnsupported(supported); 它是主要起到过滤作用的,是将底层所支持的分辨率与应用层所支持的分辨率比较,取二者的集合部分。

   在第二步中,是过滤当前尺寸的分辨率。因为在第一步的结果中是不分尺寸的,所以第二步执行该种操作。其中第三个参数pictureRatio.getValue()起到了关键的作用。

   在第三步中,是将第二步中的过滤结果再次比较。(我暂时觉得这是多余的......)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: