Camera.SetDisplayOrientation(Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Precaución
deprecated
Establezca la rotación en sentido de las agujas del reloj de la vista previa en grados.
[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
Parámetros
- degrees
- Int32
ángulo en el que se girará la imagen en el sentido de las agujas del reloj. Los valores válidos son 0, 90, 180 y 270.
- Atributos
Comentarios
Establezca la rotación en sentido de las agujas del reloj de la vista previa en grados. Esto afecta a los marcos de vista previa y a la imagen mostrada después de la instantánea. Este método es útil para las aplicaciones en modo vertical. Tenga en cuenta que la visualización de vista previa de las cámaras frontales se voltea horizontalmente antes de la rotación, es decir, la imagen se refleja a lo largo del eje vertical central del sensor de cámara. Por lo tanto, los usuarios pueden ver a sí mismos como mirar un espejo.
Esto no afecta al orden de la matriz de bytes pasada en PreviewCallback#onPreviewFrame
, imágenes JPEG o vídeos grabados. No se permite llamar a este método durante la versión preliminar.
Si desea que la imagen de la cámara se muestre en la misma orientación que la pantalla, puede usar el código siguiente.
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);
}
A partir del nivel de API 14, se puede llamar a este método cuando la versión preliminar está activa.
<b>Nota: </b>Antes del nivel de API 24, el valor predeterminado para la orientación es 0. A partir del nivel de API 24, la orientación predeterminada será tal que las aplicaciones en modo horizontal forzado tengan una orientación de vista previa correcta, que puede ser un valor predeterminado de 0 o 180. Las aplicaciones que operan en modo vertical o permiten cambiar la orientación deben seguir llamando a este método después de cada cambio de orientación para garantizar la visualización de vista previa correcta en todos los casos.
Documentación de Java para android.hardware.Camera.setDisplayOrientation(int)
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.