Partager via


Camera.SetDisplayOrientation(Int32) Méthode

Définition

Attention

deprecated

Définissez la rotation dans le sens des aiguilles d’une montre de l’affichage en degrés.

[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

Paramètres

degrees
Int32

angle de rotation de l’image dans le sens des aiguilles d’une montre. Les valeurs valides sont 0, 90, 180 et 270.

Attributs

Remarques

Définissez la rotation dans le sens des aiguilles d’une montre de l’affichage en degrés. Cela affecte les images d’aperçu et l’image affichée après l’instantané. Cette méthode est utile pour les applications en mode portrait. Notez que l’affichage d’aperçu des caméras frontales est retourné horizontalement avant la rotation, autrement dit, l’image est reflétée le long de l’axe vertical central du capteur de la caméra. Ainsi, les utilisateurs peuvent se voir comme regardant dans un miroir.

Cela n’affecte pas l’ordre du tableau d’octets transmis PreviewCallback#onPreviewFrame, les images JPEG ou les vidéos enregistrées. Cette méthode n’est pas autorisée à être appelée pendant la préversion.

Si vous souhaitez afficher l’image de l’appareil photo dans la même orientation que l’affichage, vous pouvez utiliser le code suivant.

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

À partir du niveau 14 de l’API, cette méthode peut être appelée lorsque l’aperçu est actif.

<b>Remarque : </b>Avant le niveau d’API 24, la valeur par défaut pour l’orientation est 0. À compter du niveau 24 de l’API, l’orientation par défaut sera telle que les applications en mode paysage forcé auront une orientation d’aperçu correcte, qui peut être une valeur par défaut de 0 ou 180. Les applications qui fonctionnent en mode portrait ou autorisent la modification de l’orientation doivent toujours appeler cette méthode après chaque modification d’orientation pour garantir l’affichage correct de l’aperçu dans tous les cas.

Documentation Java pour android.hardware.Camera.setDisplayOrientation(int).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à

Voir aussi