Android, ऐसे ऐप्लिकेशन के लिए काम करने वाला मोड चालू करता है जो स्क्रीन की दिशा के बारे में जानकारी देते हैं या साइज़ में बदलाव करने से जुड़ी पाबंदियां. कम्पैटिबिलिटी मोड, यह पक्का करता है कि ऐप्लिकेशन पर यह सुविधा सही तरीके से काम करे बड़ी स्क्रीन वाले डिवाइस और फ़ोल्ड किए जा सकने वाले फ़्लिप फ़ोन का इस्तेमाल किया जा सकता है. हालांकि, इनका इस्तेमाल करना ज़्यादा सही नहीं है.
हर ऐप्लिकेशन के हिसाब से उपलब्धता में बदलाव से डिवाइस बनाने वाली कंपनियां यह बदलाव कर सकती हैं ऐप्लिकेशन के काम करने का तरीका, ताकि उपयोगकर्ता अनुभव को बेहतर बनाया जा सके या ऐप्लिकेशन को हैक होने से रोका जा सके खास डिवाइस.
रेफ़रंस डिवाइस
असामान्य वजह से, इन डिवाइसों के लिए अलग-अलग ऐप्लिकेशन के हिसाब से बदलाव करना पड़ सकता है ऐसे कॉन्फ़िगरेशन या कॉन्फ़िगरेशन जो ऐप्लिकेशन के साथ काम नहीं करते:
- टैबलेट: Pixel Tablet जैसे कुछ टैबलेट का नैचुरल ओरिएंटेशन
लैंडस्केप है. डिवाइस अपने नैचुरल ओरिएंटेशन में तब होता है, जब
Display#getRotation()
का शुल्क देकर, प्रॉडक्ट को लौटाया जा सकता हैSurface.ROTATION_0
. अगर ऐप्लिकेशनROTATION_0
को पोर्ट्रेट मोड में मानते हैं, ऐप्लिकेशन के लेआउट और कैमरे की झलक, डिवाइस के डिसप्ले से मेल नहीं खा सकती. - लैंडस्केप फ़ोल्ड किए जा सकने वाले डिवाइस: फ़ोल्ड किए जा सकने वाले कुछ डिवाइस, जैसे कि Pixel Fold फ़ोल्ड होने पर पोर्ट्रेट ओरिएंटेशन, लेकिन अनफ़ोल्ड होने पर लैंडस्केप ओरिएंटेशन. अगर ऐप्लिकेशन को लगता है कि अनफ़ोल्ड होने वाला ओरिएंटेशन पोर्ट्रेट है, तो फ़्लिकर लूप या लेआउट से जुड़ी समस्याएं हो सकती हैं.
- फ़ोल्ड किए जा सकने वाले फ़्लिप फ़ोन: अनफ़ोल्ड किए गए फ़्लिप फ़ोन आम तौर पर पोर्ट्रेट मोड में होते हैं स्क्रीन की दिशा. हालांकि, फ़ोल्ड किए जाने पर, फ़ोन का डिसप्ले छोटा होता है लैंडस्केप ओरिएंटेशन. ऐप्लिकेशन को डिसप्ले का ओरिएंटेशन (स्क्रीन की दिशा) तय करना.
साथ काम करने से जुड़ी सामान्य समस्याएं
ऐप्लिकेशन के ओरिएंटेशन की वजह से, ऐप्लिकेशन के साथ काम करने से जुड़ी समस्याएं अक्सर होती हैं पाबंदियां, साइज़ में बदलाव करने की सुविधा, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियां, कैमरा प्रीव्यू ओरिएंटेशन और दुरुपयोग वाले एपीआई.
लेटर बॉक्सिंग
लेटरबॉक्स करने की सुविधा का इस्तेमाल करके, ऐप्लिकेशन को स्क्रीन के बीच में या बड़ी स्क्रीन पर लगाया जा सकता है. या दूसरी ओर आसानी से ऐक्सेस करने के लिए. मैट (ठोस रंग के बार) या ब्लर वॉलपेपर) हो, तो किनारों पर या ऊपर की ओर इस्तेमाल न किए गए डिसप्ले एरिया को भरें और ऐप्लिकेशन के निचले हिस्से में.
लेटरबॉक्स आम तौर पर बड़ी स्क्रीन वाले डिवाइस पर होता है, क्योंकि डाइमेंशन और डिवाइस के डिसप्ले का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) आम तौर पर स्टैंडर्ड आसपेक्ट रेशियो से अलग होता है वाले फ़ोन हैं जिनके लिए ज़्यादातर ऐप्लिकेशन डिज़ाइन किए गए हैं.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing.png?authuser=0000&hl=hi)
पहला डायग्राम. स्क्रीन पर पोर्ट्रेट ओरिएंटेशन वाले ऐप्लिकेशन के लिए, लैंडस्केप टैबलेट और फ़ोल्ड किए जा सकने वाले लेटरबॉक्स किए गए ऐप्लिकेशन का इस्तेमाल किया जा सकता है.
समस्या
इस ऐप्लिकेशन पर सभी डिसप्ले कॉन्फ़िगरेशन काम नहीं करते, क्योंकि ऐप्लिकेशन ने इन्हें ठीक कर दिया है स्क्रीन की दिशा और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में कोई बदलाव नहीं किया जा सकता या इसका साइज़ नहीं बदला जा सकता.
ऐप्लिकेशन के ओरिएंटेशन और साइज़ में बदलाव करने की सेटिंग को कंट्रोल करने वाली कॉन्फ़िगरेशन सेटिंग में, ये शामिल हैं फ़ॉलो किया जा रहा है:
screenOrientation
: यह एक ऐप्लिकेशन. ऐप्लिकेशन, रनटाइम के दौरान ओरिएंटेशन सेट कर सकते हैं. इसके लिए, उन्हेंActivity#setRequestedOrientation()
.resizeableActivity
: इससे पता चलता है कि सिस्टम ये काम कर सकता है ऐप्लिकेशन का साइज़ बदल सकते हैं, ताकि वह अलग-अलग डाइमेंशन की विंडो में फ़िट हो सके. Android 11 (एपीआई लेवल) पर 30) और उससे पहले के किसी वर्शन से तय होता है कि ऐप्लिकेशन में मल्टी-विंडो मोड काम करता है या नहीं. चालू है Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन से पता चलता है कि ऐप्लिकेशन, Android 10 के साथ काम करता है या नहीं छोटी स्क्रीन (कॉम्पैक्ट) पर मल्टी-विंडो मोड विंडो साइज़ क्लास में होती है). Android 12 और उसके बाद वाले वर्शन पर, ऐप्लिकेशन बड़ी स्क्रीन (मध्यम या बड़ी विंडो पर) पर मल्टी-विंडो मोड काम करता है साइज़ क्लास) का इस्तेमाल करें.maxAspectRatio
: इससे डिवाइस के सबसे बड़े आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) की जानकारी मिलती है जो ऐप पर काम करता है. सिर्फ़ उन ऐप्लिकेशन को ये काम किए जा सकते हैं जिनमेंresizeableActivity
कोfalse
पर सेट किया गया हैmaxAspectRatio
सेट करें.minAspectRatio
: इससे पता चलता है कि वीडियो के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) कम से कम कितना है जो ऐप पर काम करता है. सिर्फ़ उन ऐप्लिकेशन को ये काम किए जा सकते हैं जिनमेंresizeableActivity
कोfalse
पर सेट किया गया हैminAspectRatio
सेट करें.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_issue.png?authuser=0000&hl=hi)
ऐप्लिकेशन को पोर्ट्रेट ओरिएंटेशन के लिए प्रतिबंधित किया गया है. इसे लैंडस्केप डिवाइस पर इस्तेमाल नहीं किया जा सकता.
ऑप्टिमाइज़ेशन
ऐप्लिकेशन पर हर डिवाइस और मल्टी-विंडो मोड डिसप्ले काम करना चाहिए स्क्रीन की दिशा और साइज़. स्क्रीन की पूरी दिशा और तय किए गए आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) हटाएं ऐप्लिकेशन के लेआउट और ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल से जुड़ी पाबंदियों की जानकारी भी मिलेगी.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_optimization.png?authuser=0000&hl=hi)
ऐप्लिकेशन सभी डिवाइस ओरिएंटेशन पर काम करता है.
कंपैटबिलिटी से जुड़े समाधान
अगर कोई ऐप्लिकेशन, जिसकी स्क्रीन की दिशा या आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) तय है, वह ऐसी विंडो में चलता है जहां ऐप्लिकेशन सीधे विंडो के साइज़ या स्क्रीन की दिशा के साथ काम नहीं करता है, Android ऐप्लिकेशन में, बिना किसी रुकावट के काम करने के लिए लेटरबॉक्स करता है.
इसकी शुरुआत Android 12 (एपीआई लेवल 31) से और 12L (एपीआई लेवल 32) के साथ जारी रहेगी, यह प्लैटफ़ॉर्म, लेटरबॉक्स किए गए ऐप्लिकेशन को कई तरह से बेहतर बनाता है. डिवाइस मैन्युफ़ैक्चरर, यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाने की सुविधा लागू करते हैं. आपको कुछ और करने की ज़रूरत नहीं है डेवलपमेंट, अपने ऐप्लिकेशन को बेहतर बनाने के लिए किया जा सकता है.
Android 12 (एपीआई लेवल 31) में ये बेहतर सुविधाएं मिलती हैं, जो को डिवाइस बनाने वाली कंपनियां कॉन्फ़िगर कर सकती हैं:
- गोलाकार कोने: ऐप्लिकेशन की विंडो के कोने ज़्यादा बेहतर दिखते हैं.
- सिस्टम बार पारदर्शिता: स्थिति और नेविगेशन बार, जो वाले होते हैं, इसलिए ये आधे-पारदर्शी होते हैं, जिससे बार पर मौजूद आइकॉन स्क्रीन के आखिर में हमेशा दिखते हैं लेटरबॉक्स बैकग्राउंड.
- कॉन्फ़िगर किया जा सकने वाला आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात): ऐप्लिकेशन के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में बदलाव किया जा सकता है ऐप्लिकेशन को बेहतर तरीके से दिखाने के लिए.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing.png?authuser=0000&hl=hi)
दूसरा डायग्राम. यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाने के साथ लेटरबॉक्स किया गया ऐप्लिकेशन.
12L (एपीआई लेवल 32) में ये फ़ंक्शन सुधार किए गए हैं:
कॉन्फ़िगर की जा सकने वाली पोज़िशनिंग: बड़ी स्क्रीन पर, डिवाइस मैन्युफ़ैक्चरर ये काम कर सकते हैं ऐप को डिसप्ले के बाईं या दाईं ओर रखें, इंटरैक्शन आसान हो जाता है.
फिर से डिज़ाइन किया गया रीस्टार्ट बटन: डिवाइस बनाने वाली कंपनियां, रीस्टार्ट करने का विकल्प दे सकती हैं साइज़ कम्पैटबिलटी मोड को नए लुक के लिए बटन ताकि लोग इसे बेहतर तरीके से पहचान सकें.
Android 13 (एपीआई लेवल 33) में, उपयोगकर्ता की जानकारी देने वाला डायलॉग बॉक्स जोड़ा गया. इस डायलॉग बॉक्स में, स्क्रीन पर लेटरबॉक्स किया गया ऐप्लिकेशन या स्प्लिट स्क्रीन मोड में लेटरबॉक्स शामिल करना:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing_user_dialog.png?authuser=0000&hl=hi)
तीसरी इमेज. उपयोगकर्ता के बारे में जानकारी देने वाला डायलॉग बॉक्स दिखाने वाला लेटरबॉक्स किया गया ऐप्लिकेशन.
साइज़ के साथ काम करने वाला मोड
साइज़ के साथ काम करने वाला मोड, लेटरबॉक्स किया गया है. इसमें रीस्टार्ट करने का कंट्रोल शामिल है. कॉन्टेंट बनाने कंट्रोल की मदद से उपयोगकर्ता ऐप्लिकेशन को रीस्टार्ट कर सकते हैं और डिसप्ले को फिर से बदल सकते हैं. Android शुरू करता है इसका साइज़ उन ऐप्लिकेशन के लिए है जिनका साइज़ नहीं बदला जा सकता. जब कोई गतिविधि एक ऐसे प्रदर्शन कंटेनर में चली जाती है, जो गतिविधि के वाले डाइमेंशन को लोड करते हैं, तो सिस्टम डिवाइस के डिसप्ले को भरने के लिए ऐप्लिकेशन को फिर से स्केल कर सकता है कम से कम एक डाइमेंशन.
डिवाइस कॉन्फ़िगरेशन में किए गए इन बदलावों से साइज़ के साथ काम करने वाले मोड को ट्रिगर किया जा सकता है निम्न:
- डिवाइस को घुमाना
- फ़ोल्ड किए जा सकने वाले डिवाइस को फ़ोल्ड या अनफ़ोल्ड करना
- फ़ुल स्क्रीन मोड और स्प्लिट स्क्रीन मोड के बीच स्विच करना
समस्या
साइज़ के साथ काम करने वाला मोड, आम तौर पर उन गतिविधियों पर लागू होता है जिन पर स्क्रीन की दिशा या आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को ट्रैक किया जाता है और इस तरह कॉन्फ़िगर किया जाता है (या सिस्टम की ओर से तय किया जाता है) साइज़ न बदला जा सके.
आपके ऐप्लिकेशन का साइज़ बदला जा सकता है और इसे साइज़ में नहीं रखा जाएगा कंपैटबिलिटी मोड—अगर यह इनमें से किसी भी शर्त को पूरा करता हो:
resizeableActivity="true"
के साथ साइज़ बदला जा सकता है- पिक्चर में पिक्चर (पीआईपी) मोड का इस्तेमाल किया जा सकता है
- एम्बेड किया गया हो
- इस विकल्प से, हर ऐप्लिकेशन के लिए
FORCE_RESIZE_APP
ओवरराइड लागू होता है डिवाइस बनाने वाली कंपनी (ऐप्लिकेशन की सेट की गई प्रॉपर्टी को नज़रअंदाज़ किया जाता है)
अगर आपका ऐप्लिकेशन किसी भी शर्त को पूरा नहीं करता, तो उसे 'नहीं' माना जाता है साइज़ बदला जा सकता है. साथ ही, इसे साइज़ के साथ काम करने वाले मोड में रखा जा सकता है.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_issue.gif?authuser=0000&hl=hi)
साइज़ न बदला जा सकने वाला ऐप्लिकेशन, मल्टी-विंडो मोड में क्रैश हो जाता है.
ऑप्टिमाइज़ेशन
ऐप्लिकेशन को सभी डिसप्ले साइज़ पर काम करना चाहिए. अपने ऐप्लिकेशन के साइज़ में बदलाव करने के लिए,
<activity>
का android:resizeableActivity
एट्रिब्यूट
या true
के लिए <application>
एलिमेंट
ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल खोलें. अपने ऐप्लिकेशन के लिए रिस्पॉन्सिव/ज़रूरत के मुताबिक लेआउट डिज़ाइन करें. ज़्यादा के लिए
जानकारी, देखें
अलग-अलग स्क्रीन साइज़ के साथ काम करते हैं और अलग-अलग डिवाइसों पर काम करते हैं
मल्टी-विंडो मोड का इस्तेमाल भी किया जा सकता है.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_optimization.gif?authuser=0000&hl=hi)
ऐप्लिकेशन सभी तरह की विंडो में काम करता है.
कंपैटबिलिटी से जुड़े समाधान
जब सिस्टम तय करता है कि Android लेटरबॉक्स किए गए ऐप्लिकेशन के डिसप्ले को बेहतर बनाया जा सकता है. ऐसा करने के लिए, ऐप्लिकेशन को कम से कम एक डाइमेंशन में डिसप्ले विंडो होनी चाहिए. सिस्टम रीस्टार्ट करने का कंट्रोल दिखाता है इससे ऐप्लिकेशन की प्रोसेस को फिर से बनाया जाता है, गतिविधि को फिर से बनाया जाता है, और डिसप्ले. प्रोसेस और थ्रेड की खास जानकारी भी देखें.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_workaround.gif?authuser=0000&hl=hi)
सिर्फ़ पोर्ट्रेट मोड में काम करने वाले ऐप्लिकेशन को लैंडस्केप ओरिएंटेशन में लेटरबॉक्स किया गया है. रीस्टार्ट कंट्रोल की मदद से, इस ऐप्लिकेशन के साइज़ में बदलाव किया गया है.
फ़्लिकरिंग लूप
जब कोई ऐप्लिकेशन सभी डिसप्ले ओरिएंटेशन के साथ काम नहीं करता, तो वह बार-बार कॉन्फ़िगरेशन में बदलाव होने पर नए ओरिएंटेशन का अनुरोध करना होगा, ताकि इनफ़ाइनाइट लूप, जिसकी मदद से डिसप्ले फ़्लिकर होता है या ऐप्लिकेशन लगातार घूमता रहता है.
समस्या
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन पर, डिवाइस मैन्युफ़ैक्चरर कॉन्फ़िगर कर सकते हैं
अपने डिवाइस पर ऐप्लिकेशन के सेट किए गए, स्क्रीन की दिशा से जुड़ी पाबंदियों को अनदेखा करने के बजाय
साथ काम करने वाले मोड लागू करें. उदाहरण के लिए, फ़ोल्ड किया जा सकने वाला डिवाइस
गतिविधि android:screenOrientation="portrait"
यह सेटिंग तय करती है कि गतिविधि को डिवाइस के लैंडस्केप टैबलेट के आकार में कब दिखाया जाए,
इनर स्क्रीन पर भी काम करेगा.
अगर किसी ऐप्लिकेशन की स्क्रीन की दिशा से जुड़ी पाबंदियों को अनदेखा किया जाता है, तो ऐप्लिकेशन प्रोग्राम के हिसाब से अपने-आप हो सकता है
कॉल करके इसका ओरिएंटेशन सेट करें
Activity#setRequestedOrientation()
. कॉल
अगर ऐप्लिकेशन कॉन्फ़िगरेशन बदलावों को हैंडल नहीं कर रहा है, तो वह ऐप को रीस्टार्ट करता है (देखें
कॉन्फ़िगरेशन के बदलावों को मैनेज करें). इसके बाद
रीस्टार्ट करने पर, ऐप्लिकेशन की स्क्रीन की दिशा से जुड़ी पाबंदियों को फिर से अनदेखा कर दिया जाता है,
setRequestedOrientation()
को कॉल करने पर, कॉल ऐप्लिकेशन को रीस्टार्ट करता है और
लगातार लूप में चलता रहता है.
इसके अलावा, आपको यह समस्या तब भी दिख सकती है, जब
प्राकृतिक अभिविन्यास (सामान्य अभिविन्यास
एक लैंडस्केप की तरह ही काम करता है.
Display#getRotation()
लौटाए गए
Surface.ROTATION_0
के साथ डिवाइस लैंडस्केप मोड में काम कर रहा है
अनुपात). अब तक, ऐप्लिकेशन यह मानते थे कि Display.getRotation() =
Surface.ROTATION_0
का मतलब डिवाइस पोर्ट्रेट ओरिएंटेशन में है. हालांकि, ऐसा नहीं है
हमेशा केस रहता है. उदाहरण के लिए, फ़ोल्ड किए जा सकने वाले कुछ डिवाइसों की इनर स्क्रीन पर और
पर काम करता है.
फ़ोल्ड किए जा सकने वाले इनर डिसप्ले पर, लैंडस्केप ओरिएंटेशन में कोई ऐप्लिकेशन
स्क्रीन घुमाना, ROTATION_0
का मान पाएं, स्क्रीन की दिशा अपने हिसाब से तय करें
डिवाइस का पोर्ट्रेट मोड में है, और कॉल करें
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
ऐप्लिकेशन लेआउट को फिर से कॉन्फ़िगर करने के लिए )
. ऐप्लिकेशन के रीस्टार्ट होने पर (लैंडस्केप में)
अभिविन् यास), तो यह फिर से स्क्रीन रोटेशन की जांच कर सकता है, इसलिए
ROTATION_0
, कॉल करें
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
, और
अनंत लूप को जारी रखो.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_issue.gif?authuser=0000&hl=hi)
सिर्फ़ लैंडस्केप मोड में इस्तेमाल होने वाला ऐप्लिकेशन, पोर्ट्रेट डिसप्ले पर Activity#setRequestedOrientation()
पर बार-बार कॉल कर सकता है.
ऑप्टिमाइज़ेशन
ऐप्लिकेशन को ये काम नहीं करने चाहिए:
Activity#setRequestedOrientation()
के साथ डिफ़ॉल्ट स्क्रीन की दिशा सेट करें ऐक्टिविटीonCreate()
तरीका, क्योंकि ओरिएंटेशन का अनुरोध कॉन्फ़िगरेशन में बदलाव नहीं किए जाने की वजह से अचानक ट्रिगर हुआ- मान लें कि डिवाइस (
ROTATION_0
) का नैचुरल ओरिएंटेशन पोर्ट्रेट है - ऐसे सिग्नल के आधार पर स्क्रीन की दिशा सेट करें जो मौजूदा विंडो के साइज़ से जुड़े न हों
Display#getRotation()
के तौर परFoldingFeature
या अब काम नहीं करने वाले एपीआई.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_optimization.gif?authuser=0000&hl=hi)
ऐप्लिकेशन, कॉन्फ़िगरेशन में होने वाले बदलावों को हैंडल करता है और स्क्रीन की दिशा से जुड़ी पाबंदियां नहीं लगाता है. इसलिए, यह फ़्लिकरिंग लूप में नहीं जाता.
कंपैटबिलिटी से जुड़े समाधान
Android, Activity#setRequestedOrientation()
पर किए गए कॉल को यहां दिए गए मामलों में अनदेखा करता है
स्थितियां:
गतिविधि को पिछले कॉल से पहले ही फिर से लॉन्च किया जा चुका है या कैमरे के साथ काम करने के लिए, फ़ोर्स रोटेशन ट्रीटमेंट चालू किया गया है (कैमरा देखें पूर्वावलोकन नीचे दिया गया है).
डिवाइस बनाने वाली कंपनियां, इस विकल्प को उन ऐप्लिकेशन पर लागू कर सकती हैं जिनमें
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
.गतिविधि ने एक सेकंड में दो से ज़्यादा स्क्रीन की दिशा के अनुरोध किए, जिससे बताता है कि कोई लूप हुआ है. लूप में मौजूद दो अनुरोधों में से, Android वह ऐप्लिकेशन जो ऐप्लिकेशन के डिसप्ले एरिया को बड़ा करता है.
डिवाइस बनाने वाली कंपनियां, इस विकल्प को उन ऐप्लिकेशन पर लागू कर सकती हैं जिनमें
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
.
कैमरे की झलक
कैमरा ऐप्लिकेशन का कैमरा पूर्वावलोकन (या व्यूफ़ाइंडर) गलत संरेखित या बिगड़ सकता है टैबलेट, लैपटॉप, और फ़ोल्ड किए जा सकने वाले डिसप्ले पर उपलब्ध हैं.
समस्या
Android के साथ काम करने की परिभाषा से जुड़े दस्तावेज़ में बताया गया है कि कैमरा इमेज सेंसर "ओरिएंटेड होना चाहिए, ताकि कैमरे के लंबे डाइमेंशन स्क्रीन के लंबे डाइमेंशन के साथ अलाइन हो जाता है."
ऐप्लिकेशन अक्सर यह मानते हैं कि डिवाइस ओरिएंटेशन और कैमरा सेंसर ओरिएंटेशन पोर्ट्रेट—एक सही अनुमान है. हालांकि, टेबलेट और लैपटॉप के प्राकृतिक ओरिएंटेशन और उनके कैमरे के सेंसर ऐसे हो सकते हैं लैंडस्केप. इसके अलावा, फ़ोल्ड किए जा सकने वाले डिवाइस जैसे डिवाइसों के नाप या आकार में लगने वाले कई वैरिएंट स्क्रीन की दिशा और कई कैमरा सेंसर को भी बदल सकते हैं.
ऐसी गतिविधि शुरू करना जिसके लिए ऐप्लिकेशन को कैमरा ओरिएंटेशन की उम्मीद नहीं है या अलग-अलग कैमरों या डिवाइस की स्क्रीन (फ़ोल्ड किए जा सकने वाले डिवाइसों के लिए) के बीच स्विच करने से, कैमरा की झलक गलत दिख रही है.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_issue.png?authuser=0000&hl=hi)
फ़ोल्ड किए जा सकने वाले बड़े डिवाइस पर, कैमरे की झलक गलत दिख रही है. साथ ही, यह भी दिख रही है.
ऑप्टिमाइज़ेशन
कैमरा ऐप्लिकेशन को डिवाइस ओरिएंटेशन और कैमरे की सही तरीके से पहचान करनी चाहिए और उसे मैनेज करना चाहिए सेंसर ओरिएंटेशन की मदद से, कैमरे की झलक को सही तरीके से अलाइन और स्केल किया गया दिखाया जा सकता है. ऐप्लिकेशन को डिवाइस के रोटेशन, सेंसर के रोटेशन, और स्क्रीन या विंडो का हिसाब लगाना होगा आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) पर क्लिक करें और फिर नतीजों को कैमरे की झलक पर लागू करें. ज़्यादा जानकारी के लिए पेश है, कैमरे की झलक और पेश है कैमरा व्यूफ़ाइंडर.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_optimization.png?authuser=0000&hl=hi)
कैमरा झलक सही तरीके से अलाइन की गई है और सभी डिवाइस ओरिएंटेशन में स्केल की गई है.
कंपैटबिलिटी से जुड़े समाधान
Display#getRotation()
होने पर, डिवाइस का ओरिएंटेशन स्वाभाविक है
Surface.ROTATION_0
दिखाता है. सिस्टम,
CameraCharacteristics.SENSOR_ORIENTATION
देख सकते हैं. Android इसकी पोर्ट्रेट विंडो को अलाइन करता है
पोर्ट्रेट मोड में इस्तेमाल किए जाने वाले ऐप्लिकेशन, डिवाइस के नैचुरल ओरिएंटेशन वाले होते हैं
ज़्यादातर ऐप्लिकेशन यही उम्मीद करते हैं. Android, कैमरा सेंसर की इमेज को भी तब काटता है, जब
सेंसर की स्क्रीन की दिशा लैंडस्केप मोड में है और कैमरे की झलक पोर्ट्रेट मोड में है. खास
समाधानों में ये शामिल हैं:
पोर्ट्रेट मोड में पाबंदी वाले ऐप्लिकेशन के लिए, कैमरे की झलक को ज़बरदस्ती घुमाएं: ऐप्लिकेशन पोर्ट्रेट ओरिएंटेशन पर प्रतिबंधित है, जो डिवाइस के नैचुरल ओरिएंटेशन की उम्मीद करता है और कैमरा सेंसर की स्क्रीन की दिशा पोर्ट्रेट मोड में होनी चाहिए. हालांकि, Android 12 में (एपीआई लेवल 31) और उसके बाद के वर्शन में, ऐप्लिकेशन एक से ज़्यादा डिवाइस ओरिएंटेशन में चल सकते हैं, अगर डिवाइस बनाने वाली कंपनियां, स्क्रीन की दिशा के बारे में दिए गए निर्देशों को अनदेखा करती हैं.
जब पोर्ट्रेट-पाबंदी वाला ऐप्लिकेशन कैमरे से कनेक्ट होता है, तब Android फ़ोर्स ऐप्लिकेशन की पोर्ट्रेट विंडो को नैचुरल के साथ अलाइन करने के लिए उसे घुमाता है डिवाइस की स्क्रीन की दिशा.
कुछ टैबलेट (पहचान डिवाइस देखें) पर, ऐप्लिकेशन पोर्ट्रेट विंडो को फ़ुल स्क्रीन पोर्ट्रेट पर घुमाया गया, ताकि डिवाइस का सामान्य ओरिएंटेशन. ऐप्लिकेशन, फ़ोर्स के बाद फ़ुल स्क्रीन पर दिखता है घुमाव.
टैबलेट — पोर्ट्रेट मोड में काम करने वाले ऐप्लिकेशन को ज़बरदस्ती घुमाएं.
फ़ोल्ड किए जा सकने वाले डिवाइसों की लैंडस्केप इनर स्क्रीन पर (रेफ़रंस देखें डिवाइस), सिर्फ़ पोर्ट्रेट मोड में की जाने वाली गतिविधियों को अनफ़ोल्डेड नैचुरल ओरिएंटेशन के साथ अलाइन करने के लिए लैंडस्केप. यह ऐप्लिकेशन बल घुमाने के बाद लेटरबॉक्स किया गया.
फ़ोल्ड किया जा सकने वाला डिवाइस — पोर्ट्रेट मोड में काम करने वाले ऐप्लिकेशन को ज़बरदस्ती घुमाएं. ऐप्लिकेशन में लेटरबॉक्स भी किया गया है.
सामने वाले कैमरे के ज़रिए काट-छांट करना: सामने के कुछ हिस्से में इनर फ़्रंट कैमरा सेंसर फ़ोल्ड किए जा सकने वाले डिवाइस, लैंडस्केप ओरिएंटेशन में हैं. इसे ज़बरदस्ती घुमाने के अलावा फ़ोल्ड किए जा सकने वाले इनर डिसप्ले पर कैमरे की झलक, Android इनर फ़्रंट को क्रॉप कर रहा है (लैंडस्केप) कैमरा फ़ील्ड ऑफ़ व्यू, ताकि सेंसर सामने वाले व्यू को कैप्चर कर सके डिवाइस ओरिएंटेशन.
कैमरे की झलक को ज़बरदस्ती रीफ़्रेश करें: सिस्टम, अलग-अलग गतिविधि के हिसाब से प्रोसेस होता है
onStop()
औरonStart()
(डिफ़ॉल्ट रूप से) याonPause()
औरonResume()
(इनकी ओर से लागू किया गया OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE हर ऐप्लिकेशन में बदलाव करें). ऐसा करने के बाद यह पक्का किया जा सकेगा कि सही ढंग से प्रदर्शित होता है.आसपेक्ट रेशियो स्केलिंग: सिस्टम, डाइनैमिक तौर पर कैमरे के प्रीव्यू को कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में ज़बरदस्ती घुमाया जाता है. यह पक्का करता है कि कैमरे की झलक सही तरीके से स्केल की गई हो.
अगर ऐप्लिकेशन, कैमरे की झलक को मैनेज करता है, तो ऐप्लिकेशन डेवलपर इन तरीकों को बदल सकते हैं सही तरीके से. हर ऐप्लिकेशन के हिसाब से लागू होने वाले बदलाव देखें.
आम तौर पर गलत इस्तेमाल होने वाले एपीआई
Android में मल्टी-विंडो मोड और फ़ोल्ड किए जा सकने वाले डिवाइसों और लेगसी एपीआई को बंद कर दिया गया है. इनकी जगह अप-टू-डेट एपीआई, जो सभी डिसप्ले साइज़ और डिवाइस के फ़ॉर्म के साथ काम करते हैं फ़ैक्टर. हालांकि, बंद किए गए एपीआई अब भी पुराने वर्शन के लिए उपलब्ध हैं साथ काम करता है.
View
के कुछ एपीआई खास मकसद के लिए डिज़ाइन किए गए हैं, जो हमेशा सही नहीं होते
डेवलपर को समझ आती है.
समस्या
डेवलपर अब भी काम नहीं करने वाले Display
एपीआई का इस्तेमाल करना जारी रखते हैं. साथ ही, वे गलत तरीके से
एपीआई, डिवाइस के डिसप्ले एरिया की सीमाओं के बजाय, ऐप्लिकेशन की सीमाएं दिखाते हैं. या डेवलपर
सामान्य डिसप्ले मेट्रिक पाने के लिए, गलती से खास मकसद वाले व्यू एपीआई का इस्तेमाल करना.
ऐप्लिकेशन विंडो के बाद, यूज़र इंटरफ़ेस (यूआई) एलिमेंट की जगह बदलने पर, नतीजे गलत तरीके से कैलकुलेट होते हैं
इवेंट का साइज़ बदलना, जिससे लेआउट की समस्याएं आ रही हैं.
अब काम नहीं करता और आम तौर पर गलत इस्तेमाल किए जाने वाले Display API:
ज़्यादा जानकारी के लिए, यह देखें मल्टी-विंडो मोड की सुविधा.
गलत व्यू एपीआई:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_issue.png?authuser=0000&hl=hi)
काम न करने वाला एपीआई, ऐप्लिकेशन की सीमाओं का गलत हिसाब लगाता है. ऐप्लिकेशन का कॉन्टेंट स्क्रीन से हट जाता है.
ऑप्टिमाइज़ेशन
यूज़र इंटरफ़ेस (यूआई) एलिमेंट की जगह तय करने के लिए, कभी भी फ़िज़िकल डिसप्ले साइज़ पर भरोसा न करें. अपने
WindowMetrics
पर आधारित ऐप्लिकेशन से एपीआई पर आधारित. इसमें ये चीज़ें भी शामिल हैं
WindowManager
एपीआई:
प्लेटफ़ॉर्म:
जेटपैक:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_optimization.png?authuser=0000&hl=hi)
एपीआई, ऐप्लिकेशन विंडो मेट्रिक को सही तरीके से कैलकुलेट करता है.
कंपैटबिलिटी से जुड़े समाधान
दो बदलाव, काम नहीं करने वाले Display
एपीआई और View
एपीआई का गलत इस्तेमाल इन कामों के लिए करते हैं
ऐप्लिकेशन की सीमाएं दिखाएं:
Display
के लिए ALWAYS_SANDBOX_DISPLAY_APIS
एपीआई; OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
View
एपीआई के लिए. ALWAYS_SANDBOX_DISPLAY_APIS
इस पर डिफ़ॉल्ट रूप से भी लागू होता है
ऐसे ऐप्लिकेशन जो साइज़ के साथ काम करने वाले मोड के साथ काम करते हैं.
ट्रांसपैरंट ऐक्टिविटी
पारदर्शी गतिविधियां, पारदर्शी बैकग्राउंड स्टाइल की वजह से होती हैं. उदाहरण:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
डायलॉग से जुड़ी थीम, जैसे कि Theme.MaterialComponents.Dialog
से
गतिविधियों को पारदर्शी बनाने वाली स्टाइल शामिल करें.
पारदर्शी गतिविधियां सभी उपलब्ध डिसप्ले स्पेस को कवर नहीं करती हैं. इसकी वजह से उन्हें मैनेज करना मुश्किल हो सकता है, क्योंकि डिसप्ले एरिया में जगह की जानकारी के कॉन्फ़िगरेशन में कई बदलाव होते हैं, जैसे कि डिवाइस को घुमाना, डिवाइस को फ़ोल्ड करना और अनफ़ोल्ड करना, और मल्टी-विंडो मोड.
समस्या
एक पारदर्शी गतिविधि, पहली ओपेक गतिविधि की सीमाओं के अनुरूप होनी चाहिए को टास्क की गतिविधि स्टैक में पारदर्शी गतिविधि के नीचे रखा गया है. हालांकि, एक ओपेक अनुमति वाला डायलॉग बॉक्स लॉन्च करने पर, ट्रैम्पोलिन (ऐसी गतिविधि जो किसी दूसरी गतिविधि को लॉन्च करती है और फिर गायब हो जाती है); और इसलिए, सिस्टम ट्रैंपोलिन गतिविधि की सीमाओं का पता नहीं लगा सकता पारदर्शी अनुमति वाली डायलॉग गतिविधि लॉन्च की गई.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_issue.png?authuser=0000&hl=hi)
डायलॉग बॉक्स की पोज़िशन गलत हो गई, क्योंकि गतिविधि को ट्रैंपोलिन से लॉन्च किया गया था.
ऑप्टिमाइज़ेशन
पारदर्शी गतिविधियां अपनी कंस्ट्रेंट को सबसे ऊपर की ओपेक से इनहेरिट करती हैं गतिविधि को ट्रैक करें. ओपेक गतिविधि गतिविधि से, पारदर्शी गतिविधि की पूरी लाइफ़साइकल के लिए उपलब्ध होता है तबाही मचाने को तैयार हो जाएं. इस वजह से, इनसे अनुमति के अनुरोध लॉन्च न करें ट्रैंपोलिन वाली गतिविधियां.
अगर कोई ट्रैंपोलिन गतिविधि किसी अनुमति का अनुरोध लॉन्च करती है, तो हो सकता है कि उपयोगकर्ता अनुमति वाला डायलॉग देख पाएगा, क्योंकि ट्रैंपोलिन गतिविधि उपयोगकर्ता को डायलॉग का जवाब देने का मौका मिलने से पहले ही उसे नष्ट कर दिया जाता है और डायलॉग गतिविधि के डाइमेंशन और पोज़िशन का हिसाब लगाया जा सकता है गलत तरीके से.
ऐप्लिकेशन को हमेशा ऐसी गतिविधियों से अनुमति के अनुरोध लॉन्च करने चाहिए जो तब तक नहीं दिखते, जब तक उपयोगकर्ता अनुमति पर कोई फ़ैसला न ले ले.
गोल कोने
बैकग्राउंड की जानकारी देने वाली स्टाइल की वजह से, कोई गतिविधि पारदर्शी हो सकती है या गतिविधि की सामग्री उपलब्ध जानकारी को पूरा नहीं करती है डिसप्ले स्पेस. अगर कोई पारदर्शी गतिविधि उपलब्ध डिसप्ले स्पेस में भर जाती है, तो कॉन्फ़िगर किए जाने पर, सिस्टम अपने-आप गतिविधि के किनारों के चारों कोनों को ऐसा डिवाइस मैन्युफ़ैक्चरर के ज़रिए भी किया जा सकता है. हालांकि, अगर एक पारदर्शी गतिविधि (जैसे कि अनुमति वाला डायलॉग बॉक्स) उपलब्ध जगह को नहीं भरता, इसका फ़ैसला आपको करना है चुनें कि गोल कोने वाले कोने को लागू करना है या नहीं.
अनुमति वाले डायलॉग बॉक्स, डिसप्ले के लिए उपलब्ध जगह नहीं भर रहे, क्योंकि डायलॉग लेआउट आमतौर पर LayoutParams.WRAP_CONTENT का उपयोग LayoutParams.MATCH_PARENT.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_optimization.png?authuser=0000&hl=hi)
गोल कोने वाला डायलॉग बॉक्स, लॉन्च की जा रही गतिविधि के ऊपर ठीक से रखा गया है.
कंपैटबिलिटी से जुड़े समाधान
डायलॉग गतिविधियों को लॉन्च करने वाली गतिविधियों को तब तक दिखाएं, जब तक उपयोगकर्ता ने डायलॉग का जवाब दिया.
सिस्टम यह पक्का करता है कि एक पारदर्शी गतिविधि, गतिविधि स्टैक में पारदर्शी गतिविधि के नीचे पहली ओपेक गतिविधि, इसमें इनसे जुड़ी पाबंदियां शामिल हैं:
- साइज़ के साथ काम करने वाला मोड
- ओरिएंटेशन
- आसपेक्ट रेशियो
यूनिटी गेम
Unity गेम, Android की फ़ुल स्क्रीन या मल्टी-विंडो मोड में चलते हैं. हालांकि, Unity के कई गेम का फ़ोकस बंद हो जाता है और ऐप्लिकेशन चालू होने पर, वे कॉन्टेंट बनाना बंद कर देते हैं मल्टी-विंडो मोड.
समस्या
Unity ने Resizable Window
जोड़ा
Android पर मल्टी-विंडो मोड के साथ काम करने के लिए, Unity 2019.4 में उपलब्ध विकल्प. हालांकि,
शुरुआती लागू करने पर, ऐक्टिविटी लाइफ़साइकल में कोई बदलाव नहीं हुआ
सही तरीके से मल्टी-विंडो मोड की मदद से,
ऐप्लिकेशन पर फ़ोकस न होने पर, UnityPlayer वीडियो चलाना बंद कर देगा. प्लेयर ने
ब्लैक स्क्रीन या गेम का आखिरी, रुका हुआ फ़्रेम. गेमप्ले सिर्फ़ तब फिर से शुरू हुआ, जब
उपयोगकर्ता ने स्क्रीन पर टैप किया. Unity इंजन का इस्तेमाल करने वाले कई ऐप्लिकेशन को यह समस्या आती है और
मल्टी-विंडो मोड में ब्लैक विंडो के रूप में रेंडर करना.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_issue.gif?authuser=0000&hl=hi)
मल्टी-विंडो मोड में, गेम फ़ोकस खो देता है और काली विंडो के तौर पर रेंडर हो जाता है.
ऑप्टिमाइज़ेशन
Unity को 2019.4.40 या इसके बाद के वर्शन पर अपग्रेड करें और अपने गेम को फिर से एक्सपोर्ट करें. बनाए रखें
Resizable Window
विकल्प ने चेक इन किया
Android Player की सेटिंग, अन्य मामलों में
फ़ोकस न होने पर गेम रुक जाता है, भले ही गेम पूरी तरह स्क्रीन पर दिख रहा हो
मल्टी-विंडो मोड.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_optimization.gif?authuser=0000&hl=hi)
गेम, कॉन्टेंट को मल्टी-विंडो मोड में सही तरीके से रेंडर करता है. भले ही, वह फ़ोकस में न हो.
कंपैटबिलिटी से जुड़े समाधान
डिवाइस बनाने वाली कंपनियां,
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
हर ऐप्लिकेशन में, ऐप्लिकेशन पर नकली फ़ोकस इवेंट उपलब्ध कराने के लिए
मल्टी-विंडो मोड. इस बदलाव से, कॉन्टेंट को फिर से रॉ बदलाव किया जा सकता है और
छिपाए नहीं जाएंगे.
साथ काम करने से जुड़ी समस्याओं का पता लगाने के लिए, अपने ऐप्लिकेशन की जांच करें
अपने ऐप्लिकेशन की जांच करने और अलग-अलग डिवाइस टाइप के हिसाब से काम करने के तरीके को समझने के लिए, के फ़ायदे हैं:
- डिवाइस की स्ट्रीमिंग: प्रोडक्शन डिवाइसों (इनमें ये डिवाइस शामिल हैं) पर अपने ऐप्लिकेशन की जांच करने के लिए रेफ़रंस डिवाइस), Google के डेटा सेंटर में होस्ट किए गए हैं, यहां देखें Firebase की ओर से Android डिवाइस स्ट्रीमिंग
- Android Studio Hedgehog में उपलब्ध एम्युलेटर: यह टूल, रेफ़रंस डिवाइस के लिए एम्युलेटर, देखें वर्चुअल डिवाइसों को बनाएं और मैनेज करें
- Android Studio के साइज़ में बदलाव करने की सुविधा वाला एम्युलेटर: वर्चुअल डेटा को ऐक्सेस करने के बारे में जानकारी के लिए डिवाइस, Android Emulator पर ऐप्लिकेशन चलाएं को देखें
लेटरबॉक्स किया गया है
पुष्टि करें कि हर गतिविधि, ऐप्लिकेशन के लिए उपलब्ध पूरी डिसप्ले स्पेस का इस्तेमाल कर सकती है. सबसे पहले, अपने टेस्ट फ़ोल्डर में इस कोड के बारे में बताएं:
Kotlin
fun Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
Java
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
इसके बाद, टेस्ट करें और पक्का करें कि टारगेट गतिविधि लेटरबॉक्स किया गया:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
आम तौर पर, इस तरह की जांच तब तक करें, जब तक यह पास न हो जाए और यह पुष्टि न हो जाए कि आपका ऐप्लिकेशन ऐक्टिविटी, ऐप्लिकेशन के लिए उपलब्ध पूरी डिसप्ले स्पेस का इस्तेमाल करती हैं. अपने ऐप्लिकेशन की जांच करें सभी तरह के डिवाइस पर लागू किया जा सकता है, ताकि सभी लोग एक जैसा व्यवहार कर सकें.
हर ऐप्लिकेशन के हिसाब से बदलाव
Android ऐसी सेटिंग उपलब्ध कराता है जिनसे ऐप्लिकेशन के कॉन्फ़िगर किए गए तरीके में बदलाव होता है. इसके लिए
उदाहरण के लिए, FORCE_RESIZE_APP
ओवरराइड,
साइज़ के साथ काम करने वाले मोड को बायपास करने और डिसप्ले को फ़िट करने के लिए ऐप्लिकेशन का साइज़ बदलने के लिए सिस्टम
डाइमेंशन, भले ही resizeableActivity="false"
ऐप्लिकेशन मेनिफ़ेस्ट में बताए गए हैं.
डिवाइस बनाने वाली कंपनियां चुनिंदा ऐप्लिकेशन या सभी ऐप्लिकेशन पर बदलाव लागू करती हैं बड़ी स्क्रीन वाले खास डिवाइसों के लिए. Android 14 (एपीआई लेवल 34) और उसके बाद के वर्शन वाले डिवाइसों पर, उपयोगकर्ताओं को डिवाइस की सेटिंग में जाकर, ऐप्लिकेशन पर बदलाव लागू कर सकते हैं.
हर ऐप्लिकेशन के हिसाब से उपयोगकर्ताओं की संख्या में हुए बदलाव
Android 14 और उसके बाद के वर्शन में, सेटिंग मेन्यू की मदद से लोग स्क्रीन का आसपेक्ट रेशियो बदल सकते हैं ऐप्लिकेशन का अनुपात क्या है. बड़ी स्क्रीन वाले डिवाइस, जैसे कि रेफ़रंस डिवाइसों पर मेन्यू लागू करता है.
मेन्यू में डिवाइस पर इंस्टॉल किए गए सभी ऐप्लिकेशन की सूची होती है. उपयोगकर्ता इनमें से कोई एक विकल्प चुनते हैं ऐप्लिकेशन का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 3:4, 1:1, फ़ुल स्क्रीन या अन्य वैल्यू पर सेट करें कॉन्फ़िगर किया जाता है. उपयोगकर्ता, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को इस पर भी रीसेट कर सकते हैं: ऐप्लिकेशन का डिफ़ॉल्ट ऐप्लिकेशन, जिसकी जानकारी ऐप्लिकेशन मेनिफ़ेस्ट में दी गई है.
इन PackageManager.Property
टैग को सेट करके, ऐप्लिकेशन साथ काम करने से जुड़े नियमों के मुताबिक होने की सेटिंग से ऑप्ट आउट कर सकते हैं:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
उपयोगकर्ता के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) के साथ काम करने की सुविधा के ओवरराइड से ऑप्ट आउट करने के लिए, प्रॉपर्टी जोड़ें जोड़ें और मान को
false
पर सेट करें:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
डिवाइस सेटिंग में आपके ऐप्लिकेशन को ऐप्लिकेशन की सूची से हटा दिया जाएगा. लोग ऐप्लिकेशन के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को नहीं बदला जा सकेगा.
प्रॉपर्टी को
true
पर सेट करने से कोई असर नहीं पड़ता.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
उपयोगकर्ता के आसपेक्ट रेशियो के साथ काम करने वाले आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) के फ़ुल-स्क्रीन विकल्प से ऑप्ट आउट करने के लिए ओवरराइड करें, प्रॉपर्टी को अपने ऐप्लिकेशन मेनिफ़ेस्ट में जोड़ें और मान
false
:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
फ़ुल-स्क्रीन विकल्प को, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) के विकल्पों की सूची से हटा दिया जाता है डिवाइस की सेटिंग. उपयोगकर्ता इन पर फ़ुल-स्क्रीन ओवरराइड लागू नहीं कर पाएंगे आपका ऐप्लिकेशन.
इस प्रॉपर्टी को
true
पर सेट करने से कोई असर नहीं पड़ता.
सभी स्क्रीन के लिए अपना ऐप्लिकेशन ऑप्टिमाइज़ करें: इनमें आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियां सेट न करें आपका ऐप्लिकेशन. अलग-अलग इमेज के साथ काम करने के लिए, विंडो साइज़ क्लास का इस्तेमाल करें उपलब्ध डिसप्ले स्पेस के हिसाब से लेआउट.
डिवाइस बनाने वाली कंपनी के हिसाब से ऐप्लिकेशन में किए गए बदलाव
डिवाइस बनाने वाली कंपनियां, चुनिंदा डिवाइसों पर हर ऐप्लिकेशन के हिसाब से बदलाव लागू करती हैं. पहचान डिवाइस अलग-अलग तरह के ऐप्लिकेशन डिफ़ॉल्ट रूप से.
ऐप्लिकेशन, ज़्यादातर बदलावों से ऑप्ट आउट कर सकते हैं (हर ऐप्लिकेशन के हिसाब से देखें) ओवरराइड टेबल देखें).
ऐप्लिकेशन के साथ काम करने की सुविधा का इस्तेमाल करके, यह जांच की जा सकती है कि ऐप्लिकेशन में बदलावों को चालू या बंद किया गया है या नहीं फ़्रेमवर्क का इस्तेमाल किया जा सकता है (कंपैटबिलिटी फ़्रेमवर्क टूल देखें). चालू होने पर, बदलाव पूरे ऐप्लिकेशन पर लागू होते हैं.
इसे चालू करने के लिए, Android डीबग ब्रिज (adb) का भी इस्तेमाल किया जा सकता है बदलावों को बंद करें और तय करें कि कौनसे बदलाव आपके ऐप्लिकेशन पर लागू होंगे.
बदलावों को इस तरह से चालू या बंद करें:
adb shell am compat enable/disable <override name/id> <package>
पहचान डिवाइसों के लिए, देखें कि कौनसे बदलाव इन पर लागू होते हैं आपका ऐप्लिकेशन:
adb shell dumpsys platform_compat | grep <package name>
नीचे दी गई टेबल में, बदलाव करने के उपलब्ध तरीकों की सूची दी गई है. साथ ही, अपने ऐप्लिकेशन को ऑप्टिमाइज़ करें, ताकि ऐप्लिकेशन को बदलावों पर भरोसा न करना पड़े. आप ये चीज़ें जोड़ सकते हैं प्रॉपर्टी फ़्लैग का इस्तेमाल करके, कुछ बदलावों से ऑप्ट आउट कर सकते हैं.
हर ऐप्लिकेशन के हिसाब से बदलाव | |||
---|---|---|---|
टाइप | नाम | आईडी | ब्यौरा |
साइज़ बदलने की क्षमता | FORCE_RESIZE_APP | 174042936 | कॉन्फ़िगरेशन में बदलाव होने पर, ऐप्लिकेशन के साइज़ के साथ काम करने वाले मोड को बायपास करता है. |
FORCE_NON_RESIZE_APP | 181136395 | कॉन्फ़िगरेशन में बदलाव करने पर, ऐप्लिकेशन को साइज़ के साथ काम करने वाले मोड में लागू करता है. | |
आसपेक्ट रेशियो | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | आसपेक्ट रेशियो में बदलाव करने के लिए, गेटकीपर को बदलना ज़रूरी है. |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | यह नीति चालू होने पर, सिर्फ़ पोर्ट्रेट मोड में की जाने वाली गतिविधियों को सीमित किया जा सकता है. | |
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | इससे आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 3:2 हो जाता है. | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | इसके बाद, यह कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को 16:9 पर सेट कर देता है. | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | यह नीति, स्क्रीन के 50% या स्प्लिट स्क्रीन वाले आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में फ़िट करने के लिए, कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में बदलाव करती है. | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | इससे कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) ओवरराइड की सुविधा बंद हो जाती है, ताकि डिवाइस पोर्ट्रेट होने पर ऐप्लिकेशन फ़ुल स्क्रीन मोड में दिखें. | |
ओरिएंटेशन | OVERRIDE_ANY_ORIENTATION | 265464455 | यह किसी भी ओरिएंटेशन को ओवरराइड करने की सुविधा चालू करता है. |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | यह ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियों को बदलता है. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | किसी गतिविधि का ओरिएंटेशन (स्क्रीन की दिशा) तय नहीं होने पर, ओरिएंटेशन को पोर्ट्रेट में बदल देता है. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | किसी गतिविधि का ओरिएंटेशन (स्क्रीन की दिशा) तय नहीं होने पर, ओरिएंटेशन को nosensor पर बदल देता है (डिवाइस के नैचुरल ओरिएंटेशन का इस्तेमाल करें). |
|
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | सिर्फ़ लैंडस्केप ऐप्लिकेशन को 180 डिग्री घुमाता है. | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | इससे ऐप्लिकेशन, कैमरे से कनेक्ट होने पर, स्क्रीन की दिशा को बदलने के दायरे को सीमित करता है. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | टास्क के फ़ुल स्क्रीन मोड में होने पर, डिसप्ले का नैचुरल ओरिएंटेशन वाला लैंडस्केप सेट किया जाता है. लेटरबॉक्स किए गए टास्क के मामले में भी यह सेट किया जा सकता है. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_GET_ORIENTATION | 254631730 | रोटेशन अनंत लूप से बचने के लिए ऐप्लिकेशन के स्क्रीन की दिशा के अनुरोधों को अनदेखा करता है. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | किसी गतिविधि को फिर से लॉन्च करने पर, स्क्रीन की दिशा के बार-बार किए जाने वाले अनुरोधों पर ध्यान नहीं देता. अगर Android को पता चलता है कि कोई ऐप्लिकेशन एक सेकंड के अंदर कम से कम दो नए ओरिएंटेशन का अनुरोध कर रहा है, तो सिस्टम इसे रोटेशन इनफ़ाइनाइट लूप मानता है और ओवरराइड करता है. | |
OVERRIDE_RESPECT_अनुरोधित_ORIENTATION | 236283604 | डिवाइस बनाने वाली कंपनी की स्क्रीन की दिशा को अनदेखा करने की सेटिंग को बंद करके, लेटरबॉक्स किए जाने से बचा जा सकता है. | |
सैंडबॉक्स एपीआई | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | यह नीति किसी भी Display API के काम करने के तरीके को बदलने से रोकती है. |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | इससे ऐप्लिकेशन में Display एपीआई को ऐप्लिकेशन की सीमाएं दिखाने के लिए सेट किया जाता है. Display एपीआई, डिसप्ले एरिया की लॉजिकल बाउंड दिखाते हैं. हालांकि, कभी-कभी ऐप्लिकेशन यह मान लेता है कि Display एपीआई, ऐप्लिकेशन की सीमाएं दिखाता है. इस वजह से, यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्याएं होती हैं. |
|
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | ऐप्लिकेशन में इस्तेमाल किए गए View एपीआई को ऐप्लिकेशन की सीमाएं दिखाने के लिए बाध्य करता है. View एपीआई, डिसप्ले एरिया की लॉजिकल बाउंड दिखाते हैं. हालांकि, कभी-कभी ऐप्लिकेशन यह मान लेता है कि View एपीआई, ऐप्लिकेशन की सीमाएं दिखाता है. इस वजह से, यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्याएं होती हैं. |
|
कैमरे की परफ़ॉर्मेंस | OVERRIDE_CAMERA_COMPAT_ बेहतरीन_FORCE_ROTATION | 263959004 | फ़ोर्स रोटेशन बंद कर देता है. कैमरा प्रीव्यू के चालू होने पर, डिफ़ॉल्ट रूप से फ़िक्स्ड-ओरिएंटेशन वाले सभी कैमरा ऐप्लिकेशन ज़बरदस्ती घुमाए जाते हैं. |
OVERRIDE_CAMERA_COMPAT_ डिसेल_REFRESH | 264304459 | इससे, कैमरे की झलक को ज़बरदस्ती घुमाने पर, डिफ़ॉल्ट रूप से हार्ड रीफ़्रेश नहीं होता. | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | कैमरे की झलक को ज़बरदस्ती घुमाने पर, हार्ड रीफ़्रेश को सॉफ़्ट रीफ़्रेश पर स्विच कर देता है. इससे, फ़ोर्स रोटेशन के दौरान स्थिति को बनाए रखने में मदद मिलती है. डिफ़ॉल्ट रूप से, जब कैमरे की झलक को ज़बरदस्ती घुमाया जाता है, तो Android हार्ड रीफ़्रेश लागू करता है. हार्ड रीफ़्रेश होने से, ऐप्लिकेशन की स्थिति खराब होने या ब्लैक आउट होने की समस्याएं हो सकती हैं. यह इस बात पर निर्भर करता है कि ऐप्लिकेशन ने पिछली स्थिति को कैसे कैश मेमोरी में सेव किया था. | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | सामने वाले कैमरे के इमेज बफ़र को काटें. अगर इस सेटिंग को बदलने की सुविधा बंद है, तो सामने वाले कैमरे के ज़रिए काटे जाने की सुविधा हटा दी जाती है. साथ ही, कैमरे की झलक का फ़ील्ड ऑफ़ व्यू (कैमरे से दिख रहा व्यू) बढ़ जाता है. फ़ोल्ड किए जा सकने वाले कुछ डिवाइसों पर डिफ़ॉल्ट रूप से, रेफ़रंस डिवाइस देखें. इनर फ़्रंट कैमरे का इस्तेमाल करते समय, सिस्टम सभी कैमरा ऐप्लिकेशन के कैमरे की झलक को क्रॉप करता है. | |
अन्य चीज़ें | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | स्प्लिट स्क्रीन मोड में फ़ोकस न होने पर, यह ऐप्लिकेशन को ब्लैक आउट होने से रोकता है. ऐप्लिकेशन का कॉन्टेंट ड्रॉ करने से पहले, वह फ़ोकस का इंतज़ार करता है. इस वजह से, ऐप्लिकेशन फ़्रीज़ हो सकता है या ब्लैक आउट हो सकता है. इस बदलाव से Android, ऐप्लिकेशन में एक नकली फ़ोकस इवेंट भेज पाता है. इससे ऐप्लिकेशन को यह सिग्नल फिर से मिलता है कि वह कॉन्टेंट बनाना शुरू कर दे. |
FORCE_RESIZE_APP
जिन पैकेज पर बदलाव लागू किया गया है उनका साइज़ बदलने के लिए, उन्हें हर हाल में लागू करता है. क्या नहीं है ऐप्लिकेशन को मल्टी-विंडो मोड में रखा जा सकता है या नहीं, यह बदलने के लिए, लेकिन इस ऐप्लिकेशन की मदद से स्क्रीन का साइज़ बदलने पर, साइज़ के साथ काम करने वाले मोड में डाले बिना साइज़ बदला जा सकता है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
ऐप्लिकेशन मेनिफ़ेस्ट में, या तो
android:resizeableActivity
एट्रिब्यूट की वैल्यू के तौर पर true
को या इसे
साथ ही, मल्टी-विंडो मोड की सुविधा बंद करते समय, साइज़ बदलने में
android:resizeableActivity=false
, android.supports_size_changes
सेट करें
मेटाडेटा को फ़्लैग करके true
पर पोस्ट किया गया.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
रिस्पॉन्सिव/अडैप्टिव लेआउट का इस्तेमाल करके, ऐप्लिकेशन को हर साइज़ के डिसप्ले साइज़ के हिसाब से बनाने की सुविधा दें और आसपेक्ट रेशियो या लंबाई-चौड़ाई का अनुपात. यहां जाएं: अलग-अलग साइज़ की स्क्रीन पर काम करें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
को इस पर सेट करें
false
.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने और ऐप्लिकेशन का साइज़ बदलने के लिए:
adb shell am compat enable FORCE_RESIZE_APP <package>
बदलाव को हटाने के लिए:
adb shell am compat disable FORCE_RESIZE_APP <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
FORCE_NON_RESIZE_APP
उन पैकेज को हर हाल में लागू करता है जिन पर बदलाव लागू किया गया है. इसका साइज़ न बदला जा सकता है और कॉन्फ़िगरेशन में बदलाव होने पर, साइज़ के साथ काम करने वाले मोड पर जाएं.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
android:resizeableActivity
एट्रिब्यूट और, दोनों को सेट करें
ऐप्लिकेशन मेनिफ़ेस्ट में, false
के लिए android.supports_size_changes
मेटाडेटा फ़्लैग,
साथ ही, स्क्रीन की दिशा या आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदी भी लगाई जा सकती है.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
साइज़ बदलने पर अच्छा काम करने वाले सभी ऐप्लिकेशन में
android:resizeableActivity
या android.supports_size_changes
को true
पर सेट किया गया.
साइज़ बदलने पर ठीक तरह से काम करने के लिए, दूसरे ऐप्लिकेशन को बेहतर बनाया जाना चाहिए. यहां जाएं:
android:resizeableActivity को सबमिट करना.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
को इस पर सेट करें
false
.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने और ऐप्लिकेशन का साइज़ न बदलने के लिए:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
बदलाव को हटाने के लिए:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO
उन सभी चीज़ों के लिए गेटकीपर जो किसी दिए गए कम से कम आसपेक्ट रेशियो को लागू करती हैं.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
गतिविधि या ऐप्लिकेशन के लेवल पर android:minAspectRatio
सेट करें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
अपने ऐप्लिकेशन में आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियां सेट न करें. पक्का करें कि आपका ऐप्लिकेशन काम करता है
अलग-अलग स्क्रीन साइज़ के हिसाब से ब्राउज़ करें. विंडो साइज़ की क्लास का इस्तेमाल करना
ऐप्लिकेशन के स्टोरेज के हिसाब से, अलग-अलग लेआउट बनाने के लिए
स्क्रीन. Compose WindowSizeClass
API देखें
और WindowSizeClass
एपीआई देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) की पाबंदी लगाएं या प्रॉपर्टी फ़्लैग सेट करें
false
के लिए PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
इस नीति से, ऐप्लिकेशन की उन सेटिंग पर रोक लगाई जाती है जो गतिविधियों के लिए, दिए गए कम से कम आसपेक्ट रेशियो को लागू करती हैं
साथ ही, स्क्रीन की दिशा सिर्फ़ पोर्ट्रेट ओरिएंटेशन में हो. यह डिफ़ॉल्ट रूप से चालू होता है और सिर्फ़ तब लागू होता है
अगर OVERRIDE_MIN_ASPECT_RATIO
भी चालू है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_MIN_ASPECT_RATIO देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
गतिविधि के कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को मीडियम वैल्यू (3:2) पर सेट करता है
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_MIN_ASPECT_RATIO देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
इससे गतिविधि के कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को बड़ी वैल्यू (16:9) पर सेट किया जाता है
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_MIN_ASPECT_RATIO देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
स्प्लिट स्क्रीन आसपेक्ट रेशियो के इस्तेमाल को चालू करता है. इससे ऐप्लिकेशन को स्प्लिट स्क्रीन मोड में खाली जगह हो और लेटरबॉक्स करने की ज़रूरत न पड़े.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_MIN_ASPECT_RATIO देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
सभी का इस्तेमाल करने के लिए, पोर्ट्रेट फ़ुल स्क्रीन में कम से कम आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) ओवरराइड की सुविधा बंद करता है उपलब्ध स्क्रीन स्पेस.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_MIN_ASPECT_RATIO देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_MIN_ASPECT_RATIO देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ANY_ORIENTATION
किसी भी ओरिएंटेशन को बदलने के लिए, इन बदलावों को चालू करता है:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
activity:screenOrientation
मेनिफ़ेस्ट एट्रिब्यूट सेट करें,
या Activity#setRequestedOrientation()
एपीआई का इस्तेमाल करें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
आपके ऐप्लिकेशन को सभी ओरिएंटेशन (स्क्रीन की दिशा) पर काम करना चाहिए. स्क्रीन की दिशा में बदलाव
कॉन्फ़िगरेशन में बदलाव किया जा सकता है, जिसे दो में से किसी एक तरीके से हैंडल किया जा सकता है:
ऐप्लिकेशन को बंद करके उसे फिर से बनाना या कॉन्फ़िगरेशन के बदलावों को मैनेज करना
खुद को बेहतर बनाएं. अगर कॉन्फ़िगरेशन में किए गए बदलावों को खुद मैनेज किया जाता है, तो ऐप्लिकेशन की स्थिति
ViewModel
का इस्तेमाल करके बनाए रखा गया है. बहुत सीमित मामलों में, आपके पास एक ही विकल्प होता है.
स्क्रीन की दिशा में सिर्फ़ छोटे डिसप्ले पर ही स्क्रीन की दिशा दिखाएं. हालांकि, हो सकता है कि ऐसा करने पर, उपयोगकर्ताओं को
ताकि उपयोगकर्ता, ऐप्लिकेशन को ज़रूरत के हिसाब से घुमा सके. Android 12L और उसके बाद के वर्शन पर,
निश्चित ओरिएंटेशन को डिवाइस कॉन्फ़िगरेशन से बदला जा सकता है. ज़्यादा के लिए
कॉन्फ़िगरेशन के बदलावों को मैनेज करने और उन सभी को सपोर्ट करने के बारे में जानकारी
ओरिएंटेशन देखने के लिए, कॉन्फ़िगरेशन के बदलावों को मैनेज करना देखें,
ViewModel की खास जानकारी और ऐप्लिकेशन ओरिएंटेशन इन पर पाबंदी है
फ़ोन है, लेकिन बड़ी स्क्रीन वाले डिवाइसों पर नहीं.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ANY_ORIENTATION_TO_USER
इससे ऐप्लिकेशन, डिसप्ले के लिए उपलब्ध जगह को भर पाएगा. सभी ओरिएंटेशन को बदल देता है,
साइज़ और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियों के बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया गया है. साथ ही
के किसी भी कॉल को अनदेखा करता है
Activity#setRequestedOrientation()
.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
android:screenOrientation
मेनिफ़ेस्ट सेट न करें एट्रिब्यूट का इस्तेमाल करें या एट्रिब्यूट को"user"
पर सेट करें.android:resizeableActivity
मेनिफ़ेस्ट सेट करें एट्रिब्यूट की वैल्यूtrue
को दें.छोटी स्क्रीन पर, मल्टी-विंडो को बंद करने के साथ-साथ, ऐप्लिकेशन का साइज़ बदलने के लिए
android:resizeableActivity=false
के साथ मोड, सेट करेंtrue
परandroid.supports_size_changes
मेटाडेटा फ़्लैग किया गया. सेट न करेंminAspectRatio
औरmaxAspectRatio
.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
अपने ऐप्लिकेशन को सभी ओरिएंटेशन (स्क्रीन की दिशा) पर काम करने के लिए चालू करें; screenOrientation
सेट न करें
के मेनिफ़ेस्ट में दी गई खास जानकारी को पढ़ें. ऐप्लिकेशन के साइज़ में बदलाव करने की सुविधा देता है,
मल्टी-विंडो मोड और सभी डिसप्ले के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) देखने के लिए,
android:resizeableActivity
एट्रिब्यूट का इस्तेमाल करके, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में true
को शामिल करें. यहां जाएं:
अलग-अलग साइज़ की स्क्रीन पर काम करें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
इससे पैकेज की सभी गतिविधियों के लिए पोर्ट्रेट ओरिएंटेशन की सुविधा चालू होती है. जब तक OVERRIDE_ANY_ORIENTATION चालू है, ओवरराइड का इस्तेमाल सिर्फ़ तब किया जाता है, जब गतिविधि में कोई दूसरा तय ओरिएंटेशन तय नहीं किया गया हो.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_ANY_ORIENTATION
देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
नोसेंसर ओरिएंटेशन की सभी गतिविधियों को चालू करता है पैकेज. जब तक OVERRIDE_ANY_ORIENTATION सक्षम करने के बाद, ओवरराइड का उपयोग केवल तब किया जाता है, जब कोई अन्य निश्चित ओरिएंटेशन न किया गया हो गतिविधि से तय होता है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_ANY_ORIENTATION
देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
इसमें सभी गतिविधियों के लिए reverseलैंडस्केप ओरिएंटेशन चालू करता है कोई समस्या नहीं है. जब तक OVERRIDE_ANY_ORIENTATION सक्षम करने के बाद, ओवरराइड का उपयोग केवल तब किया जाता है, जब कोई अन्य निश्चित ओरिएंटेशन न किया गया हो गतिविधि से तय होता है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_ANY_ORIENTATION
देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
सीमाएं OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR, और OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE कैमरा कनेक्शन चालू होने पर ही ये सेटिंग लागू होती हैं.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
OVERRIDE_ANY_ORIENTATION
देखें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
इससे डिसप्ले स्क्रीन की दिशा लैंडस्केप मोड में बदल जाती है, जब ये शर्तें पूरी होती हैं:
- गतिविधि फ़ुल स्क्रीन मोड में है
- कॉम्पोनेंट प्रॉपर्टी को ऑप्ट आउट करना
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
चालू नहीं किया गया - डिवाइस बनाने वाली कंपनी की ओर से स्क्रीन की दिशा को नज़रअंदाज़ करने के अनुरोध की सेटिंग चालू है डिसप्ले
- डिसप्ले का नैचुरल ओरिएंटेशन लैंडस्केप है
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
लागू नहीं. समस्या को ऐप्लिकेशन लॉजिक में हल किया जाना चाहिए.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ENABLE_COMPAT_IGNORE_WITH_ORIENTATION
ऐसी अनुपालन नीति चालू करती है जो ऐप्लिकेशन के जवाब में, ऐप्लिकेशन ओरिएंटेशन अपडेट नहीं करती
ऐप्लिकेशन होने पर Activity#setRequestedOrientation()
को कॉल किया जा रहा है
फिर से लॉन्च कर रहा है या कैमरे के साथ काम कर रहा है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
true
तक.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
ऐसी काम करने की नीति को चालू करता है जो इसमें ऐप्लिकेशन के अनुरोध किए गए ओरिएंटेशन को अनदेखा कर देती है
ऐप्लिकेशन के कॉल का जवाब
Activity#setRequestedOrientation()
दो बार से ज़्यादा
में एक सेकंड का समय लगेगा.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
लागू नहीं. समस्या को ऐप्लिकेशन लॉजिक में हल किया जाना चाहिए.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
से
false
.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_RESPECT_अनुरोधित_ORIENTATION
इस नीति से ऐसे पैकेज को बाहर रखा जाता है जिन्हें स्क्रीन की दिशा के अनुरोध को अनदेखा करने की प्रोसेस में शामिल न किया गया हो डिसप्ले एरिया या पूरे डिसप्ले के लिए डिवाइस मैन्युफ़ैक्चरर की ओर से.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
लागू नहीं. समस्या को ऐप्लिकेशन लॉजिक में हल किया जाना चाहिए.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
OVERRIDE_ANY_ORIENTATION
देखें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
ऑप्ट-आउट नहीं किया जा सकता. अगर ऐप्लिकेशन साथ में काम नहीं करता है, तो बदलाव की सुविधा को बंद करना खतरनाक हो सकता है जिसमें डिवाइस बनाने वाली कंपनी ने स्क्रीन की दिशा को नज़रअंदाज़ करने का अनुरोध किया हो सेटिंग चालू की गई. Android डेवलपर से संपर्क करना संबंध का इस्तेमाल करें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
इस बदलाव के लिए कोई प्रॉपर्टी फ़्लैग नहीं है.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
NEVER_SANDBOX_DISPLAY_APIS
पैकेज को कभी भी Display
एपीआई सैंडबॉक्सिंग लागू नहीं करने देता
लेटरबॉक्स या साइज़ के साथ काम करने वाले मोड की गतिविधि के लिए. Display
एपीआई
डिसप्ले एरिया की सीमाएं देना जारी रखें.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
साइज़ बदलने वाली गतिविधियों के बारे में बताएं. इसके लिए,
true
के लिए android:resizeableActivity
मेनिफ़ेस्ट एट्रिब्यूट
या android.supports_size_changes
मेटाडेटा फ़्लैग को true
पर भेजें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
साइज़ को पूरी तरह से बदलने का एलान करने वाले ऐप्लिकेशन को कभी भी डिसप्ले साइज़ पर भरोसा नहीं करना चाहिए
यूज़र इंटरफ़ेस (यूआई) एलिमेंट को पोज़िशन करने के लिए. अपने ऐप्लिकेशन को अप-टू-डेट एपीआई पर माइग्रेट करें,
WindowMetrics
उपलब्ध कराएं. अगर आप Jetpack Compose का इस्तेमाल कर रहे हैं, तो
WindowSizeClass
स्क्रीन कितनी बार है, इसके आधार पर यूज़र इंटरफ़ेस (यूआई) बनाने के लिए एपीआई
मौजूदा डिसप्ले पर ऐप्लिकेशन का एरिया. यहां जाएं:
विंडो साइज़ की क्लास.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
ऑप्ट-आउट नहीं किया जा सकता. काम नहीं करने वाले एपीआई से माइग्रेट करें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
इस बदलाव के लिए कोई प्रॉपर्टी फ़्लैग नहीं है.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
बदलाव को हटाने के लिए:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
ALWAYS_SANDBOX_DISPLAY_APIS
पैकेज को हमेशा Display
एपीआई सैंडबॉक्सिंग लागू करने के लिए मजबूर करता है
विंडोिंग मोड पर ध्यान दिए बिना. Display
एपीआई हमेशा ऐप्लिकेशन की सीमाएं उपलब्ध कराता है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
उन गतिविधियों के बारे में बताएं जिनका साइज़ नहीं बदला जा सकता. इसके लिए,
android:resizeableActivity
एट्रिब्यूट की वैल्यू के तौर पर false
या
false
पर android.supports_size_changes
मेटाडेटा फ़्लैग किया गया.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
साइज़ को पूरी तरह से बदलने का एलान करने वाले ऐप्लिकेशन को इन कामों के लिए, डिसप्ले साइज़ पर निर्भर नहीं रहना चाहिए
यूज़र इंटरफ़ेस (यूआई) एलिमेंट को पोज़िशन करना. अपने ऐप्लिकेशन को काम न करने वाले एपीआई से इस पर माइग्रेट करें
WindowMetrics
उपलब्ध कराने वाले अप-टू-डेट एपीआई. यहां जाएं:
WindowMetricsCalculator
.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
ऑप्ट-आउट नहीं किया जा सकता. काम नहीं करने वाले एपीआई से माइग्रेट करें.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
इस बदलाव के लिए कोई प्रॉपर्टी फ़्लैग नहीं है.
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
बदलाव को हटाने के लिए:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
पैकेज को इन View
एपीआई को गतिविधि की सीमाओं में सैंडबॉक्स करने के लिए मजबूर करता है:
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
ऐप्लिकेशन कोड में आने वाली समस्या को उन एपीआई का इस्तेमाल करके हल करें जिनमें ये शर्तें दी गई हैं: ऐप्लिकेशन विंडो और ऐप्लिकेशन विंडो के संबंध में ऑफ़सेट के बजाय डिवाइस के डिसप्ले और डिवाइस के डिसप्ले के हिसाब से ऑफ़सेट कर सकते हैं.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
लेटरबॉक्स किए जाने की संभावना को ध्यान में रखते हुए, ऐप्लिकेशन को View
एपीआई का इस्तेमाल करना चाहिए
और ऐप्लिकेशन पर मल्टी-विंडो मोड लागू किया जा रहा है. यहां जाएं:
WindowMetricsCalculator
.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_CAMERA_COMPAT_ प्रमोशन_FORCE_ROTATION
बल रोटेशन अक्षम करता है. यह कुछ ऐप्लिकेशन पर उपयोगकर्ता अनुभव को बेहतर बनाता है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
false
तक.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
कैश मेमोरी में सेव किए गए कैमरा सेंसर की स्क्रीन या डिवाइस की जानकारी पर भरोसा न करें. इसके लिए कैमरे के साथ काम करने से जुड़े दिशा-निर्देश, देखें पेश है कैमरा व्यूफ़ाइंडर और सहायता आपके कैमरे में ऐसे सरफ़ेस का साइज़ बदल सकता है जिसका साइज़ बदला जा सकता है ऐप का इस्तेमाल करें.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
true
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
ओवरराइड लागू करने के लिए, जो फ़ोर्स रोटेशन को हटा देता है:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
उस ओवरराइड को हटाने के लिए, जिससे ज़बरदस्ती रोटेशन की अनुमति मिलती है:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_CAMERA_COMPAT_ डिसेल_REFRESH
बल घुमाने के बाद गतिविधि रीफ़्रेश होने की सुविधा बंद करता है. उपयोगकर्ता अनुभव को बेहतर बनाता है जब रीफ़्रेश करने से ऐप्लिकेशन की स्थिति मिट जाती है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
false
तक.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
यहां जाएं: OVERRIDE_CAMERA_COMPAT_ डिसेल_FORCE_ROTATION.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
true
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
गतिविधि को रीफ़्रेश करने के विकल्प को लागू करने के लिए:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
गतिविधि को रीफ़्रेश करने की अनुमति देने वाले बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
onResume()
का इस्तेमाल करके, उन पैकेज को गतिविधि रीफ़्रेश करने के लिए लागू करता है जिन्हें गतिविधि के लिए लागू किया गया है
→ onResume()
के बजाय onPause()
→ onResume()
साइकल →
कैमरे के साथ काम करने के लिए फ़ोर्स रोटेशन के बाद, onStop()
→ onResume()
.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
true
तक.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
यहां जाएं: OVERRIDE_CAMERA_COMPAT_ डिसेल_FORCE_ROTATION.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT
पोर्ट्रेट होने पर कैमरे के आउटपुट को विपरीत ओरिएंटेशन में काटने के लिए मजबूर करता है कैमरा ओरिएंटेशन, डिवाइस के नैचुरल ओरिएंटेशन के साथ मेल नहीं खाता. कई ऐप्लिकेशन इस स्थिति को न संभालें. साथ ही, स्ट्रेच की गई इमेज दिखाएं.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
true
तक.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
यहां जाएं: OVERRIDE_CAMERA_COMPAT_ हटाना_FORCE_ROTATION.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
false
तक.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
इनर फ़्रंट कैमरे से काट-छांट करने की सुविधा लागू करने के लिए:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
इस सेटिंग को हटाने से, सामने वाले कैमरे के ज़रिए काट-छांट करने की सुविधा हट जाती है. इसके लिए:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ अक्षम_MEDIA_PROJECTION_SINGLE_APP_OPTION
ऐप्लिकेशन को स्क्रीन शेयर करने की सुविधा से ऑप्ट आउट करने से रोकता है (देखें
मीडिया प्रोजेक्शन). तब लागू होता है, जब ऐप्लिकेशन
createConfigForDefaultDisplay()
लागू करने के लिए एपीआई
फ़ुल-स्क्रीन कैप्चर करके कॉन्टेंट को सार्वजनिक करके, उपयोगकर्ता की निजता को खतरे में डालना
सूचनाएं मिलती हैं, जिन्हें ऐप्लिकेशन स्क्रीन के बजाय फ़ुल-स्क्रीन में कैप्चर किया जाता है
और सभी ऐप्लिकेशन पर काम करता है. इससे फ़र्क़ नहीं पड़ता कि विंडो मोड क्या है.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
डिफ़ॉल्ट मीडिया प्रोजेक्शन व्यवहार की अनुमति दें (Android 14, एपीआई में लागू किया गया)
लेवल 34, createScreenCaptureIntent()
के साथ),
इससे उपयोगकर्ता यह तय कर सकते हैं कि फ़ुल स्क्रीन शेयर करनी है या कोई एक ऐप्लिकेशन
विंडोिंग मोड पर ध्यान दिए बिना. या कॉल करें
createScreenCaptureIntent(MediaProjectionConfig)
एक MediaProjectionConfig
तर्क के साथ
createConfigForUserChoice()
पर कॉल करें.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
इससे उपयोगकर्ताओं को यह चुनने की अनुमति मिलती है कि किसी ऐप्लिकेशन या डिवाइस का पूरा डिसप्ले शेयर करना है या नहीं विंडो नहीं दिखेगी. यह Android 14 के हिसाब से डिफ़ॉल्ट सेटिंग होती है.
ऐप्लिकेशन का साइज़ बदलने की सुविधा (resizeableActivity="true"
) बनाएं, ताकि
मल्टी-विंडो मोड की सुविधा भी काम करती है.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
उपयोगकर्ता की निजता की सुरक्षा की वजह से, आपका ऐप्लिकेशन न तो बंद कर सकता है और न ही उससे ऑप्ट आउट कर सकता है में से एक है.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
कोई नहीं.
बदलाव की जांच करने के लिए adb कमांड
सेटिंग में बदलाव करने का विकल्प लागू करने के लिए. इससे ऐप्लिकेशन के, स्क्रीन के कुछ हिस्से को शेयर करने की सुविधा से ऑप्ट आउट करने की प्रोसेस रद्द हो जाएगी (इसका मतलब, स्क्रीन के कुछ हिस्से शेयर करने की सुविधा को चालू करता है):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
उस नीति को हटाने के लिए जिससे ऐप्लिकेशन को स्क्रीन के कुछ हिस्से से ऑप्ट आउट करने की अनुमति मिलती है शेयर करना:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
स्प्लिट स्क्रीन मोड में, बिना फ़ोकस वाले ऐप्लिकेशन पर नकली फ़ोकस भेजने की सुविधा चालू करता है. कुछ सूचनाएं मिल रही हैं ऐप्लिकेशन का कॉन्टेंट बनाने से पहले, गेम इंजन फ़ोकस किए जाने का इंतज़ार करते हैं; इसलिए, यह प्रोसेस, ऐप्लिकेशन को दोबारा चालू करने पर उन पर गलत और फ़ोकस करते हैं.
ऐप्लिकेशन को, ओवरराइड के तौर पर मिलने वाला नतीजा कैसे मिल सकता है
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
से
true
.
ऐप्लिकेशन ऑप्टिमाइज़ करने का तरीका
अगर आपका ऐप्लिकेशन एक से ज़्यादा ओरिएंटेशन (स्क्रीन की दिशा) और कॉन्फ़िगरेशन सही तरीके से बदलता है. अपने ऐप्लिकेशन को बड़ी स्क्रीन पर देखने के लिए, यहां दिए गए निर्देशों का पालन करें: बड़ी स्क्रीन वाले ऐप्लिकेशन की क्वालिटी से जुड़े दिशा-निर्देश.
अगर Unity गेम इंजन चलाया जा रहा है, तो 2019.4.40 या इसके बाद के वर्शन में अपग्रेड करें और
अपने गेम को फिर से एक्सपोर्ट करें. Resizable Window
विकल्प को बनाए रखें
Android Player पर जाकर चेक इन किया
सेटिंग.
बदलाव की सुविधा को बंद करने या उससे ऑप्ट आउट करने का तरीका
प्रॉपर्टी फ़्लैग सेट करें
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
से
false
.
बदलाव करने के लिए प्रॉपर्टी फ़्लैग
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
बदलाव की जांच करने के लिए adb कमांड
बदलाव लागू करने के लिए:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
बदलाव को हटाने के लिए:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
ध्यान दें: निर्देश सिर्फ़ कुछ समय के लिए लागू होते हैं या ओवरराइड को हटाते हैं.
अन्य संसाधन
- बड़ी स्क्रीन वाले ऐप्लिकेशन की क्वालिटी से जुड़े दिशा-निर्देश
- ऐप्लिकेशन की क्वालिटी से जुड़े मुख्य दिशा-निर्देश