Nota:questa pagina fa riferimento al pacchetto Camera2. A meno che la tua app non richieda funzionalità specifiche di basso livello di Camera2, ti consigliamo di utilizzare CameraX. Sia CameraX che Camera2 supportano Android 5.0 (livello API 21) e versioni successive.
Gli sviluppatori di fotocamere potrebbero riscontrare difficoltà uniche quando lavorano su applicazioni per fotocamere che funzionano su dispositivi pieghevoli. A differenza degli smartphone, in cui spesso sono valide diverse ipotesi relative all'orientamento del display, all'orientamento della fotocamera e alla sua posizione, i dispositivi pieghevoli possono avere fattori di forma, layout del display e combinazioni di fotocamere diversi.
Gli smartphone hanno in genere fotocamere con orientamento verticale corrispondente al display. Tuttavia, questo potrebbe non essere vero per alcuni stati pieghevoli. Uno schermo aperto potrebbe avere un sensore con orientamento verticale e un altro con orientamento orizzontale.
Se l'applicazione della fotocamera utilizza un SurfaceTexture
o una pipeline di rendering personalizzata, tieni presente l'orientamento del sensore della fotocamera.
In questo modo, i contenuti visualizzati sono sempre verticali e i pixel rimangono quadrati, evitando lo stretching in direzione orizzontale o verticale.
Questa guida fornisce informazioni su cosa devono considerare gli sviluppatori di Camera2 e i passaggi per regolare il rendering dell'anteprima della fotocamera per diversi stati dei dispositivi pieghevoli.
In che modo i passaggi di stato del dispositivo influiscono sulle videocamere
I dispositivi pieghevoli possono includere:
- Due o più display fisici
- Diversi dispositivi videocamera fisici
Questi dispositivi possono diventare attivi a seconda dello stato del dispositivo. Per semplificare la gestione dello stato del dispositivo, alcuni dispositivi implementano una fotocamera logica composta da due o più sensori fisici.
Se gli sviluppatori aprono e attivano lo streaming di anteprime su un dispositivo di fotocamera logico di questo tipo, la fotocamera passa automaticamente da un dispositivo fisico all'altro in risposta a stati di chiusura specifici.
Ad esempio, considera un dispositivo pieghevole con due display:
- Uno schermo verticale normale in stato chiuso con una fotocamera anteriore "esterna" fisica in orientamento verticale.
- Uno schermo pieghevole abilitato nello stato aperto con una fotocamera anteriore fisica "interna" con orientamento orizzontale rispetto al display aperto.
Quando l'utente chiude o apre il dispositivo mentre un'applicazione trasmette in streaming dalla fotocamera logica anteriore, l'implementazione del dispositivo potrebbe passare dai sensori fisici interni a quelli esterni in risposta a ogni passaggio di stato del dispositivo.
Il passaggio da un display all'altro potrebbe richiedere all'applicazione di modificare la sua interfaccia utente.
Oltre a eventuali modifiche all'interfaccia utente, gli sviluppatori potrebbero dover considerare la possibilità di modificare il modo in cui viene visualizzato il rendering dell'anteprima della videocamera rispetto alla videocamera fisica attiva.
Interruttori fisici del dispositivo della fotocamera
L'interfaccia del dispositivo della videocamera logica fornisce le API necessarie per gestire gli switch della videocamera fisica. Gli sviluppatori devono monitorare il valore dell'ID fisico attivo.
Sui dispositivi pieghevoli, il risultato di acquisizione dell'ID fisico attivo può cambiare in risposta a diversi switch di stato del dispositivo pieghevole, come apertura e chiusura.
In questi casi, gli sviluppatori devono utilizzare l'ID fisico attivo corrente e controllare le caratteristiche della fotocamera corrispondenti.
Le due caratteristiche più importanti della fotocamera che possono potenzialmente cambiare e influire sul rendering dell'anteprima sono l'orientamento del sensore e l'orientamento dell'obiettivo.
Se la pipeline di rendering dell'anteprima dell'applicazione dipende da parametri della camera statica per calcolare la matrice di trasformazione finale, assicurati di passare i valori correnti e di aggiornare le trasformazioni grafiche.
Per una comprensione più approfondita delle pipeline di anteprima della fotocamera e di come vengono calcolate le trasformazioni, consulta la guida all'anteprima della fotocamera.
Ulteriori ipotesi non valide
La memorizzazione nella cache dei valori delle caratteristiche della fotocamera non è consigliata.
Non puoi presumere che le caratteristiche della fotocamera rimangano costanti, poiché possono cambiare quando il dispositivo è chiuso o aperto. Per questo motivo, non devi memorizzare e riutilizzare le caratteristiche della fotocamera. Controlla invece ogni volta le caratteristiche della videocamera.
Prendiamo il caso in cui un'applicazione della fotocamera venga avviata sul display anteriore esterno e memorizzi nella cache le caratteristiche attuali delle fotocamere anteriore e posteriore. Se l'applicazione si riavvia sul display interno, il sensore fisico anteriore attivo potrebbe avere un orientamento diverso, attivando potenzialmente effetti collaterali indesiderati di visualizzazione della preview.