Android 安卓应用程序:人像手机但全景摄像头视图

Android 安卓应用程序:人像手机但全景摄像头视图,android,view,camera,Android,View,Camera,我是java和android开发的新手。我正在开发一个在frameLayout窗口中具有摄影机视图的应用程序。我的应用程序设计为纵向,但窗口为横向。 正如大家所熟悉的,默认的相机视图是在横向视图中,所以我执行 camera.setDisplayOrientation(90)来旋转它 我的问题是,当图像在横向窗口下的纵向视图中旋转时,它会扭曲(挤压)。any1能否帮助我解决这个问题,any1能否为我提供一个修剪边界以达到所需比例的解决方案 !!我是stackoverflow的新用户,所以我不允许上

我是java和android开发的新手。我正在开发一个在frameLayout窗口中具有摄影机视图的应用程序。我的应用程序设计为纵向,但窗口为横向<如图所示>。 正如大家所熟悉的,默认的相机视图是在横向视图中,所以我执行 camera.setDisplayOrientation(90)来旋转它

我的问题是,当图像在横向窗口下的纵向视图中旋转时,它会扭曲(挤压)。any1能否帮助我解决这个问题,any1能否为我提供一个修剪边界以达到所需比例的解决方案

!!我是stackoverflow的新用户,所以我不允许上传其他方面的图片

     ___________________________________________
    |____________Notification bar_______________|
    |                                           |
    |   My Application                          |
    |___________________________________________|
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |         camera View                       |
    |          ____________________             |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |____________________|            |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |___________________________________________|
代码:

public void surfaceChanged(SurfaceHolder持有者,int格式,int宽度,int高度)
{
如果(预览_运行){
camera.stopPreview();
preview_running=false;
}
Camera.Parameters=Camera.getParameters();
列表大小=参数。getSupportedPreviewSizes();
int mFrameWidth=宽度;
int mframehight=高度;
{
double minDiff=double.MAX_值;
用于(相机尺寸:尺寸)
{
if(数学绝对值(尺寸高度-高度)
您找到解决方案了吗?我也遇到了同样的问题
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
{
        if(preview_running){
        camera.stopPreview();
        preview_running = false;
    }

    Camera.Parameters parameters = camera.getParameters();

    List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
    int mFrameWidth =  width;
    int mFrameHeight = height;

   {
        double minDiff = Double.MAX_VALUE;
        for (Camera.Size size : sizes) 
        {
            if (Math.abs(size.height - height) < minDiff) 
            {
                mFrameWidth = size.width;
                mFrameHeight = size.height;
                minDiff = Math.abs(size.height - height);
            }
        }
    }
    if( (width*height) != 0){
        parameters.setPreviewSize(mFrameHeight, mFrameWidth);
        System.out.println("TEST 1");
    }

    camera.setDisplayOrientation(90);
    camera.setParameters(parameters);
    camera.startPreview();

    preview_running = true;
}