Camera.Parameters.SetRotation(Int32) Método

Definición

Precaución

deprecated

Establece el ángulo de rotación en grados en relación con la orientación de la cámara.

[Android.Runtime.Register("setRotation", "(I)V", "GetSetRotation_IHandler")]
[System.Obsolete("deprecated")]
public virtual void SetRotation(int rotation);
[<Android.Runtime.Register("setRotation", "(I)V", "GetSetRotation_IHandler")>]
[<System.Obsolete("deprecated")>]
abstract member SetRotation : int -> unit
override this.SetRotation : int -> unit

Parámetros

rotation
Int32

Ángulo de rotación en grados relativo a la orientación de la cámara. La rotación solo puede ser 0, 90, 180 o 270.

Atributos

Excepciones

si el valor de rotación no es válido.

Comentarios

Establece el ángulo de rotación en grados en relación con la orientación de la cámara. Esto afecta a las imágenes devueltas de JPEG PictureCallback. El controlador de cámara puede establecer la orientación en el encabezado EXIF sin girar la imagen. O bien, el controlador puede girar la imagen y la miniatura EXIF. Si se gira la imagen Jpeg, faltará la orientación en el encabezado EXIF o 1 (la fila #0 es superior y la columna #0 está en el lado izquierdo).

Si las aplicaciones quieren girar la imagen para que coincida con la orientación de lo que ven los usuarios, las aplicaciones deben usar android.view.OrientationEventListener y android.hardware.Camera.CameraInfo. El valor de OrientationEventListener es relativo a la orientación natural del dispositivo. CameraInfo.orientation es el ángulo entre la orientación de la cámara y la orientación del dispositivo natural. La suma de los dos es el ángulo de rotación de la cámara orientada hacia atrás. La diferencia de los dos es el ángulo de rotación para la cámara frontal. Tenga en cuenta que las imágenes JPEG de las cámaras frontales no se reflejan como en la pantalla de vista previa.

Por ejemplo, supongamos que la orientación natural del dispositivo es vertical. El dispositivo gira 270 grados en el sentido de las agujas del reloj, por lo que la orientación del dispositivo es de 270. Supongamos que un sensor de cámara orientado hacia atrás está montado en horizontal y el lado superior del sensor de cámara está alineado con el borde derecho de la pantalla en orientación natural. Por lo tanto, la orientación de la cámara es 90. La rotación debe establecerse en 0 (270 + 90).

El código de referencia es el siguiente.

public void onOrientationChanged(int orientation) {
                if (orientation == ORIENTATION_UNKNOWN) return;
                android.hardware.Camera.CameraInfo info =
                       new android.hardware.Camera.CameraInfo();
                android.hardware.Camera.getCameraInfo(cameraId, info);
                orientation = (orientation + 45) / 90 * 90;
                int rotation = 0;
                if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
                    rotation = (info.orientation - orientation + 360) % 360;
                } else {  // back-facing camera
                    rotation = (info.orientation + orientation) % 360;
                }
                mParameters.setRotation(rotation);
            }

Java documentación para android.hardware.Camera.Parameters.setRotation(int).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a

Consulte también

  • OrientationEventListener
  • <xref:Android.Hardware.Camera.GetCameraInfo(System.Int32%2c+Android.Hardware.Camera.CameraInfo)>