Iterate over supported camera preview sizes to see which one best fits the dimensions of the given view while maintaining the aspect ratio. - Android Camera

Android examples for Camera:Camera Preview

Description

Iterate over supported camera preview sizes to see which one best fits the dimensions of the given view while maintaining the aspect ratio.

Demo Code

import java.util.List;

import android.hardware.Camera;
import android.util.Log;

public class Main {
  private static final String TAG = "";

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

    Camera.Size optimalSize = null;// www.j a v  a  2 s  .  c o m

    double minDiff = Double.MAX_VALUE;

    int targetHeight = h;

    for (Camera.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);
      }
    }

    if (optimalSize == null) {
      minDiff = Double.MAX_VALUE;
      for (Camera.Size size : sizes) {
        if (Math.abs(size.height - targetHeight) < minDiff) {
          optimalSize = size;
          minDiff = Math.abs(size.height - targetHeight);
        }
      }
    }
    return optimalSize;
  }
}

Related Tutorials