1. 程式人生 > >Camera預覽尺寸和獲取螢幕寬高。

Camera預覽尺寸和獲取螢幕寬高。

演算法需要將預覽大小與手機的解析度掛鉤,才能夠在不同解析度的手機上面預覽都不變形。

/**
 * 獲取最佳預覽大小
 * @param parameters 相機引數
 * @param screenResolution 螢幕寬高
 * @return
 */
private Point getBestCameraResolution(Camera.Parameters parameters, Point screenResolution) {
    float tmp = 0f;
    float mindiff = 100f;
    float x_d_y = (float) screenResolution.x / (float) screenResolution.y;
    Size best = null;
    List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
    for (Size s : supportedPreviewSizes) {
        tmp = Math.abs(((float) s.height / (float) s.width) - x_d_y);
        if (tmp < mindiff) {
            mindiff = tmp;
            best = s;
        }
    }
    return new Point(best.width, best.height);
}

獲取螢幕寬高的方法如下:

/**
 * 獲取螢幕寬度和高度,單位為px
 * @param context
 * @return
 */
public static Point getScreenMetrics(Context context){
   DisplayMetrics dm =context.getResources().getDisplayMetrics();
   int w_screen = dm.widthPixels;
   int h_screen = dm.heightPixels;
   return new Point(w_screen, h_screen);
   
}