ध्यान दें: इस पेज पर Camera2 पैकेज के बारे में बताया गया है. हमारा सुझाव है कि जब तक आपके ऐप्लिकेशन को Camera2 की खास और लो-लेवल सुविधाओं की ज़रूरत न हो, तब तक CameraX का इस्तेमाल करें. CameraX और Camera2, दोनों ही Android 5.0 (एपीआई लेवल 21) और इसके बाद के वर्शन पर काम करते हैं.
फ़ोल्ड किए जा सकने वाले डिवाइसों पर काम करने वाले कैमरा ऐप्लिकेशन बनाते समय, कैमरा डेवलपर को खास तरह की चुनौतियों का सामना करना पड़ सकता है. स्मार्टफ़ोन के मुकाबले, फ़ोल्ड किए जा सकने वाले डिवाइसों के डिसप्ले ओरिएंटेशन, कैमरे के ओरिएंटेशन, और फ़ेसिंग के बारे में कई अनुमान अक्सर सही होते हैं. हालांकि, फ़ोल्ड किए जा सकने वाले डिवाइसों के फ़ॉर्म फ़ैक्टर, डिसप्ले लेआउट, और कैमरे के कॉम्बिनेशन अलग-अलग हो सकते हैं.
आम तौर पर, स्मार्टफ़ोन में डिसप्ले के हिसाब से पोर्ट्रेट ओरिएंटेशन वाले कैमरे होते हैं. हालांकि, ऐसा हो सकता है कि फ़ोल्ड किए गए कुछ डिवाइसों के लिए ऐसा न हो. अनफ़ोल्ड की गई स्क्रीन में, पोर्ट्रेट ओरिएंटेशन वाला एक सेंसर और लैंडस्केप ओरिएंटेशन वाला दूसरा सेंसर हो सकता है.
अगर आपका कैमरा ऐप्लिकेशन, SurfaceTexture
या कस्टम रेंडरिंग पाइपलाइन का इस्तेमाल करता है, तो कैमरे के सेंसर के ओरिएंटेशन का ध्यान रखें.
इससे यह पक्का होता है कि रेंडर किया गया कॉन्टेंट हमेशा सही तरीके से दिखे और पिक्सल स्क्वेयर रहें. साथ ही, कॉन्टेंट को हॉरिज़ॉन्टल या वर्टिकल दिशा में स्ट्रेच होने से बचाया जा सके.
इस गाइड में, Camera2 के डेवलपर को ध्यान में रखने वाली बातों और फ़ोल्ड किए जा सकने वाले डिवाइस की अलग-अलग स्थितियों के लिए, कैमरे की झलक को रेंडर करने के तरीके के बारे में जानकारी दी गई है.
डिवाइस की स्थिति के स्विच से कैमरों पर क्या असर पड़ता है
फ़ोल्ड किए जा सकने वाले डिवाइसों में ये शामिल हो सकते हैं:
- दो या उससे ज़्यादा फ़िज़िकल डिसप्ले
- कई फ़िज़िकल कैमरा डिवाइस
डिवाइस की स्थिति के हिसाब से, ये डिवाइस चालू हो सकते हैं. डिवाइस की स्थिति को मैनेज करने की प्रोसेस को आसान बनाने के लिए, कुछ डिवाइसों में लॉजिकल कैमरा लागू किया जाता है. इसमें दो या उससे ज़्यादा फ़िज़िकल सेंसर होते हैं.
अगर डेवलपर ऐसे लॉजिकल कैमरा डिवाइस पर झलक स्ट्रीमिंग की सुविधा को खोलते और चालू करते हैं, तो कैमरा फ़ोल्ड होने की अलग-अलग स्थितियों के हिसाब से, फ़िज़िकल डिवाइसों के बीच अपने-आप स्विच हो जाता है.
उदाहरण के लिए, दो डिसप्ले वाले फ़ोल्ड किए जा सकने वाले डिवाइस को देखें:
- फ़ोल्ड की गई स्थिति में, पोर्ट्रेट ओरिएंटेशन वाली सामान्य स्क्रीन. इसमें पोर्ट्रेट ओरिएंटेशन वाला 'आउटर' फ़्रंट कैमरा भी दिख रहा है.
- फ़ोल्ड होने वाली स्क्रीन, फ़ोल्ड किए बिना इस्तेमाल की जा रही है. इसमें 'इनर' फ़्रंट फ़िज़िकल कैमरा है, जो फ़ोल्ड किए बिना इस्तेमाल किए जा रहे डिसप्ले के हिसाब से लैंडस्केप ओरिएंटेशन में है.
जब कोई ऐप्लिकेशन सामने वाले लॉजिकल कैमरे से स्ट्रीम कर रहा हो और उपयोगकर्ता डिवाइस को फ़ोल्ड या अनफ़ोल्ड करे, तो डिवाइस की स्थिति में होने वाले हर बदलाव के जवाब में, डिवाइस के अंदर और बाहर मौजूद फ़िज़िकल सेंसर के बीच स्विच किया जा सकता है.
डिसप्ले स्विच करने पर, ऐप्लिकेशन को अपने यूज़र इंटरफ़ेस (यूआई) में बदलाव करना पड़ सकता है.
यूज़र इंटरफ़ेस (यूआई) में किए गए बदलावों के साथ-साथ, डेवलपर को यह भी ध्यान रखना होगा कि कैमरे की झलक, चालू किए गए फ़िज़िकल कैमरे के हिसाब से कैसे रेंडर होती है.
कैमरे के लिए डिवाइस के फ़िज़िकल स्विच
लॉजिकल कैमरा डिवाइस इंटरफ़ेस, कैमरे के फ़िज़िकल स्विच को मैनेज करने के लिए ज़रूरी एपीआई उपलब्ध कराता है. डेवलपर को सक्रिय फ़िज़िकल आईडी की वैल्यू पर नज़र बनाए रखनी चाहिए.
फ़ोल्ड किए जा सकने वाले डिवाइसों पर, फ़िज़िकल आईडी कैप्चर करने की सुविधा के चालू होने पर, फ़ोल्ड किए जाने की अलग-अलग स्थितियों के हिसाब से नतीजा बदल सकता है. जैसे, फ़ोल्ड करना और अनफ़ोल्ड करना.
ऐसे मामलों में, डेवलपर को मौजूदा चालू फ़िज़िकल आईडी का इस्तेमाल करना चाहिए और उससे जुड़ी कैमरे की विशेषताओं की जांच करनी चाहिए.
कैमरे की दो सबसे अहम विशेषताएं, सेंसर का ओरिएंटेशन और लेंस की दिशा हैं. इनमें बदलाव होने पर, झलक को रेंडर करने की प्रोसेस पर असर पड़ सकता है.
अगर आपके ऐप्लिकेशन की झलक रेंडर करने वाली पाइपलाइन, अपने फ़ाइनल ट्रांसफ़ॉर्मेशन मैट्रिक का हिसाब लगाने के लिए स्टैटिक कैमरा पैरामीटर पर निर्भर करती है, तो पक्का करें कि आपने मौजूदा वैल्यू पास की हों और ग्राफ़िक ट्रांसफ़ॉर्मेशन अपडेट किए हों.
कैमरे की झलक दिखाने वाली पाइपलाइन और ट्रांसफ़ॉर्मेशन का हिसाब लगाने के तरीके के बारे में ज़्यादा जानने के लिए, कैमरे की झलक दिखाने की सुविधा से जुड़ी गाइड देखें.
अमान्य अन्य अनुमान
कैमरे की विशेषताओं की वैल्यू को कैश मेमोरी में सेव करने का सुझाव नहीं दिया जाता.
यह नहीं माना जा सकता कि कैमरे की विशेषताएं एक जैसी रहेंगी, क्योंकि डिवाइस को फ़ोल्ड या अनफ़ोल्ड करने पर, ये विशेषताएं बदल सकती हैं. इसलिए, आपको कैमरे की विशेषताओं को सेव और फिर से इस्तेमाल नहीं करना चाहिए. इसके बजाय, हर बार कैमरे की विशेषताओं की जांच करें.
मान लें कि कोई कैमरा ऐप्लिकेशन, बाहरी फ़्रंट डिसप्ले पर शुरू होता है और फ़िलहाल इस्तेमाल किए जा रहे फ़्रंट और बैक कैमरे की जानकारी को कैश मेमोरी में सेव करता है. अगर ऐप्लिकेशन, अंदरूनी डिसप्ले पर फिर से शुरू होता है, तो हो सकता है कि ऐक्टिव फ़्रंट फ़िज़िकल सेंसर का ओरिएंटेशन अलग हो. इससे, झलक को रेंडर करने के दौरान अनचाहे साइड इफ़ेक्ट ट्रिगर हो सकते हैं.