【问题标题】:Camera orientation not changing Android 2.3相机方向不会改变 Android 2.3
【发布时间】:2012-10-22 06:20:29
【问题描述】:

对于我的应用程序,我使用的是 android 原生相机并使用表面视图预览图像。就我而言,除了相机方向外,一切正常。当我通过在清单文件上设置 screenOrientation="landscape 打开相机时,我在横向模式下可以毫无问题地获得预览。但我需要以纵向模式拍摄图像,为此我更改了我的清单,如 android:screenOrientation="portrait"并更改我的代码,如 mCamera.setDisplayOrientation(90)、params.set("orientation"、"landscape")、params.set("rotation", 90),但我仍然得到 90 度旋转的图像。 我的代码是

  public void setupCamera(int width, int height) {
    Log.i(TAG, "setupCamera");
    synchronized (this) {
        if (mCamera != null) {
            Camera.Parameters params = mCamera.getParameters();
            List<Camera.Size> sizes = params.getSupportedPreviewSizes();
            List<Camera.Size> imgsize=params.getSupportedPictureSizes();
            mFrameWidth = width;
            mFrameHeight = height;

           // mCamera.setDisplayOrientation(90);
            params.set("orientation", "landscape");
             params.set("rotation", 90);
            // selecting optimal camera preview size
            {
                int  minDiff = Integer.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);
                    }
                }
            }

            params.setPreviewSize(getFrameWidth(), getFrameHeight());




            List<String> FocusModes = params.getSupportedFocusModes();
            if (FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
            {
                params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
            }            

            mCamera.setParameters(params);



            mCamera.startPreview();
        }
    }
}

我正在使用 Micromax A 52 型号... 有谁请帮忙.....

【问题讨论】:

    标签: android android-camera


    【解决方案1】:

    如果您的应用程序在 v2.2 或更高版本上运行,您可以使用 camera.setDisplayOrientation(90) 将相机方向旋转为纵向。

    对于其他人:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    
    //After opening camera - call via reflection
    Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
    rotateMethod.invoke(mCamera, 90);
    

    更多详情请参考linkthis
    希望这会有所帮助

    【讨论】:

    • 嗨..感谢您的回复.....我尝试了上述方法,但图像仍然旋转...
    • 如果您使用此代码,那么现在我认为您应该删除所有与旋转相关的代码。
    • camera.setDisplayOrientation(90) 这适用于 Android ICS 及更高版本,但不适用于 2.3.6,在文档中它说“'setDisplayOrientation()' 适用于 Android 14 及更高版本”希望你会改变答案
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多