Compartilhar via


Camera.SetDisplayOrientation(Int32) Método

Definição

Cuidado

deprecated

Defina a rotação no sentido horário da visualização em graus.

[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

o ângulo em que a imagem será girada no sentido horário. Os valores válidos são 0, 90, 180 e 270.

Atributos

Comentários

Defina a rotação no sentido horário da visualização em graus. Isso afeta os quadros de visualização e a imagem exibida após o instantâneo. Esse método é útil para aplicativos de modo retrato. Observe que a visualização das câmeras frontais é invertida horizontalmente antes da rotação, ou seja, a imagem é refletida ao longo do eixo vertical central do sensor da câmera. Assim, os usuários podem se ver olhando em um espelho.

Isso não afeta a ordem da matriz de bytes passada em PreviewCallback#onPreviewFrame, imagens JPEG ou vídeos gravados. Esse método não pode ser chamado durante a visualização.

Se você quiser fazer com que a imagem da câmera seja exibida na mesma orientação da tela, use o código a seguir.

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 do nível 14 da API, esse método pode ser chamado quando a visualização está ativa.

<b>Nota: </b>Antes do nível 24 da API, o valor padrão para orientação é 0. A partir do nível 24 da API, a orientação padrão será tal que os aplicativos no modo paisagem forçada terão a orientação de visualização correta, que pode ser um padrão de 0 ou 180. Os aplicativos que operam no modo retrato ou permitem alterar a orientação ainda devem chamar esse método após cada alteração de orientação para garantir a exibição de visualização correta em todos os casos.

Documentação Java para android.hardware.Camera.setDisplayOrientation(int).

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

Aplica-se a

Confira também