横向模式下的预览方向使用 Camera2 api 顺时针旋转
Posted
技术标签:
【中文标题】横向模式下的预览方向使用 Camera2 api 顺时针旋转【英文标题】:Preview orientation in landscape mode is rotated clockwise with Camera2 api's 【发布时间】: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:您可能想提出一个新问题,详细介绍您自己的案例,因为这个问题还没有得到澄清。 【参考方案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)。基本上,它会检查相机的传感器方向并确定是否需要旋转预览区域。
【讨论】:
以上是关于横向模式下的预览方向使用 Camera2 api 顺时针旋转的主要内容,如果未能解决你的问题,请参考以下文章