Anda di halaman 1dari 18

MEMAHAMI KEMERA DAN MULTIMEDIA PADA SMARTPHONE

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.

5. OIS (Optical Image Stabilization)


OIS adalah singkatan atau kepanjangan dari Optical Image Stabilizer atau Optical Image
Stabilization. Ini merupakan mekanisme yang digunakan dalam kamera atau video kamera
yang memiliki kemampuan untuk menstabilkan gambar yang ditampilkan atau direkam
dengan memvariasikan jalur optik ke sensor.

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.

 Perkembangan kamera smartphone

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.

 Camera yang digunakan pada aplikasi mobile


Android menyediakan akses penuh ke perangkat keras kamera sehingga anda dapat
membangun berbagai aplikasi berbasis kamera atau visi.jika anda membutuhkan cara bagi
pengguna untuk mengambil foto dan menampilkan kembali ke anda.kerangka android
mencakup untuk dukungan berbagai kamera dan fitur kamera yang tersedia ke
parangkat,memungkinkan anda untuk mengambil gambar dan vidio melalui aplikasi anda.

 Meminta fitur kamera


<manifest ... >
<uses-feature android:name="android.hardware.camera"
android:required="true" />
...
</manifest>

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

 Mengambil foto dengan aplikasi 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

private fun dispatchTakePictureIntent() {


Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
takePictureIntent.resolveActivity(packageManager)?.also {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
}
}
}

Perhatikan bahwa metode startActivityForResult()dilindungi oleh kondisi yang


memanggil resolveActivity() yang menampilkan komponen aktivitas pertama yang dapat
menangani intent. Pemeriksaan ini merupakan langkah penting karena jika Anda
memanggil startActivityForResult() menggunakan intent yang tidak dapat ditangani
aplikasi mana pun, aplikasi Anda akan mengalami error. Jadi, selama hasilnya bukan null,
intent tersebut aman digunakan.

 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

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {


if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode ==
RESULT_OK) {
val imageBitmap = data.extras.get("data") as Bitmap
imageView.setImageBitmap(imageBitmap)
}

 Menyimpan foto ukuran penuh

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:

var currentPhotoPath: String

@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

private fun dispatchTakePictureIntent() {


Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
// Ensure that there's a camera activity to handle the intent
takePictureIntent.resolveActivity(packageManager)?.also {
// Create the File where the photo should go
val photoFile: File? = try {
createImageFile()
} catch (ex: IOException) {
// Error occurred while creating the File
...
null
}
// Continue only if the File was successfully created
photoFile?.also {
val photoURI: Uri = FileProvider.getUriForFile(
this,
"com.example.android.fileprovider",
it
)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO)
}
}
}
}
Sekarang, Anda perlu mengonfigurasi FileProvider. Dalam manifes aplikasi, tambahkan
penyedia ke aplikasi Anda:

<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:

<?xml version="1.0" encoding="utf-8"?>


<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images"
path="Android/data/com.example.package.name/files/Pictures" />
</paths>

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.

private fun galleryAddPic() {


Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).also { mediaScanIntent
->
val f = File(currentPhotoPath)
mediaScanIntent.data = Uri.fromFile(f)
sendBroadcast(mediaScanIntent)
}
}

 Mendekode foto yang diskalakan

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.

private fun setPic() {


// Get the dimensions of the View
val targetW: Int = imageView.width
val targetH: Int = imageView.height

val bmOptions = BitmapFactory.Options().apply {


// Get the dimensions of the bitmap
inJustDecodeBounds = true

val photoW: Int = outWidth


val photoH: Int = outHeight

// Determine how much to scale down the image


val scaleFactor: Int = Math.min(photoW / targetW, photoH / targetH)
// Decode the image file into a Bitmap sized to fill the View
inJustDecodeBounds = false
inSampleSize = scaleFactor
inPurgeable = true
}
BitmapFactory.decodeFile(currentPhotoPath, bmOptions)?.also { bitmap ->
imageView.setImageBitmap(bitmap)
}
}

 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

Class ini digunakan untuk merekam video dari kamera.

 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.

<uses-permission android:name="android.permission.CAMERA" />

 Fitur Kamera - Aplikasi Anda juga harus mendeklarasikan penggunaan fitur kamera,
misalnya:

<uses-feature android:name="android.hardware.camera" />

 Mendeteksi hardware kamera

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:

/** Check if this device has a camera */


private fun checkCameraHardware(context: Context): Boolean {
if
(context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA))
{
// this device has a camera
return true
} else {
// no camera on this device
return false
}}
Perangkat Android dapat memiliki beberapa kamera, misalnya kamera belakang untuk
fotografi dan kamera depan untuk panggilan video. Android 2.3 (API Level 9) dan yang
lebih baru memungkinkan Anda memeriksa jumlah kamera yang tersedia di perangkat
menggunakan metode Camera.getNumberOfCameras().

 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:

/** A safe way to get an instance of the Camera object. */


fun getCameraInstance(): Camera? {
return try {
Camera.open() // attempt to get a Camera instance
} catch (e: Exception) {
// Camera is not available (in use or does not exist)
null // returns null if camera is unavailable

 Melakukan request fitur kamera


Sebelum berusaha untuk mengakses kamera pada sebuah perangkat android sangat penting
untuk mengimplementasikan kode defensif untuk memperivikasi perangkat kamera .
 Script kotlin pada activity_main.xml
 Script kotlin pada MainActivity.kt
 Script kotlin pada androidmanif.xml

 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

Anda mungkin juga menyukai