java - 横向模式下的预览方向使用 Camera2 api 顺时针旋转

标签 java android android-camera

我已经使用 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);
}

最佳答案

我遇到了同样的问题 - 这是因为默认的相机传感器方向可能是 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 )。基本上,它会检查相机的传感器方向并判断预览区域是否需要旋转。

关于java - 横向模式下的预览方向使用 Camera2 api 顺时针旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348225/

相关文章:

java - 随机排列数组列表

Android surfaceview 相机拉伸(stretch)

android - 倒置摄像头预览字节数组

null 对象的 java.lang.NullPointerException : while trying to invoke the method com. sap.isa.core.eai.BackendConfig.getId()

java - 如何迭代内部嵌套有 ArrayList 的 HashMap

android - 找不到与给定名称 : attr 'android:actionModeShareDrawable' appcompat-v7:21. 0.0 与 compileSdkVersion 21 匹配的资源

android - 使用 Android Camera API,快照照片的方向始终未定义

java.lang.OutOfMemory错误: Java heap space - Can not fix it

java - 属性文件命名约定

android - 我无法在 android 中调试 Home 示例应用程序