Catatan: Halaman ini merujuk ke paket Camera2. Kecuali jika aplikasi Anda memerlukan fitur tingkat rendah tertentu dari Camera2, sebaiknya gunakan CameraX. CameraX dan Camera2 mendukung Android 5.0 (level API 21) dan versi yang lebih baru.
Developer kamera mungkin mengalami tantangan unik saat mengerjakan aplikasi kamera yang berjalan di perangkat foldable. Tidak seperti smartphone, yang memiliki beberapa asumsi terkait orientasi layar, orientasi kamera, dan menghadap yang sering kali valid, perangkat foldable dapat memiliki berbagai faktor bentuk, tata letak layar, dan kombinasi kamera.
Smartphone biasanya memiliki kamera dengan orientasi potret yang cocok dengan layar. Namun, hal ini mungkin tidak berlaku untuk status perangkat foldable tertentu. Layar yang dibentangkan mungkin memiliki satu sensor dengan orientasi potret dan sensor lain dengan orientasi lanskap.
Jika aplikasi kamera Anda menggunakan SurfaceTexture
atau
pipeline rendering kustom, perhatikan orientasi sensor kamera.
Hal ini memastikan bahwa konten yang dirender selalu tegak secara fisik dan piksel tetap persegi, sehingga menghindari peregangan dalam arah horizontal atau vertikal.
Panduan ini memberikan informasi tentang hal-hal yang perlu dipertimbangkan developer Camera2 dan langkah-langkah untuk menyesuaikan rendering pratinjau kamera untuk berbagai status perangkat foldable.
Pengaruh tombol status perangkat terhadap kamera
Perangkat foldable dapat mencakup:
- Dua layar fisik atau lebih
- Beberapa perangkat kamera fisik
Perangkat ini dapat menjadi aktif bergantung pada status perangkat. Untuk menyederhanakan penanganan status perangkat, perangkat tertentu menerapkan kamera logis yang terdiri dari dua sensor fisik atau lebih.
Jika developer membuka dan mengaktifkan streaming pratinjau di perangkat kamera logis tersebut, kamera akan otomatis beralih di antara perangkat fisik sebagai respons terhadap status lipat tertentu.
Misalnya, pertimbangkan perangkat foldable dengan dua layar:
- Layar potret biasa dalam status terlipat dengan kamera depan 'luar' fisik dalam orientasi potret.
- Layar foldable diaktifkan dalam status terbentang dengan kamera fisik depan 'dalam' dengan orientasi lanskap relatif terhadap layar yang terbentang.
Saat pengguna melipat atau membentangkan perangkat saat aplikasi melakukan streaming dari kamera logis depan, implementasi perangkat dapat beralih antara sensor fisik dalam dan luar sebagai respons terhadap setiap tombol status perangkat.
Tombol tampilan mungkin mengharuskan aplikasi menyesuaikan UI-nya.
Bersama dengan penyesuaian UI, developer mungkin perlu mempertimbangkan untuk menyesuaikan cara pratinjau kamera dirender sehubungan dengan kamera fisik yang aktif.
Tombol perangkat kamera fisik
Antarmuka perangkat kamera logis menyediakan API yang diperlukan untuk menangani tombol kamera fisik. Developer harus memantau nilai ID fisik aktif.
Pada perangkat foldable, hasil pengambilan ID fisik aktif dapat berubah sebagai respons terhadap berbagai tombol status foldable seperti melipat dan membentangkan.
Dalam peristiwa tersebut, developer harus menggunakan ID fisik aktif saat ini dan memeriksa karakteristik kamera yang sesuai.
Dua karakteristik kamera yang paling penting yang berpotensi berubah dan memengaruhi rendering pratinjau adalah orientasi sensor dan arah lensa.
Jika pipeline rendering pratinjau aplikasi Anda bergantung pada parameter kamera statis untuk menghitung matriks transformasi akhirnya, pastikan Anda meneruskan nilai saat ini dan memperbarui transformasi grafis.
Untuk pemahaman yang lebih mendalam tentang pipeline pratinjau kamera dan cara penghitungan transformasi, lihat panduan pratinjau kamera.
Asumsi tidak valid tambahan
Penyimpanan dalam cache nilai karakteristik kamera tidak direkomendasikan.
Anda tidak dapat mengasumsikan bahwa karakteristik kamera akan tetap konstan, karena karakteristik tersebut dapat berubah saat perangkat dilipat atau dibentangkan. Oleh karena itu, Anda tidak boleh menyimpan dan menggunakan kembali karakteristik kamera. Sebagai gantinya, periksa karakteristik kamera setiap kali.
Pertimbangkan kasus saat aplikasi kamera dimulai di layar depan bagian luar dan meng-cache karakteristik kamera depan dan belakang saat ini. Jika aplikasi dimulai ulang di layar dalam, sensor fisik depan yang aktif mungkin memiliki orientasi yang berbeda, yang berpotensi memicu efek samping render pratinjau yang tidak diinginkan.