Android:相机预览的屏幕方向/旋转

前端之家收集整理的这篇文章主要介绍了Android:相机预览的屏幕方向/旋转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法
Android – Camera preview is sideways
public void updateCameraDisplay(int w,int h) {
        // set preview size and make any resize,rotate or
        // reformatting changes here

        Log.i("CameraPreviews","Updating camera orientation with w=" + w
                + " and h=" + h);
        Parameters parameters = camera.getParameters();
        Display display = getActivity().getWindowManager()
                .getDefaultDisplay();

        int rotation = getActivity().getResources().getConfiguration().orientation;
        Log.i("CameraPreviews","rotation is " + display.getRotation());
        if (display.getRotation() == Surface.ROTATION_0) {

            parameters.setPreviewSize(h,w);
            camera.setDisplayOrientation(0);
        }

        if (display.getRotation() == Surface.ROTATION_90) {
            parameters.setPreviewSize(w,h);
            camera.setDisplayOrientation(270);
        }

        if (display.getRotation() == Surface.ROTATION_180) {
            parameters.setPreviewSize(h,w);
            camera.setDisplayOrientation(180);
        }

        if (display.getRotation() == Surface.ROTATION_270) {
            parameters.setPreviewSize(w,h);
            camera.setDisplayOrientation(90);
        }

        try {
            camera.setParameters(parameters);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我已经调整了价值观,在三星Galaxy Tab2上进行测试,最终得到正确的方向,一切正常.当我尝试在htc一个手机它根本不工作!!!!!所有的方向是完全错误的!所以我得出结论,thre必须是2种类型的设备(或更多…请不要!),因为旋转表示屏幕已经从其“默认”位置旋转了多少度,一些设备有一个默认位置和其他另一个.我如何知道这个默认轮播,并在我的代码中相应地进行操作?
EJ:
defaultOrientation =一些代码
if(defaultOrientation == 0)…
别….

锁定屏幕方向是没有问题的.
目标api = 11
非常感谢

编辑:
修改了我的代码

public void updateCameraDisplay(int w,"screen rotation is " + rotation);
        Log.i("CameraPreviews","display rotation is " + display.getRotation());
        if (display.getRotation() == Surface.ROTATION_0) {

            if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
                parameters.setPreviewSize(h,w);
                camera.setDisplayOrientation(0);
            } else {
                parameters.setPreviewSize(h,w);
                camera.setDisplayOrientation(90);
            }
        }

        else if (display.getRotation() == Surface.ROTATION_90) {
            if (rotation == Configuration.ORIENTATION_PORTRAIT) {
                parameters.setPreviewSize(w,h);
                camera.setDisplayOrientation(270);
            } else {
                parameters.setPreviewSize(w,h);
                //camera.setDisplayOrientation(0);
            }
        }

        else if (display.getRotation() == Surface.ROTATION_180) {
            if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
            parameters.setPreviewSize(h,w);
            camera.setDisplayOrientation(180);
            }else {
                parameters.setPreviewSize(h,w);
                camera.setDisplayOrientation(270);
            }
        }

        else if (display.getRotation() == Surface.ROTATION_270) {
            if (rotation == Configuration.ORIENTATION_PORTRAIT) {
                parameters.setPreviewSize(w,h);
                camera.setDisplayOrientation(90);
            } else {
                parameters.setPreviewSize(w,h);
                camera.setDisplayOrientation(180);
            }
        }

        try {
            camera.setParameters(parameters);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

只要我们不以纵向模式旋转手机,就可以在htc一个和三星Galaxy Tab上更好地工作

解决方法

您需要考虑的因素是:设备的方向,屏幕和相机之间的程度,假设您正在使用后置摄像头,以及是否使活动能够感测到方向改变.

一个重要的是,制造商实施的Camera HAL代码是否符合Google的协议.

猜你在找的Android相关文章