Android Camera Size Get getOptimalPreviewSize(List sizes, int w, int h)

Here you can find the source of getOptimalPreviewSize(List sizes, int w, int h)

Description

get Optimal Preview Size

Declaration

public static Size getOptimalPreviewSize(List<Size> sizes, int w, int h) 

Method Source Code

//package com.java2s;

import java.util.List;

import android.hardware.Camera.Size;

import android.util.Log;

public class Main {

    public static Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
        final double ASPECT_TOLERANCE = 0.1;
        double targetRatio = (double) w / h;
        if (sizes == null)
            return null;

        Size optimalSize = null;//w  w  w  . java2 s .c  o m
        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);
                }
            }
        }
        Log.i("MyUtils", "optimal param w*h = " + w + "," + h + ", "
                + "-> optimal w*h " + optimalSize.width + ","
                + optimalSize.height);
        return optimalSize;
    }
}

Related

  1. getSizeLB(List sizes, int w, int h)
  2. getSizeRATIO(List sizes, int w, int h)
  3. getSizeSIZE(List sizes, int w, int h)
  4. getSizeWIDTH(List sizes, int w, int h)
  5. getOptimalPreviewSize( List sizes, int w, int h)
  6. getOptimalPreviewSize(List supportedSizes, int w, int h)
  7. getOptimalPreviewSize(int displayOrientation, int width, int height, Camera.Parameters parameters)
  8. getBiggestPictureSize( Camera.Parameters parameters)
  9. toString(Iterable areas)