在Android上修复相机捕捉到肖像

时间:2013-12-20 10:02:12

标签: android android-camera landscape-portrait

我正在Android中开发一个小型相机捕捉程序。

我没有使用Intent打开相机并显示它的图像。我直接使用相机:

if (myPreviewRunning) {
            myCamera.stopPreview();
            myPreviewRunning = false;
        }

        Camera.Parameters parameters = myCamera.getParameters();
        display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

        display = getWindowManager().getDefaultDisplay();

        Camera.Size optimalSize = getOptimalSize(parameters.getSupportedPreviewSizes(), width, height);

        parameters.setPreviewSize(optimalSize.width, optimalSize.height);
        if (display.getRotation() == Surface.ROTATION_0 ||display.getRotation() == Surface.ROTATION_270)
        {
            parameters.setPreviewSize(optimalSize.height, optimalSize.width);

            ViewGroup.LayoutParams layoutParams = mySurfaceView.getLayoutParams();
            layoutParams.width = optimalSize.height;
            layoutParams.height = optimalSize.width;

            mySurfaceView.setLayoutParams(layoutParams);


            myCamera.setDisplayOrientation(90);
        }
        else
        {
            myCamera.setDisplayOrientation(180);
            mySurfaceView.getLayoutParams().width = optimalSize.width;
            mySurfaceView.getLayoutParams().height = optimalSize.height;
        }

        myCamera.setParameters(parameters);
        myCamera.setPreviewDisplay(holder);
        myCamera.startPreview();

到目前为止,使用此代码我可以将相机旋转为“自然”行为,因此当我将手机旋转到横向时,它会旋转图像并在横向上看到它。但由于某些原因,我需要预览图像保持纵向模式,即使我放置了风景。

如何强制相机预览保持纵向模式?

编辑: AndroidManifest.xml

<activity
            android:name="CameraViewer"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
    </activity>

我希望能够做到这一点:

enter image description here

0 个答案:

没有答案