Camera.Parameters.SetRotation(Int32) Método

Definição

Cuidado

deprecated

Define o ângulo de rotação no sentido horário em graus relativos à orientação da câmera.

[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

O ângulo de rotação em graus relativos à orientação da câmera. A rotação só pode ser 0, 90, 180 ou 270.

Atributos

Exceções

se o valor de rotação for inválido.

Comentários

Define o ângulo de rotação no sentido horário em graus relativos à orientação da câmera. Isso afeta as imagens retornadas de JPEG PictureCallback. O driver da câmera pode definir a orientação no cabeçalho EXIF sem girar a imagem. Ou o driver pode girar a imagem e a miniatura EXIF. Se a imagem jpeg for girada, a orientação no cabeçalho EXIF estará ausente ou 1 (a linha nº 0 é superior e a coluna #0 é esquerda).

Se os aplicativos quiserem girar a imagem para corresponder à orientação do que os usuários veem, os aplicativos devem usar android.view.OrientationEventListener e android.hardware.Camera.CameraInfo. O valor de OrientationEventListener é relativo à orientação natural do dispositivo. CameraInfo.orientation é o ângulo entre a orientação da câmera e a orientação natural do dispositivo. A soma dos dois é o ângulo de rotação para a câmera voltada para trás. A diferença dos dois é o ângulo de rotação para a câmera frontal. Observe que as imagens JPEG de câmeras frontais não são espelhadas como na exibição de visualização.

Por exemplo, suponha que a orientação natural do dispositivo seja retrato. O dispositivo é girado 270 graus no sentido horário, portanto, a orientação do dispositivo é 270. Suponha que um sensor de câmera voltado para trás seja montado na paisagem e o lado superior do sensor da câmera esteja alinhado com a borda direita da tela na orientação natural. Portanto, a orientação da câmera é 90. A rotação deve ser definida como 0 (270 + 90).

O código de referência é o seguinte.

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 documentação para android.hardware.Camera.Parameters.setRotation(int).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a

Confira também

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