Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android前置摄像头预览的角度更窄_Android_Android Camera - Fatal编程技术网

Android前置摄像头预览的角度更窄

Android前置摄像头预览的角度更窄,android,android-camera,Android,Android Camera,我正在开发一个相机过滤器应用程序,我的目标是有一个正方形相机预览(裁剪它,并获得中心正方形),并拍摄正方形的照片 我正在使用Google API的getOptimalPreviewSize方法,即: private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) { final double ASPECT_TOLERANCE = 0.1; double targetRat

我正在开发一个相机过滤器应用程序,我的目标是有一个正方形相机预览(裁剪它,并获得中心正方形),并拍摄正方形的照片

我正在使用Google API的getOptimalPreviewSize方法,即:

private 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;
    double minDiff = Double.MAX_VALUE;
    int targetHeight = h;
    // Try to find an size match aspect ratio and size
    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);
        }
    }
    // Cannot find the one match the aspect ratio, ignore the requirement
    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;
}
private Camera.Size GetOptimizePreviewSize(列表大小,整数w,整数h){
最终双纵横比公差=0.1;
双目标率=(双)w/h;
如果(size==null)返回null;
照相机。大小优化大小=空;
double minDiff=double.MAX_值;
int targetHeight=h;
//尝试找到与纵横比和大小匹配的大小
用于(相机尺寸:尺寸){
双倍比率=(双倍)size.width/size.height;
如果(数学abs(比率-目标比率)>纵横比公差)继续;
if(数学绝对值(尺寸高度-目标光)
我正在LG G4设备上测试,背面摄像头没有问题。包括我在内的所有应用程序(Retrica、Instagram、设备摄像头应用程序)都显示了相同的预览。但是,当谈到前置摄像头时,Instagram和Retrica的角度更大,而该设备的摄像头应用程序和我的应用程序的角度更窄

我不知道如何解决这个问题,因为即使当我得到1920*1080(前摄像头的最大可用尺寸)的预览时,预览就像“放大”

有什么建议可以解决这个问题吗?(我的应用程序显示的场景与设备的摄像头应用程序显示的场景一模一样,但Instagram Retrica显示的场景有点缩小

多谢各位

(注:我的应用程序正在SurfaceView上预览,这是典型的方式)