L'anteprima di Android Camera2 è allungata
Sto cercando di imparare l'API Camera2 e ho creato una semplice app per fotocamera solo per scattare foto, ma il problema che sto affrontando è che l'anteprima è allungata per alcune risoluzioni. Ho esaminato una serie di post diversi e tutti hanno suggerito che le mie proporzioni potrebbero essere sbagliate, ma ho usato AutoFitTextureView consigliato da Google con le proporzioni corrette, ma la mia anteprima è allungata. Ho scaricato alcune app per fotocamere open source dal Playstore e molte di esse hanno anche avuto lo stesso problema con la mia fotocamera anteriore (TRANNE FOTOCAMERA APERTA) ma la parte divertente è che ho usato la mia stessa app su un altro dispositivo e l'anteprima era assolutamente perfetta. Alla fine ho deciso di testare la mia app con diverse risoluzioni e osservare i risultati, ma non sono riuscito a trovare alcun modello, qualcuno può aiutarmi a capirlo ???
my device display size is 720x1280
Front camera results:
SurfaceTexture AutoFitTextureView Result
buffer size size
2576x1932 720x960 Normal
2560x1440 720x1280 Normal
2048x1536 720x960 Normal
2048x1152 720x1280 Normal
1920x1920 720x720 Normal
1920x1080 720x1280 Normal
1440x1080 720x960 Horizontally Stretched
1280x720 720x1280 Horizontally Stretched
1072x1072 720x720 Normal
960x720 720x960 Normal
720x480 720x1080 Horizontally Stretched
640x480 720x960 Horizontally Stretched
352x288 720x880 Normal
320x240 720x960 Normal
256x144 720x1280 Horizontally Stretched
176x144 720x880 Normal
Risposte
Camera2 è molto difficile da imparare come principiante. Prendi in considerazione l'utilizzo di librerie di fotocamere che eseguono la maggior parte delle parti. Eccone uno che è il migliore che ho trovato:https://camerakit.io/docs. È davvero facile e si prenderà cura di tutti i problemi che stai affrontando in questo momento.
(Nota che non possiedo questo progetto e non lo sto promuovendo comunque. Ho provato l'API camera2 ed è davvero difficile, motivo per cui ho suggerito una soluzione più semplice.
In realtà è possibile che si tratti di un bug del dispositivo: l'implementazione della fotocamera viene ridimensionata in modo errato rispetto alle dimensioni complete del sensore. Succede più comunemente a dimensioni insolite che la maggior parte delle app non utilizza.
Nel tuo caso, è probabile che 1440x1080 venga trattato come 1920x1080 da una parte della pipeline della telecamera, con conseguente allungamento. A volte questo può essere "risolto" aggiungendo un secondo output (JPEG per esempio) con una risoluzione diversa (o anche la stessa, a volte).
Ovviamente, è ancora possibile che tu abbia un bug logico nel tuo codice (o in AutoFitTextureView). Ma per quelli è difficile dare consigli utili: si tratta di controllare tutto il layout e ridimensionare la matematica passo dopo passo.
Puoi anche provare la libreria ufficiale di supporto per le fotocamere di Google, CameraX . È in versione beta e funziona bene per casi d'uso di base come anteprima, acquisizione di immagini fisse e analisi delle immagini.