【发布时间】:2016-02-02 10:02:08
【问题描述】:
使用android.hardware.Camera,为了让相机输出正确地跟踪设备移动,我们需要将OrientationEventListener 连接到Camera 上的setDisplayOrientation() 方法。这样,当用户转动设备时,我们可以使相机预览中的“向上”与现实世界中的“向上”保持同步。绕 Y 轴旋转设备时尤其如此(即从横向翻转到反向横向或向后翻转)。
对于大多数方向更改,android.hardware.camera2 API 似乎“正常工作”。但是,对于 Y 轴旋转(横向 -> 反向横向,反之亦然),相机预览最终会被反转。
对于 Camera2 API,在 Camera 上调用 setDisplayOrientation() 等效于什么,以便我们可以处理这种情况?
【问题讨论】:
-
对于 camera2 和 android 6.0(在模拟器上测试)
characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION)似乎总是返回 270,这就是为什么当预览返回 90 那么预览就可以了,所以我想如果相机传感器方向是 270 来修复预览,我们应该对 SurfaceView 进行手动转换 -
@user924:“在模拟器上测试”——依赖模拟器来评估相机 API 的行为是不明智的,恕我直言。
-
是的,mb。我只是没有真正的设备,比如 Nexus 5X,它返回 270 度的相机传感器方向,但我认为模拟器和此类设备的行为相同,在使用 SurfaceView 时都有倒置预览。你找到任何解决方案了吗?我们可以使用 TextureView 并根据相机方向值应用矩阵,但我想使用 SurfaceView,但我没有找到任何解决方案。我希望 TextureView 不是唯一的解决方案