首页  编辑  

安卓9.0下拍照曝光不正确的问题

Tags: /Android/   Date Created:
同样的代码,在安卓5.1下拍照无问题,但是在安卓9.0下,拍照出现曝光不正确的问题,要么太白,要么太黑,要么颜色不对。
问题在于,拍照的时候,设置拍照大小的时候,没有正确设置好setPictureSize,设置的size,必须在parameter.getSupportedPictureSize列表里面有的才可以,如果不在里面,就有问题。
List < Size > sizes = parameters.getSupportedPreviewSizes();
Size optimalSize = getOptimalPreviewSize(sizes, w, h);
parameters.setPreviewSize(optimalSize.width, optimalSize.height);

private Size getOptimalPreviewSize(List < Size > sizes, int w, int h) {
    final double ASPECT_TOLERANCE = 0.05;
    double targetRatio = (double) w / h;
    if (sizes == null)
        return null;
    Size optimalSize = null;
    double minDiff = Double.MAX_VALUE;
    int targetHeight = h;
    // Try to find an size match aspect ratio and size
    for (Size size: sizes) {
        double ratio = (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);
        }
    }
    // Cannot find the one match the aspect ratio, ignore the requirement
    if (optimalSize == null) {
        minDiff = Double.MAX_VALUE;
        for (Size size: sizes) {
            if (Math.abs(size.height - targetHeight) < minDiff) {
                optimalSize = size;
                minDiff = Math.abs(size.height - targetHeight);
            }
        }
    }
    return optimalSize;
}