【问题标题】:Preview orientation in landscape mode is rotated clockwise with Camera2 api's横向模式下的预览方向使用 Camera2 api 顺时针旋转
【发布时间】:2015-09-29 15:25:55
【问题描述】:

我使用 Camera2 api 编写了一个相机应用程序。 但是当我以横向模式打开应用程序时,预览中的对象看起来顺时针旋转了 90 度。

但我在 Potrait 模式下没有看到同样的问题。

在横向模式下导致此问题的原因是什么?

这是屏幕旋转代码:

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 还是其他?
  • 如果您找到任何解决方案,我也会对您的解决方案感兴趣。
  • @EddyTalvala,就我而言,我使用的是 SurfaceView
  • Tash Pemhiwa:您可能想提出一个新问题,详细介绍您自己的案例,因为这个问题还没有得到澄清。

标签: java android android-camera


【解决方案1】:

我遇到了同样的问题 - 这是因为默认的相机传感器方向可能是 90 度或 270 度,具体取决于您的设备。为了将相机输出渲染到屏幕上,在设置相机输出时需要进行相当多的预处理。

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

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多