موبائل ڈیولپمنٹ میں کیمرہ: یہ کیا ہے، API کی اقسام اور استعمال

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

موبائل ایپلیکیشنز میں کیمرہ ایک ہارڈویئر ماڈیول ہے جو ڈیولپر کو تصاویر اور ویڈیو کیپچر کرنے کے لیے سسٹم APIs کے ذریعے قابل رسائی ہے۔ Google Android Developers (2025) کے مطابق، CameraX ان Android ایپلیکیشنز میں سے 85% سے زیادہ میں استعمال ہوتا ہے جنہیں کیمرہ کی فعالیت درکار ہے۔ iOS پر AVFoundation اور Android پر CameraX اعلیٰ سطحی انٹرفیس فراہم کرتے ہیں جو ہارڈویئر مینجمنٹ کی پیچیدگی کو چھپاتے ہیں۔

اہم نکات

  • موبائل ایپلیکیشنز میں کیمرہ سسٹم APIs کے ذریعے منظم کیا جاتا ہے: Android پر CameraX اور Camera2، iOS پر AVFoundation۔
  • CameraX ایک جدید Jetpack لائبریری ہے جس میں لائف سائیکل سپورٹ ہے، جو 95% Android آلات کو سپورٹ کرتی ہے۔
  • AVFoundation Exposure، ISO اور Focus کی ترتیبات کے ساتھ ویڈیو اور فوٹو کیپچر کرنے کے لیے iOS فریم ورک ہے۔
  • کیمرے تک رسائی کے لیے اجازتیں دونوں پلیٹ فارمز پر لازمی ہیں اور سسٹم ڈائیلاگ کے ذریعے درخواست کی جاتی ہیں۔
  • کیمرے کی کارکردگی ڈیوائس کی ہارڈویئر صلاحیتوں اور OS ورژن پر منحصر ہے۔

موبائل ایپلیکیشنز میں کیمرہ کیا ہے

موبائل کیمرہ ایک مربوط آپٹیکل ماڈیول ہے جو ایک لینس، امیج سینسر اور امیج سگنل پروسیسر (ISP) پر مشتمل ہوتا ہے۔ ڈیولپر خصوصی فریم ورکس کا استعمال کرتے ہوئے آپریٹنگ سسٹم کے ذریعے کیمرے تک رسائی حاصل کرتا ہے۔ Android پر، یہ Camera2 API (نچلی سطح) اور CameraX (اعلیٰ سطح، Camera2 پر مبنی) ہیں، اور iOS پر — AVFoundation اور سادہ منظرناموں کے لیے UIKit۔ ہر پلیٹ فارم اپنے ٹولز کا سیٹ فراہم کرتا ہے، لیکن عمومی تصور ایک ہی ہے: ایپلیکیشن ایک کیپچر سیشن شروع کرتی ہے، پیرامیٹرز (ریزولوشن، فوکس، ایکسپوزر) کنفیگر کرتی ہے، اور فریم سٹریم یا انفرادی تصاویر وصول کرتی ہے۔

جدید کیمروں کی ہارڈویئر صلاحیتیں

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

کیمرے کے ساتھ کام کرنے کے لیے API کی اقسام

موبائل پلیٹ فارمز کیمرے کے ساتھ کام کرنے کے لیے کئی APIs فراہم کرتے ہیں، جو تجریدی سطح اور فعالیت میں مختلف ہیں۔ مخصوص API کا انتخاب پروجیکٹ کی ضروریات پر منحصر ہے: سادہ فوٹو کیپچر کے لیے، CameraX یا UIImagePickerController کافی ہے؛ پیشہ ورانہ ایپلیکیشنز کے لیے، براہ راست سینسر کنٹرول کے ساتھ Camera2 یا AVFoundation کی ضرورت ہے۔ ذیل میں اہم APIs کا موازنہ دیا گیا ہے۔

APIپلیٹ فارمسطحخصوصیات
CameraXAndroidاعلیٰلائف سائیکل سے آگاہ، 95% آلات
Camera2Androidنچلیمکمل کنٹرول، RAW، برسٹ
AVFoundationiOSدرمیانیمکمل کیپچر کنٹرول
UIKit (UIImagePickerController)iOSاعلیٰتیار UI، کوئی تخصیص نہیں

CameraX کب منتخب کریں

CameraX زیادہ تر Android ایپلیکیشنز کے لیے بہترین انتخاب ہے جنہیں گہری تخصیص کے بغیر کیمرے کی ضرورت ہوتی ہے۔ لائبریری خود بخود Activity اور Fragment کے لائف سائیکل کو سنبھالتی ہے، اجازتوں کو سپورٹ کرتی ہے اور Android کے مختلف ورژنز کے درمیان مطابقت کو یقینی بناتی ہے۔ CameraX اپنی مطابقت کی پرت کی بدولت 95% Android آلات پر مستقل رویے کی ضمانت دیتا ہے۔ اگر آپ کو کیمرہ پیش نظارہ (Preview)، فوٹو کیپچر (ImageCapture) یا فریم تجزیہ (ImageAnalysis) کی ضرورت ہے — CameraX پیچیدہ کوڈ لکھے بغیر تینوں منظرناموں کو سنبھالتا ہے۔

Camera2 کب منتخب کریں

Camera2 پیشہ ورانہ منظرناموں کے لیے ایک نچلی سطح کی API ہے: RAW ریکارڈنگ، دستی ایکسپوزر ایڈجسٹمنٹ، برسٹ کیپچر اور ایک ساتھ متعدد کیمروں کا کنٹرول۔ Camera2 کے لیے ڈیولپر کو امیج کیپچر پائپ لائن، اسٹیٹ مشین مینجمنٹ اور کال بیک ہینڈلنگ کی گہری سمجھ کی ضرورت ہوتی ہے۔ Camera2 کو صرف اس وقت استعمال کریں جب CameraX ضروریات کو پورا نہ کرے: مثال کے طور پر، دستی فوکس کے ساتھ دستاویز اسکیننگ ایپلیکیشنز یا غیر معیاری ریزولوشن والے کسٹم کیمرے۔

کیمرے کی اجازتوں کی درخواست

کیمرے تک رسائی کے لیے دونوں پلیٹ فارمز پر صارف کی واضح اجازت درکار ہے۔ Android پر، CAMERA کی اجازت مینی فیسٹ میں شامل کی جاتی ہے، اور Android 6.0 سے شروع کرتے ہوئے، رن ٹائم پر ActivityCompat.requestPermissions کے ذریعے بھی اجازت کی درخواست کرنی ہوتی ہے۔ iOS پر، Info.plist میں NSCameraUsageDescription کلید شامل کی جاتی ہے جس میں کیمرے کے استعمال کی وجہ کی وضاحت ہوتی ہے۔ اس وضاحت کے بغیر، کیمرے تک رسائی کی کوشش کرتے وقت ایپلیکیشن کریش ہو جائے گی۔ iOS 14 سے شروع کرتے ہوئے، اجازت کا ڈائیلاگ نہ صرف ایپلیکیشن کا نام بلکہ مخصوص وجہ بھی دکھاتا ہے — الفاظ صارف کے لیے واضح ہونے چاہئیں۔

CameraX کے ساتھ Android پر نفاذ

CameraX کیمرے کے ساتھ کام کو کوڈ کی صرف چند سطروں میں آسان بناتا ہے۔ پیش نظارہ شروع کرنے کے لیے، آپ کو Preview کا ایک انسٹینس بنانا ہوگا، اسے LifecycleOwner سے منسلک کرنا ہوگا اور ڈسپلے کے لیے SurfaceProvider حاصل کرنا ہوگا۔ فوٹو کیپچر کے لیے، سیو ٹارگٹ کے ساتھ ImageCapture استعمال کیا جاتا ہے۔ ذیل میں Kotlin میں CameraX کا استعمال کرتے ہوئے کیمرہ شروع کرنے اور فوٹو لینے کی مکمل مثال دی گئی ہے۔

Preview اور ImageCapture کی ترتیب

kotlin
val preview = Preview.Builder()
    .build()
    .also {
        it.surfaceProvider = viewFinder.surfaceProvider
    }

val imageCapture = ImageCapture.Builder()
    .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
    .build()

val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener(Runnable {
    val cameraProvider = cameraProviderFuture.get()
    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

    try {
        cameraProvider.unbindAll()
        cameraProvider.bindToLifecycle(
            this, cameraSelector, preview, imageCapture
        )
    } catch (e: Exception) {
        Log.e("CameraX", "منسلک کرنے میں ناکامی", e)
    }
}, ContextCompact.getMainExecutor(this))

bindToLifecycle طریقہ کیمرے کو Activity کے لائف سائیکل سے منسلک کرتا ہے — جب اسکرین گھومتی ہے یا ایپلیکیشن پس منظر میں جاتی ہے، کیمرہ خود بخود ریلیز ہو جاتا ہے۔ CameraSelector.DEFAULT_BACK_CAMERA پچھلا کیمرہ منتخب کرتا ہے؛ سامنے والے کیمرے کے لیے DEFAULT_FRONT_CAMERA استعمال ہوتا ہے۔ منسلک ہونے کے بعد، Preview PreviewView میں کیمرہ فیڈ دکھانا شروع کرتا ہے، اور صارف اسکرین پر کیمرے کی تصویر دیکھتا ہے۔

فوٹو کیپچر کرنا

kotlin
val photoFile = File(
    externalMediaDirs.firstOrNull(),
    "IMG_${System.currentTimeMillis()}.jpg"
)
val outputOptions = ImageCapture.OutputFileOptions
    .Builder(photoFile)
    .build()

imageCapture.takePicture(
    outputOptions,
    ContextCompact.getMainExecutor(this),
    object : ImageCapture.OnImageSavedCallback {
        override fun onImageSaved(output: ImageCapture.OutputFileResults) {
            Log.d("CameraX", "Photo saved: ${photoFile.absolutePath}")
        }
        override fun onError(exception: ImageCaptureException) {
            Log.e("CameraX", "کیپچر میں خرابی", exception)
        }
    }
)

takePicture طریقہ کیمرے سے ایک فریم کیپچر کرتا ہے اور اسے فائل میں محفوظ کرتا ہے۔ OutputFileOptions File، ContentResolver اور MediaStore میں تحریر کو سپورٹ کرتا ہے۔ onImageSaved کال بیک میں، ایپلیکیشن کامیاب محفوظ کرنے کا نوٹیفکیشن وصول کرتی ہے اور UI کو اپ ڈیٹ کر سکتی ہے۔ CAPTURE_MODE_MINIMIZE_LATENCY پوسٹ پروسیسنگ کو کم کرکے زیادہ سے زیادہ شٹر سپیڈ یقینی بناتا ہے۔

AVFoundation کے ساتھ iOS پر نفاذ

iOS پر، کیمرے تک رسائی AVFoundation فریم ورک کے ذریعے AVCaptureSession کلاس کے ذریعے فراہم کی جاتی ہے۔ ڈیولپر ایک کیپچر سیشن بناتا ہے، ضروری ان پٹ (AVCaptureDeviceInput) اور آؤٹ پٹ (AVCapturePhotoOutput, AVCaptureVideoDataOutput) شامل کرتا ہے اور سیشن شروع کرتا ہے۔ پیش نظارہ دکھانے کے لیے AVCaptureVideoPreviewLayer استعمال ہوتا ہے۔ ذیل میں Swift میں فوٹو کیپچر کے لیے سیشن ترتیب دینے کی مثال دی گئی ہے۔

swift
import AVFoundation

let captureSession = AVCaptureSession()
captureSession.sessionPreset = .photo

guard let camera = AVCaptureDevice.default(
    for: .video
) else { return }

guard let input = try? AVCaptureDeviceInput(device: camera)
else { return }

let output = AVCapturePhotoOutput()
captureSession.addInput(input)
captureSession.addOutput(output)

DispatchQueue.global(qos: .userInitiated).async {
    captureSession.startRunning()
}

AVCaptureSessionPreset.photo فوٹوز کے لیے بہترین ریزولوشن سیٹ کرتا ہے (جدید آلات پر عام طور پر 12 MP)۔ ان پٹ ڈیوائس کے کیمرے کے لیے بنایا گیا AVCaptureDeviceInput ہے۔ ان پٹ اور آؤٹ پٹ شامل کرنے کے بعد، سیشن startRunning کے ذریعے بیک گراؤنڈ تھریڈ پر شروع کیا جاتا ہے — پرانے آلات پر سیشن شروع ہونے میں 200 ms تک لگ سکتے ہیں۔ فوٹو کیپچر کرنے کے لیے، capturePhoto(with:delegate:) کال کیا جاتا ہے، اور نتیجہ AVCapturePhotoCaptureDelegate کے ذریعے واپس کیا جاتا ہے۔

خصوصیات اور حدود

موبائل آلات پر کیمرے کے ساتھ کام کرتے وقت، ہارڈویئر کی حدود کو مدنظر رکھنا ضروری ہے: طویل ریکارڈنگ کے دوران ڈیوائس کا گرم ہونا، ہائی ریزولوشن پر کام کرتے وقت بیٹری کی کھپت، اور مختلف آلات پر کیمرے کے مختلف معیار۔ Android پر، ایکو سسٹم کے ٹکڑے ہونے کا مطلب ہے کہ ایک ہی CameraX کنفیگریشن مختلف ماڈلز پر مختلف طریقے سے کام کر سکتی ہے۔ iOS پر، حدود بنیادی طور پر لائسنسنگ سے متعلق ہیں: پس منظر میں کیمرہ استعمال کرنے کے لیے Apple سے خصوصی اجازت درکار ہے۔ یہ یاد رکھنا بھی ضروری ہے کہ سمیلیٹرز کے پاس اصلی کیمرے تک رسائی نہیں ہے — جانچ صرف فزیکل ڈیوائس پر ممکن ہے۔

مختلف OS ورژنز کے ساتھ مطابقت

CameraX CameraXConfig مطابقت کی پرت کے ذریعے Android کے ٹکڑے ہونے کے مسئلے کو حل کرتا ہے — لائبریری معروف مینوفیکچرر بگز کے لیے خود بخود ورک اراؤنڈ لاگو کرتی ہے۔ iOS پر، AVFoundation iOS 6 سے شروع کرتے ہوئے تمام آلات پر یکساں طور پر کام کرتا ہے، لیکن کچھ فیچرز (جیسے پورٹریٹ موڈ یا LiDAR) صرف iPhone 12 اور نئے ماڈلز پر دستیاب ہیں۔ کراس پلیٹ فارم ایپلیکیشن تیار کرتے وقت، کیمرہ پلگ انز کے ساتھ Flutter یا React Native استعمال کرنے کی سفارش کی جاتی ہے — یہ پلیٹ فارم کے فرق کو ختم کرتے ہیں اور دونوں آپریٹنگ سسٹمز کے لیے ایک متحد API فراہم کرتے ہیں۔

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

Android پر کیمرے کے لیے کون سی API بہترین ہے؟

زیادہ تر ایپلیکیشنز کے لیے، استعمال میں آسانی، بلٹ ان لائف سائیکل مینجمنٹ اور 95% آلات کے ساتھ مطابقت کی وجہ سے CameraX تجویز کیا جاتا ہے۔ Camera2 کو صرف اس وقت منتخب کیا جانا چاہیے جب RAW، برسٹ کیپچر یا دستی سینسر کنٹرول کی ضرورت ہو۔

کیمرہ تک رسائی کی اجازت کی درخواست کیسے کریں؟

Android پر، مینی فیسٹ میں CAMERA کی اجازت شامل کریں اور رن ٹائم پر ActivityCompat.requestPermissions کے ذریعے درخواست کریں۔ iOS پر، کیمرہ استعمال کرنے کی وجہ کی واضح وضاحت کے ساتھ Info.plist میں NSCameraUsageDescription شامل کریں۔

کیا کیمرہ پس منظر میں استعمال کیا جا سکتا ہے؟

iOS پر، پس منظر میں کیمرہ کا استعمال سختی سے محدود ہے — Apple سے خصوصی اجازت درکار ہے۔ Android پر، کیمرہ پیش منظر سروس کے ذریعے پس منظر میں کام کر سکتا ہے، لیکن یہ بیٹری لائف اور ڈیوائس کے گرم ہونے پر منفی اثر ڈالتا ہے۔

سمیلیٹر پر کیمرہ کیوں کام نہیں کرتا؟

iOS سمیلیٹرز اور Android ایمولیٹرز کے پاس ہارڈویئر کیمرے تک رسائی نہیں ہے — وہ فزیکل سینسر کی ایمولیشن نہیں کرتے۔ کیمرہ کی فعالیت جانچنے کے لیے، ہمیشہ فزیکل ڈیوائس یا کمپیوٹر سے منسلک بیرونی کیمرہ استعمال کریں۔

CameraX ImageAnalysis کیا ہے؟

ImageAnalysis CameraX کا ایک فریم سٹریم تجزیہ کار ہے جو پروسیسنگ کے لیے ہر فریم کو ImageAnalysis.Analyzer میں بھیجتا ہے۔ یہ QR کوڈ پہچان، چہرے کا پتہ لگانے، دستاویز اسکیننگ اور دیگر کمپیوٹر ویژن کاموں کے لیے استعمال ہوتا ہے۔

خلاصہ

  • موبائل ایپلیکیشنز میں کیمرہ CameraX/Camera2 (Android) اور AVFoundation (iOS) کے ذریعے منظم کیا جاتا ہے۔
  • CameraX لائف سائیکل سپورٹ اور 95% Android آلات کے ساتھ مطابقت رکھنے والی اعلیٰ سطحی Jetpack لائبریری ہے۔
  • AVFoundation iOS پر لچکدار تصویر اور ویڈیو کیپچر کنٹرول کے لیے AVCaptureSession فراہم کرتا ہے۔
  • اجازتیں دونوں پلیٹ فارمز پر لازمی ہیں — Android پر CAMERA، iOS پر NSCameraUsageDescription۔
  • Camera2 پیشہ ورانہ منظرناموں کے لیے نچلی سطح کی API ہے: RAW، دستی ترتیبات، برسٹ کیپچر۔
  • حدود — ڈیوائس کا گرم ہونا، Android کا ٹکڑے ہونا، سمیلیٹرز میں کیمرہ ایمولیشن کی کمی۔
  • سفارش — Android پر CameraX اور iOS پر AVFoundation سے شروع کریں، صرف ضرورت پڑنے پر Camera2 پر جائیں۔

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

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

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

مزید پڑھیں