Android相机setDisplayOrientation:galaxy tab的奇怪行为

时间:2011-10-19 20:27:02

标签: android android-camera android-2.2-froyo galaxy-tab

我在尝试以纵向模式进行相机预览时遇到问题。我已经阅读了有关它的各种文章,我用以下代码解决了它:

Display display = ((CaptureActivity)context).getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

if (Integer.parseInt(Build.VERSION.SDK) >= 8) {
    setDisplayOrientation(camera, 90);
}else{
    Camera.Parameters parameters = camera.getParameters();
    parameters.set("orientation", "portrait");
    camera.setParameters(parameters);
}

其中setDisplayOrientation()定义为:

protected void setDisplayOrientation(Camera camera, int angle) {
    Method downPolymorphic;
    try {
        downPolymorphic = camera.getClass().getMethod(
                "setDisplayOrientation", new Class[] { int.class });
        if (downPolymorphic != null)
            downPolymorphic.invoke(camera, new Object[] { angle });
    } catch (Exception e1) {
    }
}

现在我尝试将此代码添加到Galaxy Tab中,但失败了。我使用以下代码解决了它(尝试和错误方法):

if (height == 1024 && width == 600) {
    Camera.Parameters parameters = camera.getParameters();
    parameters.set("orientation", "portrait");
    parameters.setRotation(90);
    camera.setParameters(parameters);
}

现在我的两个问题是:

1)为什么Galaxy tab有2.2版本时会出现这样的问题,

2)有没有更好的解决方案来解决这个问题?

非常感谢你的时间!

1 个答案:

答案 0 :(得分:0)

设置显示方向,请查看官方docs,不要在那里硬编码90度。