Condividi tramite


Camera.SetDisplayOrientation(Int32) Metodo

Definizione

Attenzione

deprecated

Impostare la rotazione in senso orario della visualizzazione dell'anteprima in gradi.

[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

Parametri

degrees
Int32

angolo che l'immagine verrà ruotata in senso orario. I valori validi sono 0, 90, 180 e 270.

Attributi

Commenti

Impostare la rotazione in senso orario della visualizzazione dell'anteprima in gradi. Ciò influisce sui fotogrammi di anteprima e sull'immagine visualizzata dopo lo snapshot. Questo metodo è utile per le applicazioni in modalità verticale. Si noti che la visualizzazione in anteprima delle fotocamere frontali viene capovolta orizzontalmente prima della rotazione, ovvero l'immagine viene riflessa lungo l'asse verticale centrale del sensore della fotocamera. Gli utenti possono quindi vedere se stessi guardando uno specchio.

Ciò non influisce sull'ordine della matrice di byte passata in PreviewCallback#onPreviewFrame, immagini JPEG o video registrati. Questo metodo non può essere chiamato durante l'anteprima.

Se vuoi mostrare l'immagine della fotocamera nello stesso orientamento dello schermo, puoi usare il codice seguente.

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 partire dal livello API 14, questo metodo può essere chiamato quando l'anteprima è attiva.

<b Nota: </b>>Prima del livello API 24, il valore predefinito per l'orientamento è 0. A partire dal livello API 24, l'orientamento predefinito sarà tale che le applicazioni in modalità orizzontale forzato avranno un orientamento di anteprima corretto, che può essere predefinito 0 o 180. Le applicazioni che operano in modalità verticale o consentono di modificare l'orientamento devono comunque chiamare questo metodo dopo ogni modifica dell'orientamento per garantire la visualizzazione dell'anteprima corretta in tutti i casi.

Documentazione java per android.hardware.Camera.setDisplayOrientation(int).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a

Vedi anche