CameraX Kotlin: पूर्ण गाइड उदाहरणों के साथ
1. यह क्या है और क्यों ज़रूरी है
CameraX Google की एक लाइब्रेरी है जो Android पर कैमरा डेवलपमेंट के लिए बनाई गई है, और यह Kotlin और Java में लिखी गई है। यह कैमरे के साथ काम करने के लिए एक सरल और सुसंगत API प्रदान करती है, जो निम्न-स्तरीय Camera2 API की जटिलता को दूर करती है। CameraX कई समस्याओं का समाधान करती है जिनका सामना डेवलपर्स करते हैं: Android के विभिन्न संस्करणों का समर्थन, विभिन्न डिवाइस निर्माताओं के साथ काम करना, Activity/Fragment के जीवनचक्र और स्क्रीन रोटेशन को संभालना।
CameraX की ज़रूरत क्यों है? पहला, यह डेवलपमेंट को काफी सरल बनाती है: कैमरा सेटअप, प्रीव्यू और इमेज कैप्चर के लिए सैकड़ों लाइनों के कोड के बजाय, आप सिर्फ 10-20 लाइनें लिखते हैं। दूसरा, यह Android 5.0 (API 21) और उससे ऊपर के डिवाइसों के साथ संगतता सुनिश्चित करती है। तीसरा, CameraX जटिल परिदृश्यों को स्वचालित रूप से संभालती है, जैसे कैमरों के बीच स्विच करना, ओरिएंटेशन बदलना और स्क्रीन रोटेशन पर स्थिति बनाए रखना। चौथा, लाइब्रेरी में बिल्ट-इन एक्सटेंशन (Extensions) शामिल हैं, जैसे HDR, नाइट मोड और पोर्ट्रेट मोड, जो अतिरिक्त सेटिंग्स के बिना अधिकांश डिवाइसों पर काम करते हैं।
CameraX उन ऐप्स के लिए आदर्श है जहाँ कैमरे का तेज़ इंटीग्रेशन चाहिए: मैसेजिंग ऐप्स, सोशल नेटवर्क, QR कोड स्कैनिंग ऐप्स, वीडियो कॉलिंग ऐप्स और सरल कैमरे। अगर आपको एक प्रोफेशनल ऐप बनाना है जहाँ हर फ्रेम पर पूर्ण नियंत्रण चाहिए (जैसे कंप्यूटर विज़न या प्रोफेशनल वीडियो शूटिंग), तो शायद Camera2 पर विचार करें, लेकिन 90% कार्यों के लिए CameraX सबसे अच्छा विकल्प है।
2. इंस्टॉलेशन
CameraX को Gradle बिल्ड सिस्टम के माध्यम से इंस्टॉल किया जाता है। Kotlin प्रोजेक्ट के लिए, build.gradle (Module: app) फ़ाइल में डिपेंडेंसी जोड़ें।
सटीक कमांड (Gradle):
dependencies {
// Core CameraX
def camerax_version = "1.3.1"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:${camerax_version}"
// अगर एक्सटेंशन चाहिए (HDR, नाइट मोड आदि)
implementation "androidx.camera:camera-extensions:${camerax_version}"
// वीडियो के लिए
implementation "androidx.camera:camera-video:${camerax_version}"
}
साथ ही, सुनिश्चित करें कि build.gradle (Project) में Google रिपॉजिटरी शामिल है:
allprojects {
repositories {
google()
mavenCentral()
}
}
डिपेंडेंसी जोड़ने के बाद, प्रोजेक्ट को सिंक्रोनाइज़ करें (Sync Now)।
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
एक नया Activity या Fragment बनाएँ। लेआउट (XML) में PreviewView जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.camera.view.PreviewView
android:id="@+id/viewFinder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
अब Kotlin में Activity का कोड:
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
class MainActivity : AppCompatActivity() {
private lateinit var cameraExecutor: E