📸CameraX Kullanımı

Android üzerinde güncel beta sürmü olan CameraX kullanımı (👨‍🔬 Beta)

📦 Bağımlılıkları Dahil Etme

  • ➕ Projenizin build.gradle dosyasındaki dependencies alanına alttaki implementation bilgilerini ekleyin

  • 📢 CameraX, java 8 kütüphanelerini de kullandığı için compileOptions da eklenmelidir

build.gradle (app)

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

dependencies {

	// ...
		
	implementation "androidx.camera:camera-camera2:1.0.0-beta01"
	implementation "androidx.camera:camera-core:1.0.0-beta01"
	implementation "androidx.camera:camera-extensions:1.0.0-alpha08"
	implementation "androidx.camera:camera-lifecycle:1.0.0-beta01"
	implementation "androidx.camera:camera-view:1.0.0-alpha08"		
}

‍🧙‍♂ Detaylı bilgi için Add the Gradle dependencies alanına bakabilirsin.

📃 CameraX XML Kodları

  • 👮‍♂️ Buradaki XML kodları, Activity java sınıfının temsil ettiği layout dosyasına yazılmalıdır

  • 😥 Android layout editörü PreviewView'i henüz desteklememektedir, IDE görsel çıktı sunmaz

  • 💁‍♂️ Ama çalışır

  • ⭐ Alttaki fotoğrafta XML'in temsil ettiği çıktı gösterilmiştir

‍🧙‍♂ Detaylı bilgi için Create the viewfinder layout alanına bakabilirsin.

👮‍♂️ Gerekli İzinlerin Alınması

📜 Manifest izinlerini alma

  • 😅 Kamera ile çalışacağımızdan, haliyle kamera iznine ihtiyacımız olacaktır

  • 📜 Android manifest dosyanıza alttaki izin satırını ekleyin

👮‍♂️ Uygulama içinden izin isteme

‍🧙‍♂ Detaylı bilgi için Request camera permissions alanına bakabilirsin.

👀 CameraX Ön İzlemesi

  • 📸 Alttaki kod ile kameraya gelen görüntüyü ekrana basacağız

  • 👮‍♂️ cameraProviderFuture.get() ile kameranın olduğundan emin oluyoruz

  • 🎳 PreviewView.ImplementationMode.TEXTURE_VIEW animasyonları ve dönüşümleri destekler, daha fazla memory kullanır

  • 🕊️ PreviewView.ImplementationMode.SURFACE_VIEW daha hızlı ve basit çalışan bir yapıdır

‍🧙‍♂ Detaylı bilgi için

alanlarına bakabilirsin.

📸 Resim Çekme Özelliği Ekleme

  • ImageCapture objesi oluşturup, onu kameramıza dahil edeceğiz

  • 💠 Resmin alındığı metodu takePicture olarak tanımlayacağız

  • 💫 Daha önceden XML üzerinde tanımladığımız ImageButton'a tıklandığında takePicture metodu çalışacak

  • 💎 Alınan resimleri kayıt edileceği yeri ayarlamak için companion object tanımlayacağız

  • 👷‍♂️ Executor çeşitlerini açıkladığım Thread Pool ~ Lib - YEmreAk yazısına bakmanda fayda var

‍🧙‍♂ Detaylı bilgi için Implement image capture use case alanına bakabilirsin.

🔥 ML Kit ile Resmi Analiz Etme

  • 👮‍♂️ Yüz yanıma işlemleri için resim boyutunun en az 480x360 olması gerekmektedir

  • ✨ Resmin analiz işlemleri için ilk olarak imageAnalyser objesi tanımlanır

  • 🐥 Firebase kurulum işlemlerini 🔥 Firebase ML Kit yazım ile uygulayabilirsin

  • 😅 Firebase hakimiyetin olduğunu varsayarak devam ediyorum

  • 👨‍💼 Oluşturulan imageAnalyser objesi içerisinde resim Firebase resmine dönüştürülüp işlenir

  • 👨‍🎨 Preview üzerine çıktıları göstermek için canvas işlemlerini araştırınız

⭐ Analiz örneği istersen MLKit Demo ~ AsmaaMirkhan projesindeki MLKitFaceAnalyser java sınıfını inceleyebilirsin.

imageAnalysis.setAnalyzer(executor,MLKitFaceAnalyser())

şeklinde kullanılır.

‍🧙‍♂ Detaylı bilgi için

alanlarına bakabilirsin.

⭐ Uygulamanın Son Çıktısı

🖊️ Kamera Çıktısına Çizim Yapma

  • 👮‍♂️ İlk olarak PreviewView üzerine çizim yapamazsın, çünkü kamera ile kitlenmiş durumdadır

  • 🐣 Yeni bir SurfaceView tanımlayıp, onun üzerine çizim yapmalısın

  • 🖼️ FrameLayout ile her ikisini üst üste koymalı ve çizim yaptığını daha önde göstermelisin

‍🧙‍♂ Detaylı bilgi için Android draw on camera preview alanına bakabilirsin.

🔗 Faydalı Kaynaklar

Last updated

Was this helpful?