CameraX: یہ کیا ہے، CameraX API اور کیمرہ کیسے کام کرتا ہے

مصنف: IT Sectr اشاعت: 2026-03-26 مطالعے کا وقت: 8 منٹ

CameraX پیچیدہ Camera2 کے اوپر ایک سادہ اور مستقل API فراہم کرنے والی Android Jetpack لائبریری ہے۔ یہ سینکڑوں Android ڈیوائس ماڈلز کے درمیان فرق کو تجریدی بناتی ہے اور مختلف ہارڈویئر پر یکساں کیمرہ رویے کو یقینی بناتی ہے۔ Android Developer CameraX Guide (2026) کے مطابق، یہ لائبریری 25,000+ Google Play ایپس میں استعمال ہوتی ہے اور API Level 21 اور اس سے اوپر کے آلات پر کام کرتی ہے۔

اہم نکات

  • CameraX Android کیمرے کے لیے Jetpack لائبریری ہے جس میں استعمال کے کیس API: Preview، ImageCapture اور ImageAnalysis شامل ہیں
  • استعمال کے کیس کا فن تعمیر ڈیولپر کو دستی سیشن مینجمنٹ اور کیمرہ کی حالتوں سے آزاد کرتا ہے
  • CameraX Extensions معاون آلات پر پورٹریٹ موڈ، HDR اور نائٹ شوٹنگ شامل کرتی ہیں
  • ٹائپ سیفٹی — CameraX ProcessCameraProvider کے ذریعے استعمال کے کیسز کی مطابقت چیک کرتا ہے
  • مطابقت Android 5.0 (API 21) سے شروع ہونے والے 99% Android آلات کے ساتھ

CameraX کیا ہے؟

CameraX Android Jetpack سوٹ کی ایک لائبریری ہے، جسے Google نے پہلی بار 2019 میں پرانی Camera API کے متبادل اور پیچیدہ Camera2 کے آسان متبادل کے طور پر جاری کیا۔ CameraX کا بنیادی فلسفہ ہے “ایک بار لکھیں، تمام آلات پر چلائیں”۔ لائبریری خود بخود ہارڈویئر کے فرق کو سنبھالتی ہے: کیمرہ کی پوزیشن، معاون ریزولوشنز، سینسر کی سمت اور دستیاب فارمیٹس — ڈیولپر کو ڈیوائس کے مخصوص کوڈ لکھنے کی ضرورت نہیں ہے۔

CameraX کا فن تعمیر استعمال کے کیسز پر بنایا گیا ہے: Preview (Viewfinder میں کیمرہ فیڈ دکھانا)، ImageCapture (تصاویر لینا)، ImageAnalysis (ML کے لیے فریم سٹریم کا تجزیہ) اور VideoCapture (ویڈیو ریکارڈ کرنا)۔ ہر استعمال کا کیس ایک آزاد جزو ہے جسے ملایا جا سکتا ہے: Viewfinder کے لیے Preview اور ML پروسیسنگ کے لیے ImageAnalysis کو بیک وقت چلانا۔ Google (2026) کے مطابق، CameraX API 21+ والے 99% Android آلات پر معاون ہے۔

اہم خصوصیات

CameraX سامنے اور پچھلے کیمرے کے درمیان خودکار سوئچنگ، سیشن کو دوبارہ بنائے بغیر اسکرین گھومنے کی حمایت، LifecycleOwner کے ذریعے بلٹ ان لائف سائیکل مینجمنٹ، استعمال کے کیسز کو ایک Lifecycle عمل سے منسلک کرنا، پورٹریٹ، HDR اور نائٹ موڈ کے لیے Camera2 Extensions کی حمایت، اور حقیقی ڈیوائس کے بغیر یونٹ ٹیسٹنگ کے لیے TestableCameraX فراہم کرتا ہے۔

CameraX کے استعمال کے کیسز

CameraX چار معیاری استعمال کے کیسز کی وضاحت کرتا ہے، ہر ایک کیمرہ کے مخصوص کام کو حل کرتا ہے۔ استعمال کے کیسز کو ملایا جا سکتا ہے: سب سے مشہور امتزاج کیمرہ ایپ کے لیے Preview + ImageCapture اور ML سکینر کے لیے Preview + ImageAnalysis ہیں۔

استعمال کا کیسمقصدکلاس
Previewریئل ٹائم میں کیمرہ فیڈ دکھاناPreviewView
ImageCaptureفلیش اور ریزولوشن سیٹنگز کے ساتھ تصاویر لیناImageCapture
ImageAnalysisML پروسیسنگ کے لیے ہر فریم کا تجزیہImageAnalysis
VideoCaptureمائیکروفون کے ساتھ ویڈیو ریکارڈ کرنا (1.1.0-beta سے)VideoCapture

Preview

Preview استعمال کا کیس کیمرہ ویڈیو سٹریم کو PreviewView میں دکھاتا ہے — CameraX لائبریری کا ایک خصوصی View۔ PreviewView خود بخود کیمرہ کے پہلو تناسب سے ہم آہنگ ہو جاتا ہے، ScaleType (FillCenter, FitCenter) اور استعمال کے کیس کو دوبارہ بنائے بغیر اسکرین گھومنے کی حمایت کرتا ہے۔ ڈیولپر کو صرف ProcessCameraProvider کے ذریعے Preview کو Lifecycle سے منسلک کرنے کی ضرورت ہے۔

ImageAnalysis

ImageAnalysis استعمال کا کیس تجزیہ کے لیے ہر کیمرہ فریم کو ایک ہینڈلر کو بھیجتا ہے: متن کی پہچان، چہرے کی شناخت، QR کوڈ سکیننگ۔ تجزیہ کار YUV_420_888 فارمیٹ میں فریم وصول کرتا ہے — عالمگیر Android رنگ کی جگہ۔ آپریٹنگ موڈ (BLOCKING یا NON_BLOCKING) فریم قطار کو کنٹرول کرتا ہے: BLOCKING پچھلے تجزیہ کے مکمل ہونے کا انتظار کرتا ہے، NON_BLOCKING تاخیر کے دوران فریم چھوڑ دیتا ہے۔

ImageCapture

ImageCapture استعمال کا کیس فلیش، ریزولوشن اور کمپریشن سیٹنگز کے ساتھ کیمرہ سے تصاویر لیتا ہے۔ JPEG اور RAW فارمیٹس معاون ہیں (مطابق آلات پر)۔ ImageCapture تصویر کو OnImageCapturedCallback کے ذریعے غیر مطابقت پذیر طور پر یا ImageCapture.OutputFileOptions کے ذریعے براہ راست فائل میں محفوظ کرتا ہے۔

VideoCapture — ویڈیو ریکارڈنگ

VideoCapture استعمال کا کیس CameraX 1.1.0 (beta) میں شامل کیا گیا تھا اور 30 FPS پر 4K تک ویڈیو ریکارڈ کرنے کی اجازت دیتا ہے۔ استعمال کا کیس خود بخود Preview کے ساتھ مطابقت پذیر ہو جاتا ہے: Viewfinder میں تصویر وہی ہوتی ہے جو فائل میں ریکارڈ کی جا رہی ہے۔ VideoCapture اندرونی طور پر MediaCodec اور MediaMuxer استعمال کرتا ہے، ویڈیو کوڈیک اور MP4 کنٹینر کی تشکیل کی پیچیدگی کو چھپاتے ہوئے۔

CameraX بمقابلہ Camera2

CameraX اور Camera2 Android میں کیمرے کے ساتھ کام کرنے کے دو طریقے ہیں۔ Camera2 ایک نچلی سطح کی API ہے جو ڈیوائس پر مکمل کنٹرول دیتی ہے۔ CameraX ایک اعلیٰ سطحی تجرید ہے جو عام منظرناموں کو خودکار بناتا ہے۔ ان کے درمیان انتخاب پروجیکٹ کی ضروریات پر منحصر ہے۔

خصوصیتCameraXCamera2
API سطحاعلیٰ (استعمال کا کیس)نچلی (مکمل کنٹرول)
ڈیوائس مخصوص کوڈضروری نہیںہر ڈیوائس کے لیے ضروری
Lifecycle منسلکہخودکاردستی
توسیعاتبلٹ ان (HDR, Portrait, Night)OEM نفاذ کی ضرورت
نفاذ کی پیچیدگی15–30 لائن کوڈ100–300 لائن کوڈ
API حمایتAPI 21+API 21+
لچکمعیاری منظرنامےکوئی بھی منظرنامہ

معیاری کاموں کے لیے CameraX استعمال کریں: ایپ میں کیمرہ، QR سکینر، ML سٹریم پروسیسنگ۔ CameraX استعمال کریں جب دستی نمائش کنٹرول، مکمل پیرامیٹر کنٹرول کے ساتھ RAW شوٹنگ، یا ایک ساتھ متعدد کیمرے استعمال کرنے کی ضرورت ہو۔

Kotlin میں کوڈ کی مثالیں

آئیے تین اہم استعمال کے کیسز: Preview، ImageCapture اور ImageAnalysis کا استعمال کرتے ہوئے ایک Android ایپلیکیشن میں CameraX کی مکمل ترتیب کا جائزہ لیں۔

ProcessCameraProvider کی ترتیب

کوڈ ProcessCameraProvider کے ذریعے CameraX کو Activity Lifecycle سے منسلک کرتا ہے۔ پہلے فراہم کنندہ کا ایک مثال درخواست کیا جاتا ہے، پھر استعمال کے کیسز بنائے جاتے ہیں اور منسلکہ انجام دیا جاتا ہے۔

kotlin
val cameraProviderFuture =
    ProcessCameraProvider.getInstance(this)

cameraProviderFuture.addListener({
    val cameraProvider = cameraProviderFuture.get()

    // Preview بنانا
    val preview = Preview.Builder()
        .build()
        .also {
            it.setSurfaceProvider(
                binding.viewFinder.surfaceProvider
            )
        }

    // ImageCapture بنانا
    val imageCapture = ImageCapture.Builder()
        .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
        .build()

    // Lifecycle سے منسلک کرنا
    cameraProvider.unbindAll()
    cameraProvider.bindToLifecycle(
        this,
        CameraSelector.DEFAULT_BACK_CAMERA,
        preview,
        imageCapture
    )
}, ContextCompact.getMainExecutor(this))

Kotlin کوڈ ایک future کے ذریعے ProcessCameraProvider حاصل کرتا ہے، Preview اور ImageCapture استعمال کے کیسز بناتا ہے، اور انہیں موجودہ Activity Lifecycle سے منسلک کرتا ہے۔ CameraX خود بخود اسکرین گھومنے، کیمرہ تبدیل کرنے اور Activity بند ہونے پر وسائل کی آزادی کو سنبھالتا ہے۔

ML پروسیسنگ کے لیے ImageAnalysis

آئیے کیمرہ سٹریم کی فی فریم پروسیسنگ کے لیے ایک ImageAnalysis استعمال کا کیس شامل کریں، مثال کے طور پر ML Kit کے ساتھ انضمام کے لیے۔

kotlin
val imageAnalysis = ImageAnalysis.Builder()
    .setBackpressureStrategy(
        ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST
    )
    .build()

imageAnalysis.setAnalyzer(
    ContextCompact.getMainExecutor(this)
) { imageProxy ->
    // ML Kit کے لیے YUV کو Bitmap میں تبدیل کرنا
    val bitmap = ImageUtils.yuvToBitmap(imageProxy)
    val inputImage = InputImage.fromBitmap(bitmap)

    // ML Kit متن کی پہچان شروع کرنا
    recognizer.process(inputImage)
        .addOnSuccessListener { result ->
            // نتیجہ پر کارروائی کرنا
            processTextResult(result)
        }
        .addOnCompleteListener {
            imageProxy.close()
        }
}

KEEP_ONLY_LATEST حکمت عملی کے ساتھ ImageAnalysis صرف تازہ ترین دستیاب فریم پر کارروائی کرتا ہے، پرانے فریموں کو چھوڑ دیتا ہے اگر تجزیہ کار رفتار برقرار نہیں رکھ سکتا۔ ہر فریم ML Kit کے لیے YUV سے Bitmap میں تبدیل کیا جاتا ہے، جس کے بعد متن کی پہچان شروع کی جاتی ہے۔ imageProxy.close() کو کال کرنا لازمی ہے — ورنہ CameraX نئے فریم فراہم کرنا بند کر دے گا۔

CameraX Extensions

CameraX Extensions ایک ماڈیول ہے جو جدید شوٹنگ موڈز شامل کرتا ہے: پورٹریٹ (پس منظر دھندلا)، HDR (توسیع شدہ متحرک رینج)، نائٹ موڈ (کم روشنی میں شوٹنگ)، آٹو ری ٹچ (جلد کی اصلاح) اور بیوٹی موڈ۔ توسیعات صرف ان آلات پر فعال ہوتی ہیں جہاں کیمرہ بنانے والے نے OEM نفاذ فراہم کیا ہو۔

توسیعات کی جانچ اور فعال کرنا

CameraX Extensions استعمال کرنے سے پہلے، آپ کو یہ جانچنا ہوگا کہ آیا توسیع موجودہ ڈیوائس پر دستیاب ہے۔ Google ExtensionsManager.isExtensionAvailable کے ذریعے جانچ کرنے کی سفارش کرتا ہے۔

kotlin
val extensionsManager =
    ExtensionsManager.getInstance(this)

if (extensionsManager.isExtensionAvailable(
    cameraProvider,
    CameraSelector.DEFAULT_BACK_CAMERA,
    ExtensionMode.BOKEH
)) {
    // پورٹریٹ موڈ فعال کرنا
    cameraProvider.bindToLifecycle(
        this,
        CameraSelector.DEFAULT_BACK_CAMERA,
        preview,
        imageCapture
    )
}

کوڈ ExtensionsManager کے ذریعے BOKEH (پورٹریٹ) توسیع کے لیے حمایت کی جانچ کرتا ہے اور اسے فعال کرتا ہے اگر OEM نفاذ دستیاب ہو۔ CameraX خود بخود پورٹریٹ موڈ کے لیے کیمرہ سیٹنگز تبدیل کرتا ہے۔ اگر توسیع دستیاب نہیں ہے تو، ایپ بغیر کریش کے معیاری موڈ میں کام جاری رکھتی ہے۔

CameraX Extensions Android ڈیولپمنٹ کے اہم مسائل میں سے ایک کو حل کرتا ہے: کیمرہ فریگمنٹیشن۔ مختلف آلات پر، پورٹریٹ موڈ مختلف طریقے سے لاگو کیا جاتا ہے — کچھ ڈوئل لینس استعمال کرتے ہیں، کچھ سافٹ ویئر دھندلاپن استعمال کرتے ہیں۔ CameraX اس فرق کو تجریدی بناتا ہے: ڈیولپر BOKEH موڈ کو فعال کرتا ہے، اور لائبریری خود تعین کرتی ہے کہ اسے کسی مخصوص ڈیوائس پر کیسے لاگو کیا جائے۔ Google تصدیق شدہ OEM شراکت داروں کی فہرست رکھتا ہے: Samsung, Xiaomi, OPPO, vivo, Google Pixel۔

CameraX کے ساتھ کام کرتے وقت، بیک وقت استعمال کے کیسز کی تعداد پر حدود پر غور کرنا ضروری ہے: زیادہ تر آلات پر زیادہ سے زیادہ 3 استعمال کے کیسز بیک وقت چلائے جا سکتے ہیں۔ مثال کے طور پر، Preview + ImageCapture + ImageAnalysis تمام جدید آلات پر کام کرتا ہے، لیکن Preview + ImageCapture + VideoCapture بجٹ ماڈلز پر معاون نہیں ہو سکتا۔ CameraX طریقہ ProcessCameraProvider.checkAvailability() فراہم کرتا ہے، جو منسلک کرنے سے پہلے استعمال کے کیسز کے امتزاج کی مطابقت کو چیک کرتا ہے، رن ٹائم کریش سے بچنے میں مدد کرتا ہے۔

CameraX CameraXFragment یا Compose مطابق PreviewView کے ذریعے Jetpack Navigation کے ساتھ ضم ہوتا ہے۔ Compose کے لیے، AndroidView عنصر استعمال کیا جاتا ہے، جس میں PreviewView شامل کیا جاتا ہے۔ CameraX کیمرہ سیشن کی حالت کھونے کے بغیر اسکرین گھومنے اور کنفیگریشن تبدیلیوں کو صحیح طریقے سے سنبھالتا ہے — صرف LifecycleOwner کی وضاحت کریں، اور لائبریری ڈیوائس گھومنے پر خود بخود استعمال کے کیسز کے منسلکات کو دوبارہ بنائے گی۔

حقیقی ڈیوائس کے بغیر CameraX کی جانچ کرنے کے لیے، Google TestableCameraX فراہم کرتا ہے — ایک لائبریری جو یونٹ ٹیسٹوں میں کیمرہ رویے کی تقلید کرتی ہے۔ TestableCameraX جسمانی ڈیوائس کے بغیر کیمرہ فریم کی نقل، ImageAnalysis کے آپریشن اور ImageCapture کی درستگی کی جانچ کی اجازت دیتا ہے۔ یہ کیمرے کے ساتھ کام کرنے والے پروجیکٹس کے لیے CI/CD پائپ لائن کو نمایاں طور پر تیز کرتا ہے۔

اکثر پوچھے گئے سوالات

CameraX Android کے کن ورژنز سے کام کرتا ہے؟

Android 5.0 (API 21) اور اس سے اوپر۔ CameraX فعال Android آلات کے 99% کو کور کرتا ہے۔ توسیعات (Portrait, HDR) کے لیے API 23+ اور مخصوص موڈ کے لیے OEM تعاون درکار ہے۔

کیا CameraX کو ML Kit کے ساتھ استعمال کیا جا سکتا ہے؟

ہاں، ImageAnalysis استعمال کا کیس ہر فریم کو تجزیہ کار کو بھیجتا ہے۔ فریم ML Kit کے لیے YUV_420_888 سے InputImage میں تبدیل کیے جاتے ہیں۔ ML سکینر بنانے کے لیے یہ معیاری نمونہ ہے۔

CameraX، Camera2 سے کیسے مختلف ہے؟

CameraX استعمال کے کیس فن تعمیر، خودکار Lifecycle منسلکہ اور ڈیوائس کے مخصوص فرق کے انتظام کے ساتھ ایک اعلیٰ سطحی API ہے۔ Camera2 ایک نچلی سطح کی API ہے جو بڑی مقدار میں boilerplate کوڈ کے ساتھ مکمل کیمرہ کنٹرول فراہم کرتی ہے۔

کیا CameraX ویڈیو ریکارڈنگ کو سپورٹ کرتا ہے؟

ہاں، VideoCapture استعمال کا کیس CameraX 1.1.0-beta میں شامل کیا گیا تھا۔ یہ مائیکروفون کے ساتھ ویڈیو ریکارڈ کرتا ہے اور Preview کے ساتھ مطابقت پذیر ہوتا ہے۔ زیادہ پیچیدہ منظرناموں کے لیے، براہ راست Camera2 استعمال کریں۔

سامنے اور پچھلے کیمرے کے درمیان کیسے سوئچ کریں؟

CameraSelector کے ذریعے: DEFAULT_BACK_CAMERA یا DEFAULT_FRONT_CAMERA۔ سوئچ کرنے کے لیے، نئے سلیکٹر کے ساتھ cameraProvider.bindToLifecycle() کال کریں — CameraX خود بخود سیشن دوبارہ شروع کرے گا۔

خلاصہ

  • CameraX استعمال کے کیس فن تعمیر (Preview, ImageCapture, ImageAnalysis, VideoCapture) کے ساتھ Android کیمرے کے لیے Jetpack لائبریری ہے
  • استعمال کے کیسز ایک سیشن میں ملائے جا سکتے ہیں: ML کے لیے Preview + ImageAnalysis یا تصاویر کے لیے Preview + ImageCapture
  • Lifecycle منسلکہ اسکرین گھومنے اور Activity کی حالت کی تبدیلیوں کے دوران خود بخود کیمرہ وسائل کا انتظام کرتا ہے
  • CameraX Extensions مطابق آلات پر پورٹریٹ موڈ، HDR اور نائٹ شوٹنگ شامل کرتی ہیں
  • مطابقت ڈیوائس کے مخصوص کوڈ کے بغیر API 21 سے شروع ہونے والے 99% Android آلات کے ساتھ
  • ML Kit انضمام ImageAnalysis کے ذریعے ہر فریم کو ریئل ٹائم میں تجزیہ کرنے کی اجازت دیتا ہے
  • معیاری کاموں کے لیے CameraX بہترین انتخاب ہے، مکمل کنٹرول کے لیے Camera2 استعمال کریں

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں