Return the supported picture size that best fits on the device screen. : Screen « Hardware « Android

Return the supported picture size that best fits on the device screen.

 *  Color Picker by Juan Martn
 *  Copyright (C) 2010
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  GNU General Public License for more details.
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <>.

import java.util.Iterator;
import java.util.List;

import android.hardware.Camera;
import android.hardware.Camera.Size;
import android.view.View;
import android.widget.ImageView;

 * @author nauj27
 class Utils {
     * Return the supported picture size that best fits on the device screen.
     * @param camera the camera to instantiate new Size objects
     * @param supportedPictureSizes list of supported sizes
     * @param preview if the supported size is for preview image
     * @param displayWidth the width of the physical display
     * @param displayHeight the height of the physical display
     * @return nearest Camera.Size to device screen 
    public static Camera.Size getBestSize(
        Camera camera,
        List<Size> supportedSizes,
        boolean preview,
        int displayWidth,
        int displayHeight) {
      final int PREVIEW_SIZE_WIDTH_EMULATOR = 176;
      final int PREVIEW_SIZE_HEIGHT_EMULATOR = 144;
      final int PICTURE_SIZE_WIDTH_EMULATOR = 213;
      final int PICTURE_SIZE_HEIGHT_EMULATOR = 350;

      double temporalDiff = 0;
      double diff = Integer.MAX_VALUE;
      Camera.Size size = null;
      Camera.Size supportedSize = null;
      if (supportedSizes == null) {
        if (isAndroidEmulator(android.os.Build.MODEL)) {
          if (preview) {
            size = Size(
          } else {
            size = Size(
      } else {
        Iterator<Size> iterator = supportedSizes.iterator();
        while (iterator.hasNext()) {
          supportedSize =;
          temporalDiff = Math.sqrt(
            Math.pow(supportedSize.width - displayWidth, 2) +
            Math.pow(supportedSize.height - displayHeight, 2));
          if (temporalDiff < diff) {
            diff = temporalDiff;
            size = supportedSize;
      return size;

     * Returns if the model is from android sdk emulator.
     * @param model the current model
     * @return boolean value indicating if is the android sdk emulator
    public static boolean isAndroidEmulator(String model) {
      return (model.compareToIgnoreCase("sdk") == 0);


Related examples in the same category

1.Multiscreen size
2.Nested PreferenceScreen
3.Get the size of Default Display Screen
4.Screen Orientation
5.Rows have different number of columns and content doesn't fit on screen: column 4 of row 2 shrinks all of the other columns
6.Demonstrates the Tab scrolling when too many tabs are displayed to fit in the screen.
7.Using PreferenceScreen
8.Splash Screen
9.Get the optimal preview size for the given screen size.
10.Methods for converting between the physics world coordinates and the screen coordinates.
11.Get screen Orientation
12.add Home Screen Shortcut
13.Screen Short
14.Set full screen mode