Camera.SetDisplayOrientation(Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
deprecated
设置预览显示以度为单位的顺时针旋转。
[Android.Runtime.Register("setDisplayOrientation", "(I)V", "")]
[System.Obsolete("deprecated")]
public void SetDisplayOrientation (int degrees);
[<Android.Runtime.Register("setDisplayOrientation", "(I)V", "")>]
[<System.Obsolete("deprecated")>]
member this.SetDisplayOrientation : int -> unit
参数
- degrees
- Int32
图片将顺时针旋转的角度。 有效值为 0、90、180 和 270。
- 属性
注解
设置预览显示以度为单位的顺时针旋转。 这会影响快照后显示的预览帧和图片。 此方法适用于纵向模式应用程序。 请注意,在旋转前水平翻转正面相机的预览显示,即图像沿相机传感器的中心垂直轴反射。 因此,用户可以看到自己正在查看镜子。
这不会影响传入 PreviewCallback#onPreviewFrame
的字节数组、JPEG 图片或录制的视频的顺序。 不允许在预览期间调用此方法。
如果要使相机图像以与显示器相同的方向显示,可以使用以下代码。
public static void setCameraDisplayOrientation(Activity activity,
int cameraId, android.hardware.Camera camera) {
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
}
从 API 级别 14 开始,可以在预览处于活动状态时调用此方法。
<b>注意: </b>在 API 级别 24 之前,方向的默认值为 0。 从 API 级别 24 开始,默认方向将使处于强制布局模式的应用程序具有正确的预览方向,这可能是默认值 0 或 180。 在纵向模式下运行或允许更改方向的应用程序必须在每次方向更改后调用此方法,以确保在所有情况下都能正确显示预览。
适用于 . 的 android.hardware.Camera.setDisplayOrientation(int)
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。