捕获图像的旋转取决于
the target rotation
的
ImageCapture
用例。默认情况下,当应用程序没有设置它时,它等于
Display.getRotation()
,在哪里
Display
是当时的默认显示
图像捕捉
创建用例。
这意味着您需要更新
图像捕捉
每次显示器方向改变时,例如当设备从纵向旋转到横向时,的目标旋转。
我假设你的活动有一个锁定的方向(?)。在这种情况下,您可以使用
OrientationEventListener
持续获取设备旋转的更新,然后相应地更新用例的目标旋转。
val orientationEventListener = object : OrientationEventListener(this) {
override fun onOrientationChanged(orientation: Int) {
if (orientation == OrientationEventListener.UNKNOWN_ORIENTATION) {
return
}
val rotation = when (orientation) {
in 45 until 135 -> Surface.ROTATION_270
in 135 until 225 -> Surface.ROTATION_180
in 225 until 315 -> Surface.ROTATION_90
else -> Surface.ROTATION_0
}
imageCapture.targetRotation = rotation
}
}
您应该启动/停止
orientationEventListener
当“活动”的生命周期启动/停止时,这也与相机的启动/停止时间相匹配。你可以看到一个例子
here
.
您还可以了解有关CameraX用例和旋转的更多信息
in the official documentation
.