डेवलपर दस्तावेज़ (Developer Documentation)
यह दस्तावेज़ Android Camera Parameters एप्लिकेशन, इसके आर्किटेक्चर और विकास दिशानिर्देशों का एक तकनीकी अवलोकन प्रदान करता है।
प्रोजेक्ट अवलोकन (Project Overview)
यह एप्लिकेशन Android Camera2 CameraCharacteristics के निरीक्षण के लिए एक नैदानिक (diagnostic) टूल है। यह डिवाइस पर सभी कैमरा लेंसों के लिए हार्डवेयर स्तर, क्षमताओं और रॉ पैरामीटर मानों को एक्सप्लोर करने के लिए एक आधुनिक, उपयोगकर्ता के अनुकूल इंटरफेस प्रदान करता है।
आर्किटेक्चर (Architecture)
प्रोजेक्ट MVVM (Model-View-ViewModel) आर्किटेक्चर पैटर्न का पालन करता है और UI लेयर के लिए Jetpack Compose का उपयोग करके बनाया गया है।
मुख्य घटक (Core Components)
CameraParamsActivity
एप्लिकेशन का एकमात्र प्रवेश बिंदु (entry point)।
- रनटाइम अनुमतियों (CAMERA) को हैंडल करता है।
setContentके माध्यम से Compose UI को इनिशियलाइज़ करता है।CameraParamsThemeको होस्ट करता है।
CameraViewModel
UI के लिए केंद्रीय स्टेट मैनेजर।
UiStateको बनाए रखता है जिसमें कैमरों की सूची, चयनित इंडेक्स, श्रेणीबद्ध पैरामीटर और सर्च क्वेरी शामिल हैं।- फीचर डिटेक्शन (Feature Detection): RAW सपोर्ट, OIS और मैनुअल एक्सपोज़र जैसी हार्डवेयर क्षमताओं को गतिशील रूप से निर्धारित करने के लिए
detectFeatureFlags()में लॉजिक शामिल है। - श्रेणीबद्ध करना (Categorization): बेहतर पठनीयता के लिए सैकड़ों Camera2 कुंजियों को तार्किक अनुभागों (Sensor, Lens, आदि) में समूहित करता है।
CameraParamsHelper
Android CameraManager के चारों ओर एक यूटिलिटी रैपर।
- विशिष्ट आईडी के लिए
CameraCharacteristicsप्राप्त करता है। - जटिल कैमरा प्रकारों के लिए विशेष फ़ॉर्मेटिंग प्रदान करता है (जैसे,
IntArrayमोड को मानव-पठनीय स्ट्रिंग्स में बदलना)।
UI लेयर (Jetpack Compose)
UI को Material 3 का उपयोग करके बनाया गया है जिसमें एक सख्ती से लागू डार्क थीम है।
नेविगेशन संरचना (Navigation Structure)
ऐप MainScreen.kt में प्रबंधित androidx.navigation.compose का उपयोग करता है।
| स्क्रीन | जिम्मेदारी |
|---|---|
| Overview | सारांश कार्ड, हार्डवेयर लेवल और प्रमुख फीचर चिप्स दिखाने वाला हाई-लेवल डैशबोर्ड। |
| Categories | सर्च फ़िल्टरिंग के साथ अनुभाग द्वारा समूहित सभी पैरामीटरों की विस्तार योग्य सूची। |
| Raw (JSON) | सभी कैमरा प्रॉपर्टीज का सिंटैक्स-हाइलाइटेड JSON प्रतिनिधित्व। |
| Detail | किसी सिंगल पैरामीटर के लिए केंद्रित दृश्य, जो फ़ॉर्मेटेड वैल्यू और रॉ डेटा दिखाता है। |
स्टाइलिंग (Styling)
- थीम:
Theme.ktमें परिभाषित। - रंग: प्राइमरी रंग
#7B61FF(Violet) हाइलाइट्स और प्राइमरी एक्शन्स के लिए उपयोग किया जाता है। - सरफेस: कार्ड्स के लिए
#1E1F23वेरिएंट के साथ डार्क बैकग्राउंड#121417।
मुख्य लॉजिक (Key Logic)
गतिशील फीचर डिटेक्शन (Dynamic Feature Detection)
डैशबोर्ड पर "प्रमुख विशेषताएं (Key Features)" चिप्स स्थिर नहीं हैं। उन्हें CameraViewModel.detectFeatureFlags() में कैलकुलेट किया जाता है:
- RAW:
REQUEST_AVAILABLE_CAPABILITIES_RAWके माध्यम से चेक किया गया। - OIS: पता लगाया गया यदि
LENS_INFO_AVAILABLE_OPTICAL_STABILIZATIONमेंONशामिल है। - मैनुअल एक्सपोज़र (Manual Exp): उपलब्ध है यदि
CONTROL_AE_MODE_OFFसमर्थित है। - मैनुअल फोकस: इनेबल होता है यदि
LENS_INFO_MINIMUM_FOCUS_DISTANCE0 से अधिक है।
विकास गाइड (Development Guide)
आवश्यक शर्तें (Prerequisites)
- Android Studio Ladybug (या नया)।
- Kotlin 2.0+ (प्रोजेक्ट नए Compose Compiler Gradle प्लगइन का उपयोग करता है)।
- न्यूनतम SDK: 21 (Android 5.0)।
एक नई श्रेणी जोड़ना
पैरामीटर ग्रुपिंग जोड़ने या संशोधित करने के लिए, CameraViewModel.kt में getCategoryForKey() मेथड को अपडेट करें। यह श्रेणियों को असाइन करने के लिए कैमरा कुंजी नामों पर स्ट्रिंग मैचिंग का उपयोग करता है।
थीम अपडेट करना
रंगों को Color.kt में समायोजित किया जा सकता है। ऐप को डार्क मोड में सबसे अच्छा दिखने के लिए डिज़ाइन किया गया है; लाइट पैलेट में किसी भी बदलाव का सावधानीपूर्वक परीक्षण किया जाना चाहिए।