使用Camera2 API时,横屏预览方向顺时针旋转。

9
我使用Camera2 API编写了一个相机应用程序。但是当我在横向模式下打开应用程序时,预览中的物体看起来顺时针旋转了90度。但是在纵向模式下我没有看到同样的问题。为什么在横向模式下会出现这个问题?以下是屏幕旋转代码:
private static final SparseIntArray ORIENTATIONS = new SparseIntArray();

static {
    ORIENTATIONS.append(Surface.ROTATION_0, 90);
    ORIENTATIONS.append(Surface.ROTATION_90, 0);
    ORIENTATIONS.append(Surface.ROTATION_180, 270);
    ORIENTATIONS.append(Surface.ROTATION_270, 180);
}

你在相机预览中使用什么视图?SurfaceView、TextureView还是其他什么? - Eddy Talvala
如果您找到了任何解决方案,我也很感兴趣。 - Yeehaw
@EddyTalvala,在我的情况下,我正在使用SurfaceView。 - Tash Pemhiwa
Tash Pemhiwa:你可能想要开始一个新的问题,并提供更多关于你自己情况的细节,因为这个问题还没有澄清。 - Eddy Talvala
1个回答

0

我也遇到了同样的问题 - 这是因为默认相机传感器的方向可能是90度或270度,这取决于您的设备。为了将相机输出呈现到屏幕上,需要进行大量的预处理来设置相机输出。

官方谷歌示例中的setUpCameraOutputs(int width, int height)方法展示了如何执行此操作(https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java)。 基本上,它检查相机的传感器方向并确定预览区域是否需要旋转。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接