我正在尝试使用相机硬件来捕捉图像列表。但是在启动“摄像机视图”时,视图看起来并不像平常一样。屏幕截图如下。我正在HTC Sensation running android 4.0.3
进行测试。
Image ScreenShot while in portrait
它看起来不像通常的相机视图。
这里有什么问题?
我做错了什么?
答案 0 :(得分:1)
这是在纵向模式下使用Android制作自定义相机时的常见问题。您可能有一个用于显示相机预览的SurfaceView。我将以下代码行添加到surfaceCreated
方法中:
camera.setDisplayOrientation(90);
有关详细信息,请查看有关此主题的其他一些答案(here is one和another)。基本上,Android摄像头设置为以横向模式显示,因此如果活动处于纵向模式,您需要旋转方向以适应这种情况。
答案 1 :(得分:1)
默认情况下,硬件相机是横向(几乎所有设备),所以一旦你捕捉,我会自动旋转到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
}
}
}