Android应用程序:人像电话但横向摄像头视图

时间:2012-10-20 08:51:44

标签: android view camera

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

我的问题是当图像在横向视图中旋转时,它会变形(挤压)。可以帮助我解决这个问题,任何人都可以为我提供一个解决方法来修剪边界以达到所需的比例。

!我是stackoverflow的新用户,所以不允许上传其他明智的图片我可以给你看。

     ___________________________________________
    |____________Notification bar_______________|
    |                                           |
    |   My Application                          |
    |___________________________________________|
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |         camera View                       |
    |          ____________________             |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |                    |            |
    |         |____________________|            |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |___________________________________________|

代码:

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;
}

0 个答案:

没有答案