通过相机硬件捕获图像不能正常工作?

时间:2013-02-20 11:41:49

标签: android camera android-camera android-camera-intent

我正在尝试使用相机硬件来捕捉图像列表。但是在启动“摄像机视图”时,视图看起来并不像平常一样。屏幕截图如下。我正在HTC Sensation running android 4.0.3进行测试。

Image ScreenShot while in portrait enter image description here它看起来不像通常的相机视图。

这里有什么问题?

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这是在纵向模式下使用Android制作自定义相机时的常见问题。您可能有一个用于显示相机预览的SurfaceView。我将以下代码行添加到surfaceCreated方法中:

camera.setDisplayOrientation(90);

有关详细信息,请查看有关此主题的其他一些答案(here is oneanother)。基本上,Android摄像头设置为以横向模式显示,因此如果活动处于纵向模式,您需要旋转方向以适应这种情况。

答案 1 :(得分:1)

默认情况下,硬件相机是横向(几乎所有设备),所以一旦你捕捉,我会自动旋转到90度 - 好像它是在风景中拍摄的。

这就是为什么在拍摄人像时采用横向和90度旋转图像时能够正确拍摄图像的原因。

  • 检测设备的方向,如果是纵向,则顺时针旋转90度,以便在逆时针旋转90度时计算。

使用以下代码检测方向

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) 
    {
        super.onRestoreInstanceState(savedInstanceState);
        if (savedInstanceState != null) 
        {
            if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
            {
                // code in portrait - rotate to 90 degree
            }
            else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
            {
                    // code in landscape - do nothing
            }

        }
    }