一 、Android4.4原生的Camera
首先看初始化的过程,代码如下:
if (pictureSize != null && pictureRatio != null) {
/// M: filter supported values.
filterUnsupportedOptionsForPictureSize(group, pictureSize, sizeListToStringList(
mParameters.getSupportedPictureSizes()), false,
SettingChecker.ROW_SETTING_PICTURE_SIZE);
/// M: for picture size was ordered, here we don't set it to index 0.
List<String> supportedForRatio = buildSupportedPictureSize(mContext, mParameters, pictureRatio.getValue());
}
打印日志发现 supportedForRatio 获取到2个值,分别是1280x768和1920x1152,但是发现应用只有1280x768,而没有1920x1152.所有怀疑是底层驱动有这个值,但是应用层没有这个值造成的。所以在CameraSettings.java添加之,验证现象如下:虽然照片大小是正确的显式了,但是子菜单还是没有显式。分析得出原因是在ListPreferences的初始化的xml里没有相关的值,在arrays.xml添加相应的值即可解决。
此时又发现问题了,发现文字的显式是“500 万像素”,而不是显式“200 万像素”,如下图所示,继续找原因。这个问题就有点弱智了,因为在arrays.xml的200万像素下没有添加对应的“200 万像素”的文字说明。到此问题解决。
二、同样从底层获取的值而上层没有相应的值时,也会出现“照片大小”显示的值混乱(显示的值在子菜单里面没有相应的该值)。如下图所示: