Android-native

Menggunakan kamera dengan intent di Android Studio

Hallo semua, selamat datang kembali ke tulisan mimin. Di tulisan kali ini, mimin mau bahas tentang penggunaan kamera dengan Intent di Android...

Ikhwan Written by Ikhwan · 1 min read >

Hallo semua, selamat datang kembali ke tulisan mimin. Di tulisan kali ini, mimin mau bahas tentang penggunaan kamera dengan Intent di Android Studio.

Mari kita mulai,

1. Tambahkan permission di Android Manifest

Kita butuh izin user untuk menggunakan kamera. Jadi tambahkan code berikut di Android Manifest.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ikhwankoto.cameraandcamerax">    

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

</manifest>

Kita nanti akan meminta ijin ke user dengan pop up, untuk sekarang tambahkan saja code tersebut terlebih dahulu


2. Cek apakah device memiliki kamera atau tidak

Mimin nggak tau sih, apakah masih ada android device yang tidak punya kamera, tapi kita cek aja agar lebih teratur. Gunakan code seperti di bawah ini:

private fun checkCameraHardware(context: Context): Boolean {
    return context.packageManager.hasSystemFeature(         
           PackageManager.FEATURE_CAMERA)
} 

3. Request permission

Nah sekarang kinta akan mencek apakah user memberikan izin untuk aplikasi kita atau belum. Jika belum, kita akan memintanya. Gunakan code seperti di bawah ini:

if (ContextCompat.checkSelfPermission(this, 
         Manifest.permission.CAMERA) !=   
         PackageManager.PERMISSION_GRANTED ) {
    
    ActivityCompat.requestPermissions( this,         
        arrayOf(Manifest.permission.CAMERA),   
                MY_CAMERA_PERMISSION_CODE)

} else {
    // take picture
}

MY_CAMERA_PERMISSION_CODE adalah integer yang digunakan untuk mencek hasil dai request kita. Hasil dari request adalah diizinkan atau tidak. Cek code berikut ini

 override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<String>, grantResults: IntArray
) {
    when (requestCode) {
        MY_CAMERA_PERMISSION_CODE -> {
            if ((grantResults.isNotEmpty() && grantResults[0]
                        == PackageManager.PERMISSION_GRANTED)) {
                // continue to take the picture
            } else {
                // do something with condition permission not given
            }
            return
        }
        else -> {
        }
    }
} 

4. Ambil photo

Sekarang kita akan menggunakan Intent

 private fun takePictureWithCamera() {
    val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(cameraIntent, CAMERA_REQUEST)
} 

CAMERA_REQUEST adalah integer yang digunakan untuk mencek hasil photo kita nantinya.

Setelah pengguna mengambil photo, gunakan code di bawah ini untuk mengambil atau memproses gambar tersebut. Kita akan menggunakan CAMERA_REQUEST untuk mengambilnya

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == CAMERA_REQUEST) {
            val photo = data!!.extras!!.get("data") as Bitmap?
            photo?.let {
                iv_image.setImageBitmap(it)
            }
        }
    }
} 

Dengan code diatas, mimin cuma menampilkan hasil photo di ImageView. Kamu bisa melakukan proses lainnya sesuai dengan kebutuhan


Cek github berikut ya, untuk sample code

https://github.com/IkhwanSI13/Sample_Camera2_CameraX

Masih ada postingan menarik lainnya tentang android loh 😀

Tulisan selanjutnya, mimin bakal bahas tentang custom camera dengan Camera2 atau CameraX. Tunggu aja ya.

Terimakasih dan sampai jumpa.. 😀

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *