CameraX ve ML Kit ile Android'de Barkod/QR Kod Okuma

Herkese merhaba, bu yazıda sizlere Android Jetpack kütüphanelerinden olan CameraX ve Google ML Kit içinde yer alan Barcode Scanning kütüphanelerini kullanarak nasıl Barkod/QR kod okuma işlemi yapılacağını anlatacağım.



ML Kit, Google'ın mobil uygulama geliştiricilere sunduğu, içerisinde makine öğrenmesi için çeşitli API'leri bulunduran gelişmiş bir SDK’dır. ML Kit, makine öğrenmesi işlemlerinin cihaz üzerinde gerçekleşmesi için gerekli optimizasyonlara sahiptir. Bu da, işlemlerin hem daha hızlı olmasını sağlar hem de çevrimdışı olarak da bu özellikleri kullanmaya imkan sağlar. Android Jetpack ise, geliştiricilerin Android işletim sistemi için daha modern yaklaşımlarla uygulamalar geliştirmesini sağlayan bir kütüphane paketidir. Android Jetpack içerisinde geçmişte karşılaşılan birçok problem için optimize çözümleri barındırır. Bu sayede geliştiriciler, geçmişte yaşadıkları problemlere odaklanmak yerine artık daha üretken olmaya odaklanabilirler.


Kısa bir giriş yaptıktan sonra, artık konumuzun teknik detaylarına geçebiliriz. Bu yazıda odak noktası CameraX ve Barcode Scanning kütüphaneleri olacağı için diğer detaylara çok fazla girmeyeceğim.

 

Kurulum


Kütüphanelerin entegrasyonu için ilk adım olarak proje düzeyindeki project/build.gradle dosyasında, buildscript ve allprojects kapsamlarına Google Maven reposunu eklediğimizden emin olmanız gerekiyor.


Uygulama düzeyindeki app/build.gradle dosyasına aşağıdaki kütüphaneleri ekliyoruz.



Bu işlemden sonra, kamera kullanımı için gerekli olan birkaç düzenlemeyi yapıyoruz. Kamera kullanımında kullanıcıdan izin almak gerektiği için bu izni AndroidManifest.xml dosyasına eklememiz gerekiyor. Ek olarak Android.hardware.camera.any özelliğinin eklenmesi, cihazın bir kamerası olmasını garanti eder.


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

 

UI İşlemleri


Basit özelliklere sahip bir Barcode/QR kod okuma ekranı için örnek projemizde aşağıdaki gibi bir ekran tasarımı oluşturduk. Bu ekran tasarımı içerisinde, CameraX içerisinde bulunan PreviewView elementi yer alıyor. Bu element, kamera ön izlemesi için gereklidir. Ek olarak, barkodu ya da QR kodunu kamera üzerinde daha iyi yakalayabilmek için View sınıfından türettiğimiz bir ViewFinderOverlay elementimiz var.