प्रॉडक्ट से जुड़ी खबरें
सिर्फ़ एक सुविधा से आगे: CameraX 1.5 के साथ, कई सुविधाओं को एक साथ इस्तेमाल करने की गारंटी
6 मिनट में पढ़ें
आजकल के कैमरा ऐप्लिकेशन में, कई सुविधाएं होती हैं जो एक साथ काम करती हैं. उपयोगकर्ताओं को उम्मीद होती है कि वे शानदार एचडीआर क्वालिटी में वीडियो रिकॉर्ड कर पाएंगे, 60 एफ़पीएस पर फ़्लूइड मोशन कैप्चर कर पाएंगे, और प्रीव्यू स्टैबलाइज़ेशन की मदद से, बिना किसी रुकावट के वीडियो रिकॉर्ड कर पाएंगे. अक्सर, वे ये सभी काम एक साथ करना चाहते हैं.
डेवलपर के तौर पर, हमें पता है कि असल में यह इतना आसान नहीं है. आपके पास यह पक्का करने का कोई तरीका नहीं है कि कोई खास डिवाइस, सुविधाओं के किसी खास कॉम्बिनेशन के साथ काम करेगा या नहीं. अब तक, कई सुविधाओं को एक साथ चालू करना, अक्सर एक जुआ होता था. आपके पास हर सुविधा के लिए, यह देखने का विकल्प होता था कि वह काम करती है या नहीं. हालांकि, उन्हें एक साथ इस्तेमाल करने पर, अनचाही गड़बड़ियां हो सकती थीं. इससे भी बुरा यह हो सकता था कि कैमरा सेशन ही फ़ेल हो जाए. इस अनिश्चितता की वजह से, डेवलपर को सावधानी बरतनी पड़ती है. इससे, बेहतर सुविधाओं वाले डिवाइसों के उपयोगकर्ता, उन सुविधाओं का फ़ायदा नहीं ले पाते.
उदाहरण के लिए, बहुत कम प्रीमियम डिवाइसों पर, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा एक साथ काम करती है. इसलिए, ज़्यादातर ऐप्लिकेशन, इन दोनों सुविधाओं को एक साथ चालू करने से बचते हैं, ताकि ज़्यादातर फ़ोन पर उपयोगकर्ताओं को खराब अनुभव न मिले.
इस समस्या को हल करने के लिए, हम CameraX में सुविधा ग्रुप लॉन्च कर रहे हैं. यह एक नया एपीआई है, जिसे इस समस्या को हल करने के लिए डिज़ाइन किया गया है. अब आपके पास यह क्वेरी करने का विकल्प है कि सुविधाओं का कोई खास कॉम्बिनेशन काम करता है या नहीं. यह क्वेरी, कैमरा कॉन्फ़िगर करने से पहले की जा सकती है. इसके अलावा, CameraX को अपनी प्राथमिकताएं बताएं और उसे आपके लिए, सबसे अच्छी तरह काम करने वाला कॉम्बिनेशन चालू करने दें.
CameraX का इस्तेमाल पहली बार करने वाले लोगों के लिए
नए सुविधा ग्रुप एपीआई के बारे में जानने से पहले, आइए CameraX के बारे में जानते हैं. CameraX, Jetpack की सहायता लाइब्रेरी है. इसे कैमरा ऐप्लिकेशन को आसानी से डेवलप करने में आपकी मदद करने के लिए बनाया गया है. यह एक जैसा और इस्तेमाल में आसान एपीआई उपलब्ध कराता है. यह एपीआई, Android 6.0 (एपीआई लेवल 23) और इसके बाद के वर्शन वाले ज़्यादातर Android डिवाइसों पर काम करता है. अगर आपने CameraX का इस्तेमाल पहली बार किया है, तो हमारा सुझाव है कि आप आधिकारिक दस्तावेज़ देखें और कोडलैब आज़माएं, ताकि इसे इस्तेमाल करना शुरू किया जा सके.
सुविधा ग्रुप एपीआई का इस्तेमाल करके क्या-क्या बनाया जा सकता है
अब आपको सुविधाओं के कॉम्बिनेशन के बारे में अंदाज़ा लगाने की ज़रूरत नहीं है. साथ ही, आपके पास कैमरे से जुड़े सबसे अच्छे अनुभव देने का विकल्प है. जैसे, बेहतर हार्डवेयर (उदाहरण के लिए, Pixel 10 Pro) पर, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा एक साथ उपलब्ध कराना. इसके अलावा, उन डिवाइसों पर गड़बड़ियों से बचा जा सकता है जिन पर यह कॉम्बिनेशन काम नहीं करता.
Pixel 10 Pro पर, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा एक साथ चालू है
किसी पुराने डिवाइस पर, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा एक साथ काम नहीं करती. इसलिए, इस डिवाइस पर सिर्फ़ एचडीआर की सुविधा चालू है, जबकि 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा बंद है.
सुविधा ग्रुप एपीआई की मदद से, ये काम किए जा सकते हैं:
- बेहतर और डाइनैमिक यूज़र इंटरफ़ेस (यूआई) बनाना: हार्डवेयर की रीयल-टाइम सहायता के आधार पर, अपने यूआई में सेटिंग को समझदारी से चालू या बंद करना. उदाहरण के लिए, अगर कोई उपयोगकर्ता एचडीआर की सुविधा चालू करता है, तो आपके पास 60 एफ़पीएस पर वीडियो रिकॉर्ड करने के विकल्प को तुरंत धुंधला करने और बंद करने का विकल्प होता है. ऐसा तब किया जा सकता है, जब उस डिवाइस पर यह कॉम्बिनेशन काम न करे.
- "अच्छी क्वालिटी" वाला मोड उपलब्ध कराना: कैमरे को, अपनी पसंद की सुविधाओं की प्राथमिकता वाली सूची के साथ कॉन्फ़िगर करना. CameraX, किसी भी डिवाइस के लिए, सबसे अच्छी तरह काम करने वाला कॉम्बिनेशन अपने-आप ढूंढता है और उसे चालू करता है. इससे, डिवाइस के हिसाब से जटिल लॉजिक के बिना भी, शानदार नतीजे मिलते हैं.
- कैमरा सेशन फ़ेल होने से बचाना: पहले से यह पुष्टि करके कि कोई सुविधा काम करती है या नहीं, आपके पास कैमरे को किसी ऐसे कॉम्बिनेशन को कॉन्फ़िगर करने से रोकने का विकल्प होता है जो काम नहीं करता. इससे, क्रैश होने की एक आम वजह खत्म हो जाती है और उपयोगकर्ताओं को बेहतर अनुभव मिलता है.
यह कैसे काम करता है: मुख्य कॉम्पोनेंट
नया एपीआई, SessionConfig और CameraInfo में किए गए अहम बदलावों पर आधारित है.
- GroupableFeature: इस एपीआई में, पहले से तय किए गए ग्रुप किए जा सकने वाली सुविधाओं का सेट शामिल है. जैसे, HDR_HLG10, FPS_60, PREVIEW_STABILIZATION, और IMAGE_ULTRA_HDR. कंप्यूटेशनल सीमाओं की वजह से, सिर्फ़ सुविधाओं के किसी खास सेट को इस एपीआई की मदद से, भरोसेमंद तरीके से ग्रुप किया जा सकता है. हम इस सूची को बढ़ाने के लिए लगातार काम कर रहे हैं. साथ ही, आने वाली रिलीज़ में, हम ज़्यादा सुविधाओं के लिए सहायता उपलब्ध कराएंगे.
- नया SessionConfig पैरामीटर: कैमरा सेशन शुरू करने के लिए इस्तेमाल की जाने वाली इस क्लास में, अब दो नए पैरामीटर शामिल हैं:
requiredFeatureGroup: इसका इस्तेमाल उन सुविधाओं के लिए करें जो कॉन्फ़िगरेशन के लिए ज़रूरी हैं. यह उन सुविधाओं के लिए सबसे सही है जिन्हें उपयोगकर्ता साफ़ तौर पर चालू करता है. जैसे, 'एचडीआर' स्विच को टॉगल करना. यह पक्का करने के लिए कि उपयोगकर्ताओं को एक जैसा और भरोसेमंद अनुभव मिले, अगर अनुरोध किया गया कॉम्बिनेशन काम नहीं करता है, तोbindToLifecycleकॉल,IllegalArgumentExceptionदिखाएगा. ऐसा नहीं होगा कि सुविधा के अनुरोध को चुपचाप अनदेखा कर दिया जाए. इस नतीजे के बारे में पहले से क्वेरी करने के लिए,CameraInfo#isFeatureGroupSupportedएपीआई (नीचे दी गई जानकारी देखें) का इस्तेमाल किया जाना चाहिए.preferredFeatureGroup: इसका इस्तेमाल उन सुविधाओं के लिए करें जो काम की हैं, लेकिन ज़रूरी नहीं हैं. उदाहरण के लिए, जब आपको डिफ़ॉल्ट "अच्छी क्वालिटी" वाला मोड लागू करना हो. आपके पास अपनी पसंद की सुविधाओं की सूची अपनी प्राथमिकताओं के हिसाब से क्रम में उपलब्ध कराने का विकल्प होता है. CameraX, उस डिवाइस के लिए, सबसे ज़्यादा प्राथमिकता वाला कॉम्बिनेशन अपने-आप चालू करता है जो उस डिवाइस पर काम करता है.
- CameraInfo#isFeatureGroupSupported(): यह, साफ़ तौर पर यह देखने के लिए मुख्य क्वेरी वाला तरीका है कि कोई सुविधा ग्रुप काम करता है या नहीं. यह आपके ऐप्लिकेशन के यूआई में, उपयोगकर्ताओं को सिर्फ़ उन सुविधाओं के विकल्प उपलब्ध कराने के लिए सबसे सही है जो काम करते हैं. आपके पास इसे
SessionConfigपास करने का विकल्प होता है. इसके बाद, यह एक बूलियन वैल्यू दिखाता है, जिससे यह पता चलता है कि कॉम्बिनेशन काम करता है या नहीं. अगर आपको ज़रूरी सुविधाओं के साथSessionConfigको बाइंड करना है, तो आपको यह पक्का करने के लिए पहले इस एपीआई का इस्तेमाल करना चाहिए कि यह काम करता है या नहीं.
असल में लागू करने का तरीका
आइए, देखते हैं कि इन कॉम्पोनेंट का इस्तेमाल करके, कैमरे का बेहतर अनुभव कैसे दिया जा सकता है.
Scenario 1: "बेहतर परफ़ॉर्मेंस" वाला मोड
अगर आपको डिफ़ॉल्ट रूप से, सबसे अच्छी सुविधाएं चालू करनी हैं, तो आपके पास preferredFeatureGroup को प्राथमिकता वाली सूची उपलब्ध कराने का विकल्प होता है. इस उदाहरण में, हम CameraX को यह बताते हैं कि उसे सबसे पहले एचडीआर, फिर 60 एफ़पीएस, और आखिर में प्रीव्यू स्टैबलाइज़ेशन को प्राथमिकता देनी है. CameraX, सभी संभावित कॉम्बिनेशन की जांच करने और डिवाइस के हिसाब से सबसे अच्छा कॉम्बिनेशन चुनने की जटिलता को हैंडल करता है.
उदाहरण के लिए, अगर कोई डिवाइस, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा को एक साथ हैंडल कर सकता है, लेकिन प्रीव्यू स्टैबलाइज़ेशन के साथ नहीं, तो CameraX, पहले दो को चालू करेगा और तीसरे को छोड़ देगा. इस तरह, आपको डिवाइस के हिसाब से जटिल जांचें लिखे बिना भी, सबसे अच्छा अनुभव मिलता है.
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelector,
SessionConfig(
useCases = listOf(preview, videoCapture),
// The order of features in this list determines their priority.
// CameraX will enable the best-supported combination based on these
// priorities: HDR_HLG10 > FPS_60 > Preview Stabilization.
preferredFeatureGroup =
listOf(HDR_HLG10, FPS_60, PREVIEW_STABILIZATION),
).apply {
// (Optional) Get a callback with the enabled features
// to update your UI.
setFeatureSelectionListener { selectedFeatures ->
updateUiIndicators(selectedFeatures)
}
}
)इस कोड स्निपेट के लिए, CameraX, सुविधाओं के कॉम्बिनेशन को प्राथमिकता के इस क्रम में चालू करने की कोशिश करेगा. साथ ही, वह पहला कॉम्बिनेशन चुनेगा जो डिवाइस पर पूरी तरह से काम करता है:
- एचडीआर + 60 एफ़पीएस + प्रीव्यू स्टैबलाइज़ेशन
- एचडीआर + 60 एफ़पीएस
- एचडीआर + प्रीव्यू स्टैबलाइज़ेशन
- एचडीआर
- 60 एफ़पीएस + प्रीव्यू स्टैबलाइज़ेशन
- 60 एफ़पीएस
- प्रीव्यू स्टैबलाइज़ेशन
- ऊपर दी गई कोई भी सुविधा नहीं
Scenario 2: प्रतिक्रिया देने वाला यूआई बनाना
ऐसा यूआई बनाने के लिए जो उपयोगकर्ता के चुने गए विकल्पों के हिसाब से काम करे और उपयोगकर्ताओं को सुविधाओं का ऐसा कॉम्बिनेशन चुनने से रोके जो काम नहीं करता, आपके पास सीधे तौर पर यह क्वेरी करने का विकल्प होता है कि कोई सुविधा काम करती है या नहीं. नीचे दिया गया फ़ंक्शन, यह जांचता है कि उपयोगकर्ता के चुने गए विकल्पों के साथ कौनसी सुविधाएं काम नहीं करती हैं. इससे, आपके पास यूआई के उन एलिमेंट को बंद करने का विकल्प होता है.
/**
* Returns a list of features that are NOT supported in combination
* with the currently selected features.
*/
fun getUnsupportedFeatures(
currentFeatures: Set<GroupableFeature>
): Set<GroupableFeature> {
val unsupportedFeatures = mutableSetOf<GroupableFeature>()
val appFeatureOptions = setOf(HDR_HLG10, FPS_60, PREVIEW_STABILIZATION)
// Iterate over every available feature option in your app.
appFeatureOptions.forEach { featureOption ->
// Skip features the user has already selected.
if (currentFeatures.contains(featureOption)) return@forEach
// Check if adding this new feature is supported.
val isSupported = cameraInfo.isFeatureGroupSupported(
SessionConfig(
useCases = useCases,
// Check the new feature on top of existing ones.
requiredFeatureGroup = currentFeatures + featureOption
)
)
if (!isSupported) {
unsupportedFeatures.add(featureOption)
}
}
return unsupportedFeatures
}इसके बाद, इस लॉजिक को अपने ViewModel या यूआई कंट्रोलर में शामिल किया जा सकता है, ताकि उपयोगकर्ता के इनपुट के हिसाब से काम किया जा सके. साथ ही, कैमरे को ऐसे कॉन्फ़िगरेशन के साथ फिर से बाइंड किया जा सके जो काम करता है.
// Invoked when user turns some feature on/off.
fun onFeatureChange(currentFeatures: Set<GroupableFeature>) {
// Identify features that are unsupported with the current selection.
val unsupportedFeatures = getUnsupportedFeatures(currentFeatures)
// Update app UI so that users can't enable them.
updateDisabledFeatures(unsupportedFeatures)
// Since the UI now only allows selecting supported feature combinations,
// `currentFeatures` is always valid. This allows setting
// `requiredFeatureGroup` directly, without needing to re-check for
// support or set a feature selection listener.
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelector,
SessionConfig(
useCases = listOf(preview, videoCapture),
requiredFeatureGroup = currentFeatures,
)
)
}इन कॉन्सेप्ट को काम करने वाले ऐप्लिकेशन में देखने के लिए, हमारे इंटरनल टेस्ट ऐप्लिकेशन को एक्सप्लोर किया जा सकता है. इसमें, ऊपर बताए गए "बेहतर परफ़ॉर्मेंस" और "प्रतिक्रिया देने वाला यूआई" दोनों ही सिनेरियो को पूरी तरह से लागू किया गया है.
कृपया ध्यान दें: यह एक टेस्ट ऐप्लिकेशन है. यह आधिकारिक तौर पर सहायता पाने वाला सैंपल नहीं है. यह सुविधा ग्रुप एपीआई के लिए एक बेहतरीन रेफ़रंस है. हालांकि, इसे प्रोडक्शन में इस्तेमाल करने के लिए बेहतर नहीं बनाया गया है.
आज ही शुरू करें
सुविधा ग्रुप एपीआई की मदद से, कैमरे की ऐडवांस सुविधाओं के साथ काम करने में होने वाली अनिश्चितता को खत्म किया जा सकता है. सुविधा की सहायता के लिए क्वेरी करने का एक तय तरीका उपलब्ध कराकर, आपके पास भरोसे के साथ, ज़्यादा बेहतर और भरोसेमंद कैमरा ऐप्लिकेशन बनाने का विकल्प होता है.
यह एपीआई, CameraX 1.5 में एक्सपेरिमेंटल तौर पर उपलब्ध है. इसे 1.6 रिलीज़ में पूरी तरह से स्टेबल किया जाएगा. साथ ही, इसमें ज़्यादा सहायता और सुधार किए जाएंगे.
ज़्यादा जानने के लिए, आधिकारिक दस्तावेज़ देखें. हमें आपका कॉन्टेंट देखने का बेसब्री से इंतज़ार रहेगा. साथ ही, हमें आपकी राय का इंतज़ार रहेगा. कृपया इन तरीकों का इस्तेमाल करके, अपनी राय शेयर करें और किसी भी समस्या की शिकायत करें:
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O 2026 में, हमने Android के ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदलने के बारे में बताया. हमने यह भी दिखाया कि सिस्टम की मदद से, बेहतर अनुभव कैसे दिए जा सकते हैं. साथ ही, Google के एआई की मदद से, अपने ऐप्लिकेशन को बेहतर कैसे बनाया जा सकता है.
Jingyu Shi • 2 मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हमें यह बताते हुए खुशी हो रही है कि Android XR के लिए, Unreal Engine और Godot की आधिकारिक सहायता उपलब्ध हो गई है. हम नए टूल भी लॉन्च कर रहे हैं. इन्हें आपकी परफ़ॉर्मेंस को बेहतर बनाने और XR की नई सुविधाएं उपलब्ध कराने के लिए डिज़ाइन किया गया है. ये टूल हैं: Android XR Engine Hub और Android XR Interaction Framework.
Luke Hopkins, Ryan Bartley • 4 मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Android 17 की रिलीज़ के साथ, हम अडैप्टिव फ़र्स्ट डेवलपमेंट स्टैंडर्ड में बदल रहे हैं. आपके उपयोगकर्ता अब सिर्फ़ एक तरह के डिवाइस पर निर्भर नहीं रहते. वे दिन भर फ़ोन, फ़ोल्ड किए जा सकने वाले डिवाइस, टैबलेट, लैपटॉप, गाड़ियों में लगे डिसप्ले, और इमर्सिव XR एनवायरमेंट के बीच स्विच करते रहते हैं.
Fahd Imtiaz • 4 मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.