Pratinjau Android Camera2 diperpanjang
Saya mencoba mempelajari Camera2 API dan saya telah membangun aplikasi kamera sederhana hanya untuk mengambil gambar tetapi masalah yang saya hadapi adalah pratinjau yang diperluas untuk beberapa resolusi. Saya memeriksa sejumlah posting yang berbeda dan semuanya menyarankan bahwa rasio aspek saya mungkin salah tetapi saya telah menggunakan AutoFitTextureView yang direkomendasikan Google dengan rasio aspek yang benar masih pratinjau saya melebar. Saya mengunduh beberapa aplikasi kamera sumber terbuka dari playstore dan banyak dari mereka juga memiliki masalah yang sama dengan kamera depan saya (KECUALI KAMERA TERBUKA) tetapi bagian lucunya adalah saya menggunakan aplikasi yang sama di perangkat lain dan pratinjau benar-benar sempurna. Jadi akhirnya saya memutuskan untuk menguji aplikasi saya dengan resolusi yang berbeda dan mengamati hasilnya tetapi saya tidak dapat menemukan pola apa pun, adakah yang bisa membantu saya untuk memahaminya ???
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
Jawaban
Camera2 sangat sulit dipelajari sebagai pemula. Pertimbangkan untuk menggunakan perpustakaan kamera yang melakukan sebagian besar pekerjaan. Ini salah satu yang terbaik yang saya temukan:https://camerakit.io/docs. Ini sangat mudah dan akan mengatasi semua masalah yang Anda hadapi saat ini.
(Perhatikan bahwa saya tidak memiliki proyek ini dan saya tidak mempromosikannya dengan cara apapun. Saya telah mencoba camera2 API dan ini sangat sulit, itulah sebabnya saya menyarankan solusi yang lebih mudah.
Sebenarnya mungkin ini adalah bug perangkat - implementasi kamera salah penskalaan dari ukuran sensor penuh. Ini lebih sering terjadi pada ukuran tidak biasa yang tidak digunakan sebagian besar aplikasi.
Dalam kasus Anda, mungkin 1440x1080 diperlakukan seperti 1920x1080 oleh beberapa bagian dari pipa kamera, menghasilkan peregangan. Terkadang ini dapat 'diperbaiki' dengan menambahkan output kedua (JPEG misalnya) pada resolusi yang berbeda (atau bahkan yang sama, terkadang).
Tentu saja, Anda masih mungkin memiliki bug logika dalam kode Anda (atau di AutoFitTextureView). Tetapi itu sulit untuk memberikan saran yang berguna - ini masalah memeriksa semua tata letak dan menskalakan matematika selangkah demi selangkah.
Anda juga dapat mencoba pustaka dukungan kamera resmi Google, CameraX . Ini dalam versi beta, dan berfungsi dengan baik untuk kasus penggunaan dasar seperti pratinjau, pengambilan gambar diam, dan analisis gambar.