Camera.SetDisplayOrientation(Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.