API camera2 baru membingungkan saya. Saya ingin mengembangkan aplikasi (untuk Android API 10 - 21) yang menggunakan kamera perangkat. Seperti yang dinyatakan di sini , saya harus menggunakan API "Kamera".
Namun, ketika saya mencoba untuk menambahkan "Camera" API (android.hardware.Camera) ke fitur pengguna manifes, itu ditandai sebagai usang . Di sisi lain, saya tidak dapat mengubahnya ke API "camera2" (android.hardware.camera2) karena hanya kompatibel dengan Android API 21+ (Android 5 - Lollipop) - Akan menautkannya juga, tetapi saya hanya dapat menambahkan 2 tautan.
Saya tidak hanya ingin aplikasi saya berjalan di Android versi lama, tetapi juga yang terbaru ...
Masukkan semua metode dari kamera yang Anda butuhkan di antarmuka dan kemudian buat contoh kamera seperti ini
Dengan cara ini Anda akan memiliki segalanya berpisah dan itu akan membuat hidup Anda jauh lebih mudah.
Kata nasihat - hidup dengan camera2 tidak terlalu bagus. Vendor masih membuat implementasi omong kosong dan karenanya Anda harus menambahkan banyak kondisi dan solusi.
Contoh 1 - S6 melaporkan bahwa itu tidak mendukung flash :) Contoh 2 - Perangkat LG melaporkan kembali daftar ukuran gambar yang didukung - namun tidak semuanya benar-benar didukung !!
sumber
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraID); if (characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)...
dan memilih API lama jika itu benar.Untuk mendukung api yang Anda inginkan, gunakan kode di bawah ini. Cukup tentukan nama yang sesuai tingkat api terkait. Misalnya, API 21 adalah LOLLIPOP, dan API 15 adalah ICE_CREAM_SANDWICH_MR1.
sumber
Meskipun, apa yang direkomendasikan Google menggunakan Camera2 Api> = 21, tetapi Anda bisa memiliki masalah dengan pengaturan manual.
Ketika Anda perlu menerapkan aplikasi untuk mengambil foto dengan Mode Pengaturan Otomatis, itu akan berfungsi dengan baik. Tapi! Jika perlu membuat aplikasi dengan penerapan Mode Pengaturan Manual, untuk perangkat yang memiliki API> = 21, pertama, perlu memeriksa TINGKAT KERAS HARDWARE yang didukung:
Pilih kamera (Depan, Wajah), dapatkan karakteristiknya dan periksa HARDWARE LEVEL.
CameraCharacteristics mewakili level yang didukung berikutnya: LIMITED, FULL, LEGACY, LEVEL_3, EXTERNAL.
Pada level tinggi, levelnya adalah:
Perangkat LEGACY beroperasi dalam mode kompatibilitas ke belakang untuk perangkat Android yang lebih lama, dan memiliki kemampuan yang sangat terbatas.
Perangkat TERBATAS mewakili set fitur dasar, dan juga dapat mencakup kemampuan tambahan yang merupakan subset dari FULL.
Perangkat FULL juga mendukung kontrol manual per-frame sensor, lampu kilat, lensa dan pengaturan pasca-pemrosesan, dan pengambilan gambar dengan kecepatan tinggi.
Perangkat LEVEL_3 juga mendukung pemrosesan ulang YUV dan pengambilan gambar RAW, bersama dengan konfigurasi aliran output tambahan.
Jika Anda mendapat level supprot LEGACY , Anda harus menggunakan Camera Api lama .
sumber
Gunakan anotasi dukungan
untuk menghindari memeriksa
sumber
Silakan baca tautan Dukungan Versi Kamera Mereka menyatakan bahwa ....
Camera API1
Android 5.0 Camera API1 sudah usang, yang terus dihapus karena pengembangan platform baru berfokus pada Camera API2. Namun, periode penghentian akan lama, dan rilis Android akan terus mendukung aplikasi Camera API1 selama beberapa waktu. Secara khusus, dukungan berlanjut untuk:
sumber
Saya menemukan opsi terbaik adalah membuat dua aktivitas. Gunakan cara umum untuk memeriksa API perangkat saat ini
Dengan cara ini saya tidak perlu banyak kebingungan ketika melihat kembali kode. Kode ini mudah dimodifikasi karena terpisah.
sumber