Android 相机预览尺寸问题

Android 相机预览尺寸问题,android,camera,Android,Camera,我正在开发一个自定义相机应用程序,我面临着设置相机预览大小的问题。问题是摄影机预览不会保持纵横比,因此预览看起来会向两侧拉伸 我用于计算最佳尺寸的代码: private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) { final double ASPECT_TOLERANCE = 1; double targetRatio=(double)w /

我正在开发一个自定义相机应用程序,我面临着设置相机预览大小的问题。问题是摄影机预览不会保持纵横比,因此预览看起来会向两侧拉伸

我用于计算最佳尺寸的代码:

private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {


        final double ASPECT_TOLERANCE = 1;
        double targetRatio=(double)w / h; 

        if (sizes == null){
            return null;
        }

        Camera.Size optimalSize = null;
        double minDiff = Double.MAX_VALUE;

        int targetHeight = h;

        for (Camera.Size size : sizes) {

            double ratio = (double) size.width / size.height;
            Log.d("Test", "Ration: " + Math.abs(ratio - targetRatio));
            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) {
                    Log.d("Test", "MATCFH!");
                    optimalSize = size;
                    minDiff = Math.abs(size.height - targetHeight);
                }
            }
        }



        return optimalSize;
    }
private Camera.Size GetOptimizePreviewSize(列表大小,整数w,整数h){
最终双纵横比公差=1;
双目标率=(双)w/h;
如果(大小==null){
返回null;
}
照相机。大小优化大小=空;
double minDiff=double.MAX_值;
int targetHeight=h;
用于(相机尺寸:尺寸){
双倍比率=(双倍)size.width/size.height;
对数d(“测试”,“定量:”+数学绝对值(比率-目标比率));
if(数学绝对值(比率-目标比率)>纵横比公差){
继续;
}
if(数学绝对值(尺寸高度-目标光)

我已经为此挣扎了一天,但找不到最佳解决方案。如有任何建议,将不胜感激

没错,更改相机预览大小可能不会保留纵横比。要保持预览显示的美观,应相应调整预览曲面视图的大小

因此,没有办法保持surfaceView在全屏模式下保持纵横比??那本机摄像头应用程序呢,它可以在全屏幕上以适当的纵横比工作??它是否使用了一些基于距离等的计算?系统摄像头应用程序为4x3分辨率留有黑色边距,但它经过精心设计,在16x9(也称宽)和4x3格式下都很好看。