प्रॉडक्ट से जुड़ी खबरें
सिर्फ़ एक सुविधा से आगे: CameraX 1.5 के साथ, सुविधाओं के कॉम्बिनेशन की गारंटी
छह मिनट में पढ़ें
आजकल के कैमरा ऐप्लिकेशन में, एक साथ कई सुविधाएं काम करती हैं. उपयोगकर्ताओं को उम्मीद होती है कि वे शानदार एचडीआर क्वालिटी में वीडियो रिकॉर्ड कर पाएंगे, 60 एफ़पीएस पर फ़्लूइड मोशन कैप्चर कर पाएंगे, और प्रीव्यू स्टैबलाइज़ेशन की मदद से, बिना किसी रुकावट के फ़ुटेज पा सकेंगे. अक्सर, वे ये सभी काम एक साथ करना चाहते हैं.
डेवलपर के तौर पर, हमें पता है कि असल में यह काम इतना आसान नहीं है. आपके पास यह पक्का करने का कोई तरीका नहीं है कि कोई डिवाइस, सुविधाओं के किसी खास कॉम्बिनेशन के साथ काम करेगा या नहीं. अब तक, एक साथ कई सुविधाएं चालू करना, अक्सर एक जुआ होता था. आपके पास हर सुविधा के लिए, यह देखने का विकल्प होता था कि वह काम करती है या नहीं. हालांकि, उन्हें एक साथ इस्तेमाल करने पर, अनचाही गड़बड़ियां हो सकती थीं. इससे भी बुरा यह हो सकता था कि कैमरा सेशन ही फ़ेल हो जाए. इस अनिश्चितता की वजह से, डेवलपर को ज़्यादा सतर्क रहना पड़ता है. इससे, बेहतर डिवाइसों पर मौजूद उपयोगकर्ता, सबसे अच्छा अनुभव नहीं ले पाते.
उदाहरण के लिए, बहुत कम प्रीमियम डिवाइसों पर, एचडीआर और 60 एफ़पीएस पर वीडियो रिकॉर्ड करने की सुविधा एक साथ काम करती है. इसलिए, ज़्यादातर ऐप्लिकेशन, दोनों सुविधाओं को एक साथ चालू करने से बचते हैं, ताकि ज़्यादातर फ़ोन पर उपयोगकर्ताओं को खराब अनुभव न मिले.
इस समस्या को हल करने के लिए, हम CameraX में 'सुविधाओं का ग्रुप' लॉन्च कर रहे हैं. यह एक नया एपीआई है, जिसे इस समस्या को हल करने के लिए डिज़ाइन किया गया है. अब आपके पास यह क्वेरी करने का विकल्प है कि सुविधाओं का कोई खास कॉम्बिनेशन काम करता है या नहीं. इसके लिए, आपको कैमरा कॉन्फ़िगर करने से पहले क्वेरी करनी होगी. इसके अलावा, CameraX को अपनी प्राथमिकताएं बताएं और उसे आपके लिए सबसे अच्छी तरह काम करने वाला कॉम्बिनेशन चालू करने दें.
CameraX के नए उपयोगकर्ताओं के लिए
नए 'सुविधाओं का ग्रुप' एपीआई के बारे में जानने से पहले, आइए CameraX के बारे में जानते हैं. CameraX, Jetpack की एक सपोर्ट लाइब्रेरी है. इसे कैमरा ऐप्लिकेशन को आसानी से डेवलप करने में आपकी मदद करने के लिए बनाया गया है. यह एक ऐसा एपीआई उपलब्ध कराता है जिसे इस्तेमाल करना आसान है. यह ज़्यादातर Android डिवाइसों पर काम करता है. साथ ही, यह Android 6.0 (एपीआई लेवल 23) के साथ भी काम करता है. अगर आपने 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को बाइंड करना है, तो आपको यह पक्का करने के लिए पहले इस एपीआई का इस्तेमाल करना चाहिए कि यह काम करता है या नहीं.
असल में लागू करने का तरीका
आइए, देखते हैं कि कैमरे का बेहतर अनुभव देने के लिए, इन कॉम्पोनेंट का इस्तेमाल कैसे किया जाता है.
पहली स्थिति: "सबसे अच्छी कोशिश" वाला अच्छी क्वालिटी का मोड
अगर आपको डिफ़ॉल्ट रूप से सबसे अच्छी सुविधाएं चालू करनी हैं, तो आपके पास 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 एफ़पीएस
- प्रीव्यू स्टैबलाइज़ेशन
- ऊपर दी गई कोई भी सुविधा नहीं
दूसरी स्थिति: रिऐक्टिव यूज़र इंटरफ़ेस (यूआई) बनाना
ऐसा यूज़र इंटरफ़ेस (यूआई) बनाने के लिए जो उपयोगकर्ता के चुने गए विकल्पों के हिसाब से काम करे और उपयोगकर्ताओं को सुविधाओं का ऐसा कॉम्बिनेशन चुनने से रोके जो काम नहीं करता, आपके पास सीधे तौर पर यह क्वेरी करने का विकल्प होता है कि कोई सुविधा काम करती है या नहीं. नीचे दिया गया फ़ंक्शन, यह जांचता है कि उपयोगकर्ता के मौजूदा चुने गए विकल्पों के साथ कौनसी सुविधाएं काम नहीं करती हैं. इससे, आपके पास यूज़र इंटरफ़ेस (यूआई) के उन एलिमेंट को बंद करने का विकल्प होता है.
/**
* 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 में अलग-अलग इकोसिस्टम और प्रॉडक्ट के लिए नई घोषणाएं और संसाधन पेश किए जाते हैं. इनमें Android डेवलपमेंट भी शामिल है. डेवलपमेंट, एआई और एजेंट की मदद से काम करने वाले टूल की ओर बढ़ रहा है. इसलिए, हमने अपनी पेशकशों को बढ़ाया है, ताकि आपको Android के लिए ऐप्लिकेशन बनाने में बेहतर मदद मिल सके.
Simona Milanovic • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O ‘26 में, हमने दिखाया कि Android इकोसिस्टम में हुए नए बदलावों से, आपके ऐप्लिकेशन की क्वालिटी को बेहतर बनाने के साथ-साथ, डेवलपमेंट की परफ़ॉर्मेंस को कैसे बढ़ाया जा सकता है.
Ataul Munim • तीन मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O 2026 में, हमने Android को ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदलने के बारे में बताया. हमने यह भी दिखाया कि सिस्टम के साथ, बेहतर अनुभव कैसे दिया जा सकता है. साथ ही, Google के एआई की मदद से, अपने ऐप्लिकेशन को कैसे बेहतर बनाया जा सकता है.
Jingyu Shi • दो मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.