Freigeben über


Camera.SetDisplayOrientation(Int32) Methode

Definition

Achtung

deprecated

Legen Sie die Drehung im Uhrzeigersinn der Vorschauanzeige in Grad fest.

[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

Parameter

degrees
Int32

der Winkel, in dem das Bild im Uhrzeigersinn gedreht wird. Gültige Werte sind 0, 90, 180 und 270.

Attribute

Hinweise

Legen Sie die Drehung im Uhrzeigersinn der Vorschauanzeige in Grad fest. Dies wirkt sich auf die Vorschauframes und das Bild aus, das nach der Momentaufnahme angezeigt wird. Diese Methode eignet sich für Hochformatanwendungen. Beachten Sie, dass die Vorschauanzeige von frontseitigen Kameras horizontal vor der Drehung gedreht wird, d. h. das Bild wird entlang der zentralen vertikalen Achse des Kamerasensors reflektiert. So können sich die Benutzer selbst als Spiegel betrachten.

Dies wirkt sich nicht auf die Reihenfolge des Bytearrays aus, das in PreviewCallback#onPreviewFrameJPEG-Bildern oder aufgezeichneten Videos übergeben wird. Diese Methode darf während der Vorschau nicht aufgerufen werden.

Wenn Sie das Kamerabild in der gleichen Ausrichtung wie die Anzeige anzeigen möchten, können Sie den folgenden Code verwenden.

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);
            }

Ab API-Ebene 14 kann diese Methode aufgerufen werden, wenn die Vorschau aktiv ist.

<b>Hinweis: </b>Vor API-Ebene 24 lautet der Standardwert für die Ausrichtung 0. Ab API-Ebene 24 ist die Standardausrichtung so, dass Anwendungen im Erzwungenen Querformat eine korrekte Vorschauausrichtung aufweisen, die entweder die Standardeinstellung 0 oder 180 sein kann. Anwendungen, die im Hochformatmodus arbeiten oder die Ausrichtung ändern können, müssen diese Methode nach jeder Ausrichtungsänderung weiterhin aufrufen, um die korrekte Vorschauanzeige in allen Fällen sicherzustellen.

Java-Dokumentation für android.hardware.Camera.setDisplayOrientation(int).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

Weitere Informationen