Camera.SetDisplayOrientation(Int32) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Внимание!
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);
}
Начиная с уровня 14 API этот метод можно вызывать при активном просмотре.
<Примечание>. </b>До уровня API 24 значение по умолчанию для ориентации равно 0. Начиная с уровня API 24, ориентация по умолчанию будет иметь правильную ориентацию предварительной версии приложений в режиме принудительного ландшафта, что может быть по умолчанию 0 или 180. Приложения, работающие в книжном режиме или разрешающие изменение ориентации, по-прежнему должны вызывать этот метод после каждого изменения ориентации, чтобы обеспечить правильное отображение предварительного просмотра во всех случаях.
Документация по Java для android.hardware.Camera.setDisplayOrientation(int)
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.