मुख्य कंटेंट तक स्किप करें

अध्याय 12: CameraCharacteristics में गहराई से उतरें (Deep Dive)

12.1 आपकी जेब में स्पेसिफिकेशन शीट

इससे पहले कि आप openCamera() कॉल कर सकें, वहां CameraCharacteristics होता है। यह एक कैमरे की स्पेसिफिकेशन शीट की तरह है, जिसे एक स्ट्रक्चर्ड ऑब्जेक्ट के रूप में उजागर किया गया है। यह 10,000+ Android मॉडलों पर काम करने वाले ऐप लिखने के लिए आपका सबसे महत्वपूर्ण टूल है।

इस अध्याय में हम विस्तार से जानेंगे:

  • पांच हार्डवेयर स्तर (Hardware Levels)
  • दस से अधिक क्षमता फ़्लैग (Capability Flags) जैसे MANUAL_SENSOR, RAW, आदि।
  • मेटाडेटा कुंजियों (metadata keys) का पदानुक्रम (hierarchy)।

Android Camera Parameters ऐप मूल रूप से एक CameraCharacteristics ब्राउज़र है। आप वहां श्रेणियों द्वारा व्यवस्थित इन सभी कुंजियों को लाइव देख सकते हैं।

12.2 CameraCharacteristics वास्तव में क्या है

  • अपरिवर्तनीय (Immutable): प्राप्त होने के बाद यह ऑब्जेक्ट कभी नहीं बदलता।
  • पावर-फ्री (Power-free): इसे क्वेरी करने के लिए सेंसर या ISP को चालू करने की आवश्यकता नहीं होती, इसलिए बैटरी पर कोई असर नहीं पड़ता।
  • प्रति-कैमरा: हर कैमरा आईडी का अपना CameraCharacteristics होता है।

12.3 हार्डवेयर लेवल: INFO_SUPPORTED_HARDWARE_LEVEL

यह तय करता है कि कैमरा HAL का स्तर क्या है और कौन सी सुविधाएँ काम करने की गारंटी देती हैं।

पांच हार्डवेयर स्तर

स्तरअर्थ
LEGACYपुराने Camera1 API के चारों ओर एक रैपर। कोई प्रति-फ्रेम कंट्रोल नहीं।
LIMITEDकुछ सुविधाएँ सपोर्ट करता है। 3A काम करता है, लेकिन मैनुअल कंट्रोल या RAW नहीं।
FULLप्रो कैमरा स्तर। मैनुअल सेंसर कंट्रोल, RAW और बर्स्ट कैप्चर की गारंटी।
LEVEL_3FULL + अतिरिक्त: रीप्रोसेसिंग, ZSL और उन्नत सांख्यिकी (statistics)।
EXTERNALUSB/OTG कैमरे।
important

हार्डवेयर लेवल एक गारंटी है। यदि डिवाइस FULL रिपोर्ट करता है, तो इसका मतलब है कि Google के टेस्ट ने इसकी पुष्टि की है कि सभी FULL-स्तरीय सुविधाएँ काम करती हैं।

12.4 क्षमताएं: REQUEST_AVAILABLE_CAPABILITIES

हार्डवेयर स्तर एक मोटा पैमाना है। सूक्ष्म फीचर डिटेक्शन के लिए, REQUEST_AVAILABLE_CAPABILITIES का उपयोग किया जाता है।

क्षमता फ़्लैगअर्थ
MANUAL_SENSORISO, शटर स्पीड और फोकस पर मैनुअल नियंत्रण।
RAWसेंसर से RAW डेटा (Bayer pattern) आउटपुट।
LOGICAL_MULTI_CAMERAकई फिजिकल सेंसर (जैसे वाइड + अल्ट्रा-वाइड) का समूह।
DEPTH_OUTPUTडेप्थ मैप (bokeh के लिए) आउटपुट करने की क्षमता।

12.5 मेटाडेटा संगठन: android.* नेमस्पेस

हर कुंजी एक पदानुक्रमित नामकरण परंपरा का पालन करती है: android.<subsystem>.<parameter>

  • android.sensor.*: एक्सपोज़र टाइम, ISO, टाइमस्टैम्प।
  • android.lens.*: फोकस दूरी, एपर्चर, OIS।
  • android.control.*: 3A एल्गोरिदम (AF/AE/AWB)।
  • android.jpeg.*: JPEG क्वालिटी, ओरिएंटेशन।

12.6 रनटाइम क्षमता क्वेरी (Production-Grade)

एक अच्छी Camera2 ऐप में ऐसा कोड होना चाहिए जो पहले चेक करे कि डिवाइस क्या कर सकता है, और फिर उसी के अनुसार UI फीचर्स (जैसे ISO स्लाइडर) दिखाएं या छुपाएं।

सारांश (Summary)

अवधारणामुख्य निष्कर्ष
हार्डवेयर लेवल5 स्तर: LEGACY से LEVEL_3 तक। प्रो काम के लिए FULL न्यूनतम आवश्यकता है।
कैपेबिलिटी फ़्लैगविशिष्ट फीचर्स जैसे RAW या मैनुअल कंट्रोल की जांच के लिए।
मेटाडेटा नेमस्पेसकुंजियों को सेंसर, लेंस, कंट्रोल आदि श्रेणियों में व्यवस्थित किया गया है।

आगे क्या है

अब जब आप समझ गए हैं कि कैमरा क्या कर सकता है, तो हम भाग IV में मैन्युअल नियंत्रण शुरू करेंगे। अध्याय 13: मैनुअल कैमरा ISO और एक्सपोज़र में, आप लाइट और एक्सपोज़र ट्रायंगल को नियंत्रित करना सीखेंगे।