Kamera adalah suatu set alat yang terintegrasi, digunakan sebagai alat untuk menghasilkan
tampilan gambar dan bisa juga untuk merakam sebuah video, banyak terdapat pada ponsel atau
Smartphone sebagai fitur pelengkap.
kamera ini mempunyai fitur untuk menyimpan file dalam bentuk lain, contohnya pada sistem
operasi Android Lollipop versi 5.0 atau lebih tinggi.Kebanyakan kamera ponsel telah dilengkapi
berbagai macam fungsi dan fitur, seperti fokus otomatis, zoom digital, optikal zoom, dan fitur
lainnya.
Beberapa fitur kamera pada ponsel memiliki kemampuan untuk bekerja sebagai kamera digital dan
mampu untuk merekam video.
Berikut adalah beberapa fitur dan istilah yang terdapat pada kamera smartphone:
1. Fokus Tetap (fixed-focus)
Fokus Tetap atau fixed-focus adalah fitur fokus dasar pada kamera ponsel yang diatur pada
jarak tertentu oleh pengguna dan tidak dapat disesuaikan.
Kamera dengan fokus tetap membatasi kualitas dan jarak pemotretan yang minimum.
Kamera jenis ini biasanya menggunakan lensa yang kecil, sehingga tidak memperhatikan
jarak pengambilan foto terhadap kamera.
2. Fokus Otomatis (auto-focus)
Fokus otomatis atau auto-focus adalah fitur digital yang terdapat pada kamera ponsel,
memungkinkan untuk memperjelas foto atau gambar secara otomatis.
Auto-focus dapat meningkatkan kualitas foto lebih baik dari kamera dengan tipe fixed-
focus dan memungkinkan untuk mengambil gambar pada jarak yang lebih dekat (makro).
Kamera Ponsel jenis ini menggunakan pasif auto-focus disesuaikan kontras dan kondisi
pencahayaan disekitarnya.
3. Makro (Macro)
Makro atau Macro adalah istilah yang digunakan untuk pengambilan gambar jarak dekat
terhadap kamera ponsel. Mode makro memungkinkan pengambilan gambar atau foto dari
jarak yang sangat pendek, misalnya foto close-up, dimana jenis ini biasanya dilengkapi
dengan fitur fokus otomatis (auto-focus).
4. Digital Zoom
Digitial Zoom adalah fitur umum yang terdapat pada kamera ponsel, digunakan untuk
membuat subjek tampak lebih dekat terhadap kamera. Kamera pada ponsel biasanya
memiliki fitur zoom, tetapi yang paling sering yaitu digital zoom.
6. Resolusi (Resolution)
Resolusi atau Resolution adalah suatu istilah kualitas yang mengacu pada jumlah piksel
pada layar atau lensa kamera.
Resolusi yang lebih tinggi artinya mempunyai jumlah pixsel lebih banyak, dimana dapat
memberikan kemampuan untuk menghasilkan visual yang lebih jelas, lebih detail dan lebih
rinci.
7. MP (Megapixel)
MP adalah singkatan dari Megapixel, dimana Mega merupakan satuan juta, Pixel berasal
dari kata pix untuk gambar dan el untuk elemen, yang kemudian disingkat jadi juta-pixel.
Pixel adalah suatu unit untuk mengukur resolusi kualitas gambar, dimana lebih banyak
pixel berarti lebih jelas, lebih rinci, dan lebih detail. Sebuah pixel merupakan bagian
terkecil dari informasi yang terdapat pada suatu gambar.
Sejalan dengan semakin canggihnya perkembangan teknologi saat ini, kamera merupakan
salah satu faktor penentu ketika konsumen akan membeli smartphone.Kenapa kamera
di smartphone sangat penting bagi konsumen saat ini? Salah satu faktor penyebabnya adalah
gaya hidup pengguna saat ini, di mana semakin banyak yang gemar mengambil foto atau video
untuk diunggah ke media sosial. Oleh karena itu, wajar bila mana
produsen smartphone berlomba-lomba mengembangkan perangkat dengan teknologi kamera
terbaik di pasaran lengkap dengan fitur canggih dan ukuran resolusi yang luar biasa.
Seiring persaingan yang ketat antar produsen, dan juga kebutuhan konsumen untuk hasil foto
yang baik, teknologi kamera pun berkembang. Produsen smartphone akhirnya
mengembangkan teknologi kamera, baik dari sisi software maupun hardware.Jumlah kamera
pada perangkat smartphone semakin hari bertambah banyak. Mungkin para produsen
smartphone menganggap jumlah kamera akan mempengaruhi hasil foto.
Jika aplikasi Anda menggunakan kamera, tetapi tidak mengharuskan ketersediaan kamera agar
dapat berfungsi, tetapkan android:required ke false. Dengan demikian, Google Play akan
memungkinkan perangkat tanpa kamera untuk mendownload aplikasi Anda. Selanjutnya, Anda
bertanggung jawab untuk memeriksa ketersediaan kamera saat aplikasi diluncurkan dengan
memanggil hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY). Jika kamera tidak
tersedia, Anda harus menonaktifkan fitur kamera
Cara Android mendelegasikan tindakan ke aplikasi lain adalah dengan memanggil Intent
yang menjelaskan tindakan yang ingin Anda lakukan. Proses ini terdiri dari tiga
bagian: Intent itu sendiri, panggilan untuk memulai Activity eksternal, dan kode untuk
menangani data gambar saat fokus beralih kembali ke aktivitas Anda
Berikut adalah fungsi yang memanggil intent untuk mengambil foto.
val REQUEST_IMAGE_CAPTURE = 1
Mendapatkan thumbnail
Jika pekerjaan mudah seperti mengambil foto bukan merupakan tugas pokok aplikasi
Anda, maka Anda mungkin ingin mengambil kembali gambar dari aplikasi kamera dan
melakukan sesuatu dengannya.
Aplikasi Kamera Android mengenkode foto itu dalam Intent kembalian yang dikirim
ke onActivityResult() sebagai Bitmap kecil di bagian ekstra, pada kunci "data". Kode
berikut mengambil gambar ini dan menampilkannya di ImageView
Aplikasi Kamera Android menyimpan foto ukuran penuh jika Anda memberikannya file
untuk disimpan ke dalamnya. Anda harus memberikan nama file yang sepenuhnya
memenuhi syarat di mana aplikasi kamera akan menyimpan foto itu.
Secara umum, semua foto yang diambil pengguna dengan kamera perangkat akan disimpan
di penyimpanan eksternal publik pada perangkat sehingga dapat diakses oleh semua
aplikasi. Direktori yang sesuai untuk foto bersama disediakan
oleh getExternalStoragePublicDirectory() dengan argumen DIRECTORY_PICTURES.
Karena direktori yang disediakan oleh metode ini digunakan bersama dengan semua
aplikasi, akses baca dan tulis ke direktori tersebut memerlukan, secara berturut-turut,
izin READ_EXTERNAL_STORAGE dan WRITE_EXTERNAL_STORAGE. Izin tulis
secara implisit memperbolehkan akses baca, jadi jika Anda perlu menulis ke penyimpanan
eksternal, Anda hanya perlu meminta satu izin:
<manifest ...>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
Namun, jika ingin foto tetap bersifat pribadi hanya untuk aplikasi Anda, Anda dapat
menggunakan direktori yang disediakan oleh getExternalFilesDir(). Pada Android 4.3 dan
yang lebih lama, akses tulis ke direktori ini juga memerlukan
izin WRITE_EXTERNAL_STORAGE Mulai dari Android 4.4, izin ini tidak lagi
diperlukan karena direktori tidak dapat diakses oleh aplikasi lain, sehingga Anda dapat
mendeklarasikan bahwa izin hanya perlu diminta pada versi Android yang lebih lama
dengan menambahkan atribut maxSdkVersion:
<manifest ...>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
...
</manifest>
Setelah memutuskan direktori untuk file, Anda harus membuat nama file yang tahan
bentrok. Anda juga dapat menyimpan jalur dalam variabel anggota untuk digunakan nanti.
Berikut ini contoh solusi dalam metode yang menampilkan nama file unik untuk sebuah
foto baru yang menggunakan stempel tanggal-waktu:
@Throws(IOException::class)
private fun createImageFile(): File {
// Create an image file name
val timeStamp: String =
SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
val storageDir: File = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
return File.createTempFile(
"JPEG_${timeStamp}_", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
).apply {
// Save a file: path for use with ACTION_VIEW intents
currentPhotoPath = absolutePath
}
}
Dengan ketersediaan metode ini untuk membuat file bagi foto, sekarang Anda dapat
membuat dan memanggil Intent seperti ini:
val REQUEST_TAKE_PHOTO = 1
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
...
</application>
string otoritas cocok dengan argumen kedua ke getUriForFile(Context, String, File). Di bagian
metadata definisi penyedia, Anda dapat melihat bahwa penyedia mengharapkan jalur yang
memenuhi syarat untuk dikonfigurasi dalam file resource khusus, res/xml/file_paths.xml. Berikut
adalah konten yang diperlukan untuk contoh khusus ini:
Komponen jalur ini bersesuaian dengan jalur yang ditampilkan oleh getExternalFilesDir() saat
dipanggil dengan Environment.DIRECTORY_PICTURES. Pastikan untuk
mengganti com.example.package.name dengan nama paket sebenarnya untuk aplikasi Anda.
Selain itu, baca dokumentasi FileProvider untuk mendapatkan penjelasan lengkap tentang
penentu jalur selain external-path yang dapat Anda gunakan.
Menambahkan foto ke galeri
Saat membuat foto melalui intent, Anda harus mengetahui lokasi gambar karena Anda
sudah menyatakan di mana akan menyimpannya. Bagi orang lain, mungkin cara termudah
untuk menemukan foto Anda adalah dengan mengaksesnya dari Penyedia Media pada
sistem.
Contoh metode berikut menunjukkan cara memanggil pemindai media sistem agar
menambahkan foto Anda ke database Penyedia Media, sehingga foto akan tersedia di
aplikasi Galeri Android dan aplikasi lainnya.
Mengelola banyak foto ukuran penuh bukanlah hal yang mudah dengan memori yang
terbatas. Jika aplikasi Anda kehabisan memori setelah menampilkan beberapa gambar
saja, Anda dapat mengurangi penggunaan heap dinamis secara dramatis dengan
memperluas JPEG ke array memori yang telah diskalakan agar sesuai dengan ukuran
tampilan tujuan. Contoh metode berikut menunjukkan teknik ini.
Pendeklarasian kamera
Sebelum memulai pengembangan pada aplikasi anda dengan API kamera,anda harus
memastikan manifest anda deklarasi yang sesuai untuk penggunaan perangkat keras
kamera dan fitur terkait lainnya.
API kamera
Framework Android mencakup dukungan untuk berbagai kamera dan fitur kamera yang
tersedia di perangkat, yang memungkinkan Anda untuk mengambil gambar dan video di
aplikasi. Dokumen ini membahas pendekatan cepat dan sederhana untuk pengambilan
gambar dan video, serta menguraikan pendekatan lanjutan untuk menciptakan pengalaman
kamera kustom bagi pengguna Anda
Dasar-dasar
Framework Android mendukung pengambilan gambar dan video
melalui android.hardware.camera2API atau Intentkamera. Berikut adalah class yang
relevan
android.hardware.camera2
Paket ini adalah API utama untuk mengontrol kamera perangkat. Dapat digunakan untuk
mengambil gambar atau video saat membuat aplikasi kamera.
Camera
Class ini adalah API lebih lama yang tidak digunakan lagi untuk mengontrol kamera
perangkat.
SurfaceView
Class ini digunakan untuk menyajikan pratinjau kamera langsung kepada pengguna.
MediaRecorder
Intent
Jenis tindakan
intent MediaStore.ACTION_IMAGE_CAPTUREatau MediaStore.ACTION_VIDEO_C
APTURE dapat digunakan untuk mengambil gambar atau video tanpa langsung
menggunakan objek Camera.
Deklarasi manifes
Sebelum memulai pengembangan pada aplikasi dengan Camera API, pastikan manifes
Anda memiliki deklarasi yang sesuai untuk mengizinkan penggunaan hardware kamera
dan fitur terkait lainnya.
Izin Kamera - Aplikasi Anda harus meminta izin untuk menggunakan kamera perangkat.
Fitur Kamera - Aplikasi Anda juga harus mendeklarasikan penggunaan fitur kamera,
misalnya:
Jika aplikasi Anda secara khusus tidak membutuhkan kamera menggunakan deklarasi
manifes, Anda harus memeriksa untuk melihat apakah kamera tersedia saat runtime. Untuk
melakukan pemeriksaan ini, gunakan metode PackageManager.hasSystemFeature(),
seperti yang ditunjukkan pada contoh kode di bawah ini:
Mengakses kamera
Jika telah menentukan bahwa perangkat yang menjalankan aplikasi Anda memiliki
kamera, Anda harus meminta untuk mengaksesnya dengan mendapatkan
instance Camera (kecuali jika Anda menggunakan intent untuk mengakses kamera).
Untuk mengakses kamera utama, gunakan metode Camera.open() dan pastikan untuk
menangkap pengecualian, seperti yang ditunjukkan pada kode di bawah ini:
Hasilnya akan terlihat imageView dan button dengan nama capture dan galeri seperti pada
gambar di bawah ini.klik button capture untuk melakukan pengaktifkan kamera smartpone.
Maka kamera smartphone dapat digunakan untuk melakukan capture atau mengambil
gambar,misalkan untuk melakukan selfie atau foto bersama,kemudian klik pada tanda ceklis
atau centang dibagian pojok kanan.
Maka hasilnya akan terlihat pada aplikasi kamera yang telah anda buat pada bagian imageview.
Referensi: https://developer.android.com/training/camera/photobasics