0

我正在尝试使用相机硬件来捕获图像列表。但是在启动相机视图时,视图看起来不像往常一样。屏幕截图附在下面。我正在测试这个HTC Sensation running android 4.0.3

Image ScreenShot while in portrait 在此处输入图像描述它看起来不像通常的相机视图。

这里有什么问题?

我在哪里做错了?

4

2 回答 2

1

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

camera.setDisplayOrientation(90);

有关更多信息,请查看有关此主题的其他一些答案(这里是一个另一个)。基本上,Android 相机设置为在横向模式下显示,因此如果 Activity 处于纵向模式,则需要旋转方向以适应这一点。

于 2013-02-20T11:48:47.330 回答
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
            }

        }
    }
于 2013-02-20T11:56:54.260 回答