使用android.hardware.Camera
,为了让相机输出正确跟踪设备移动,我们需要在OrientationEventListener
上将setDisplayOrientation()
与Camera
方法联系起来。这样,当用户扭转设备时,我们可以保持相机预览中的“向上”与现实世界中的“向上”同步。对于围绕Y轴旋转设备(即从横向翻转到反向横向或向后),尤其如此。
对于大多数方向更改,android.hardware.camera2
API似乎“正常工作”。但是,对于Y轴旋转(横向 - >反向横向,反之亦然),相机预览会被反转。
相同于在setDisplayOrientation()
上为Camera2 API调用Camera
,我们可以处理这种情况吗?
答案 0 :(得分:9)
正如您所注意到的那样,这应该在camera2 API上为SurfaceView
“正常工作”。
因此,没有相当于setDisplayOrientation()
。
我们之前没有听说过这个问题,所以有几个问题:
答案 1 :(得分:2)
使用此CaptureRequest JPEG_ORIENTATION设置显示方向
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, 90)
答案 2 :(得分:1)
使用下面的公式来获取设备轮换。
private int getOrientation(int rotation) {
return (ORIENTATIONS.get(rotation) + mSensorOrientation + 270) % 360;
}
SensorOrientation是从
分配的字段characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION)
谷歌工程师建议的解决方案:yaraki
https://github.com/googlesamples/android-Camera2Basic/issues/24
答案 3 :(得分:0)
没有。
它没有"只是工作"如果与传感器方向相比交换显示方向(在大多数设备上这是纵向模式的情况),因为你必须设置宽高比< 1表示相机2无法映射到适合的输出尺寸的预览表面。解决方案: