📸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"		
}
circle-info

‍🧙‍♂ Detaylı bilgi için Add the Gradle dependenciesarrow-up-right 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

circle-info

‍🧙‍♂ Detaylı bilgi için Create the viewfinder layoutarrow-up-right 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

circle-info

‍🧙‍♂ Detaylı bilgi için Request camera permissionsarrow-up-right 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

circle-info

‍🧙‍♂ 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 - YEmreAkarrow-up-right yazısına bakmanda fayda var

circle-info

‍🧙‍♂ Detaylı bilgi için Implement image capture use casearrow-up-right 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 Kitarrow-up-right 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 ~ AsmaaMirkhanarrow-up-right projesindeki MLKitFaceAnalyserarrow-up-right java sınıfını inceleyebilirsin.

imageAnalysis.setAnalyzer(executor,MLKitFaceAnalyser())

şeklinde kullanılır.

⭐ 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

circle-info

‍🧙‍♂ Detaylı bilgi için Android draw on camera previewarrow-up-right alanına bakabilirsin.

🔗 Faydalı Kaynaklar

circle-check

Last updated

Was this helpful?