Android 13 में, डेवलपर के लिए बेहतरीन नई सुविधाएं और एपीआई जोड़े गए हैं. यहां दिए गए सेक्शन में, आपको अपने ऐप्लिकेशन की सुविधाओं के बारे में जानने और उनसे जुड़े एपीआई का इस्तेमाल शुरू करने में मदद मिलेगी.
नए, बदले गए, और हटाए गए एपीआई की पूरी सूची के लिए, एपीआई के बीच अंतर की रिपोर्ट पढ़ें. नए एपीआई के बारे में जानकारी पाने के लिए, Android एपीआई का रेफ़रंस देखें. नए एपीआई को हाइलाइट किया गया है, ताकि उन्हें आसानी से देखा जा सके. साथ ही, उन जगहों के बारे में जानने के लिए जहां प्लैटफ़ॉर्म में हुए बदलावों से आपके ऐप्लिकेशन पर असर पड़ सकता है, Android 13 को टारगेट करने वाले ऐप्लिकेशन और सभी ऐप्लिकेशन के लिए, Android 13 के काम करने के तरीके में हुए बदलावों को देखना न भूलें.
डेवलपर की प्रोडक्टिविटी और टूल
थीम वाले ऐप्लिकेशन के आइकॉन
Android 13 और उसके बाद के वर्शन में, थीम वाले ऐप्लिकेशन आइकॉन के लिए ऑप्ट-इन किया जा सकता है. इस सुविधा की मदद से, काम करने वाले Android लॉन्चर में ऐप्लिकेशन के आइकॉन को रंग दिया जाता है, ताकि उपयोगकर्ता के चुने गए वॉलपेपर और अन्य थीम का रंग इन आइकॉन में दिखे.
इस सुविधा का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन में अडैप्टिव आइकॉन और एक रंग वाला ऐप्लिकॉन, दोनों होने चाहिए. साथ ही, मेनिफ़ेस्ट में <adaptive-icon>
एलिमेंट से एक रंग वाले ऐप्लिकॉन पर ले जाना चाहिए. अगर किसी उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन चालू किए हैं (इसका मतलब है कि सिस्टम की सेटिंग में, थीम वाले आइकॉन टॉगल चालू किया गया है) और लॉन्चर इस सुविधा के साथ काम करता है, तो सिस्टम, उपयोगकर्ता के चुने गए वॉलपेपर और थीम के कलर का इस्तेमाल करके टिंट का रंग तय करता है. इसके बाद, यह मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन पर लागू हो जाता है.
होम स्क्रीन पर थीम वाले ऐप्लिकेशन का आइकॉन नहीं दिखता. इसके बजाय, इनमें से किसी भी स्थिति में, ऐप्लिकेशन का अडैप्टिव या स्टैंडर्ड आइकॉन दिखता है:
- अगर उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन की सुविधा चालू नहीं की है
- अगर आपके ऐप्लिकेशन का आइकॉन एक ही रंग का है
- अगर लॉन्चर पर थीम वाले ऐप्लिकेशन आइकॉन काम नहीं करते
ज़्यादा जानकारी और निर्देशों के लिए, अडैप्टिव आइकॉन देखें.
हर ऐप्लिकेशन के हिसाब से पसंद की भाषा
कई मामलों में, कई भाषाओं का इस्तेमाल करने वाले लोग अपने सिस्टम की भाषा को एक भाषा पर सेट करते हैं, जैसे कि अंग्रेज़ी. हालांकि, वे कुछ ऐप्लिकेशन के लिए, डच, चाइनीज़ या हिन्दी जैसी अन्य भाषाएं चुनना चाहते हैं. Android 13 में इन लोगों को बेहतर अनुभव देने के लिए, कई भाषाओं में काम करने वाले ऐप्लिकेशन के लिए ये सुविधाएं लॉन्च की गई हैं:
सिस्टम सेटिंग: एक ऐसी जगह जहां उपयोगकर्ता हर ऐप्लिकेशन के लिए अपनी पसंदीदा भाषा चुन सकते हैं.
आपके ऐप्लिकेशन के मेनिफ़ेस्ट में
android:localeConfig
एट्रिब्यूट का एलान करना ज़रूरी है, ताकि सिस्टम को यह बताया जा सके कि ऐप्लिकेशन एक से ज़्यादा भाषाओं में काम करता है. ज़्यादा जानने के लिए, रिसॉर्स फ़ाइल बनाने और उसे अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में एलान करने के लिए दिए गए निर्देश देखें.अन्य एपीआई:
LocaleManager
में मौजूदsetApplicationLocales()
औरgetApplicationLocales()
तरीकों जैसे सार्वजनिक एपीआई की मदद से, ऐप्लिकेशन रनटाइम के दौरान सिस्टम की भाषा से अलग भाषा सेट कर सकते हैं.ये एपीआई, सिस्टम सेटिंग के साथ अपने-आप सिंक हो जाते हैं. इसलिए, इन एपीआई का इस्तेमाल करके ऐप्लिकेशन में पसंद के मुताबिक भाषा चुनने की सुविधा बनाने वाले ऐप्लिकेशन, यह पक्का करेंगे कि उनके उपयोगकर्ताओं को एक जैसा अनुभव मिले. भले ही, वे भाषा की प्राथमिकताएं कहीं से भी चुनें. पब्लिक एपीआई की मदद से, बोइलरप्लेट कोड की संख्या कम की जा सकती है. साथ ही, ये अलग-अलग APK के साथ काम करते हैं. साथ ही, ये ऐप्लिकेशन के लिए अपने-आप बैकअप लेने की सुविधा के साथ काम करते हैं, ताकि ऐप्लिकेशन के लेवल पर उपयोगकर्ता की भाषा की सेटिंग सेव की जा सकें.
Android के पुराने वर्शन के साथ काम करने के लिए, AndroidX में भी मिलते-जुलते एपीआई उपलब्ध हैं. हमारा सुझाव है कि आप Appcompat 1.6.0-beta01 या इसके बाद के वर्शन में जोड़े गए एपीआई का इस्तेमाल करें.
जिन ऐप्लिकेशन पर एक से ज़्यादा भाषाएं काम नहीं करतीं उन पर इन बदलावों का कोई असर नहीं पड़ेगा.
टेक्स्ट और भाषा की बेहतर सुविधा
Android 13 में टेक्स्ट और भाषा से जुड़ी कई सुविधाओं में सुधार किए गए हैं. इनसे आपको बेहतर अनुभव देने में मदद मिलती है. इन सुविधाओं के बारे में यहां बताया गया है:
तेज़ी से हायफ़नेशन
हाइफ़न लगाने से, रैप किए गए टेक्स्ट को पढ़ना आसान हो जाता है. साथ ही, इससे आपके यूज़र इंटरफ़ेस (यूआई) को ज़्यादा बेहतर बनाने में मदद मिलती है. Android 13 में, हाइफ़न लगाने की सुविधा की परफ़ॉर्मेंस को 200% तक ऑप्टिमाइज़ किया गया है. इसलिए, TextView
में इस सुविधा को चालू किया जा सकता है. इससे रेंडरिंग की परफ़ॉर्मेंस पर कोई असर नहीं पड़ेगा. हाइफ़न लगाने की सुविधा को तेज़ी से चालू करने के लिए, setHyphenationFrequency()
में fullFast
या normalFast
फ़्रीक्वेंसी का इस्तेमाल करें.
टेक्स्ट कन्वर्ज़न एपीआई
जैपनीज़ और चाइनीज़ जैसी भाषाएं बोलने वाले लोग, फ़ोनेटिक लेटरिंग के इनपुट तरीकों का इस्तेमाल करते हैं. इससे, खोजने की प्रोसेस और अपने-आप शब्दों के पूरे होने जैसी सुविधाएं धीमी हो जाती हैं. Android 13 में, ऐप्लिकेशन नए टेक्स्ट बदलने वाले API को कॉल कर सकते हैं, ताकि उपयोगकर्ता अपनी पसंद की चीज़ें तेज़ी से और आसानी से ढूंढ सकें. उदाहरण के लिए, पहले जापान के उपयोगकर्ता को खोज करने के लिए, ये चरण पूरे करने पड़ते थे:
- खोज के लिए इस्तेमाल हुए शब्द (जैसे, किसी जगह या ऐप्लिकेशन का नाम) का फ़ोनेटिक उच्चारण डालने के लिए, हिरागाना का इस्तेमाल करना
- हीरागाना के किरदारों को कांजी में बदलने के लिए, कीबोर्ड का इस्तेमाल करें
- कांजी वर्णों का इस्तेमाल करके फिर से खोजें
- आखिर में, उन्हें खोज के नतीजे मिलते हैं
टेक्स्ट बदलने वाले नए एपीआई की मदद से, जापानी उपयोगकर्ता हिरागाना टाइप कर सकते हैं और तीसरे और चौथे चरण को छोड़कर, तुरंत कांजी के खोज नतीजे देख सकते हैं.
नॉन-लैटिन स्क्रिप्ट के लिए लाइन हाइट को बेहतर बनाया गया
Android 13 में, हर भाषा के हिसाब से लाइन की ऊंचाई का इस्तेमाल करके, तमिल, बर्मी, तेलुगु, और तिब्बती जैसी ग़ैर-लैटिन लिपि के डिसप्ले को बेहतर बनाया गया है. लाइन की नई हाइट, टेक्स्ट को काटने से रोकती है और वर्णों की पोज़िशन को बेहतर बनाती है. Android 13 को टारगेट करके, आपका ऐप्लिकेशन इन सुधारों का फ़ायदा ले सकता है. लाइन स्पेसिंग के नए तरीके का इस्तेमाल करते समय, अपने ऐप्लिकेशन की जांच करना न भूलें. ऐसा इसलिए, क्योंकि इन बदलावों से, ग़ैर-लैटिन भाषाओं में आपके यूज़र इंटरफ़ेस पर असर पड़ सकता है.
जैपनीज़ भाषा के लिए टेक्स्ट रैपिंग की सुविधा को बेहतर बनाया गया
Android 13 में, TextViews में टेक्स्ट को वर्ण के बजाय, बंसेटु (शब्दों की सबसे छोटी इकाई, जो सुनने में स्वाभाविक लगती है) या वाक्यांशों के हिसाब से रैप किया जा सकता है. इससे, बेहतर और आसानी से पढ़े जा सकने वाले जैपनीज़ ऐप्लिकेशन बनाए जा सकते हैं. TextViews के साथ android:lineBreakWordStyle="phrase"
का इस्तेमाल करके, इस रैपिंग का फ़ायदा लिया जा सकता है.
यूनिकोड लाइब्रेरी से जुड़े अपडेट
Android 13 में, Unicode ICU 70, Unicode CLDR 40, और Unicode 14.0 में शामिल नए सुधार, गड़बड़ियों को ठीक करने के तरीके, और बदलाव जोड़े गए हैं.
यहां कुछ अहम बदलावों के बारे में बताया गया है:
- अंग्रेज़ी (कनाडा)
en‑CA
और अंग्रेज़ी (फ़िलिपींस)en‑PH
, दोनों भाषाओं के लिए अनुवाद के संसाधन उपलब्ध न होने पर, अंग्रेज़ी (संयुक्त राज्य अमेरिका)en
के अनुवाद संसाधनों का इस्तेमाल किया जाता है. हालांकि, अंग्रेज़ी (यूनाइटेड किंगडम)en‑GB
के अनुवाद संसाधनों का इस्तेमाल किया जाता है. many
बहुवचन की कैटगरी, स्पैनिशes
, इटैलियनit
, पॉर्चुगीज़pt
, और पॉर्चुगीज़ (पुर्तगाल)pt‑PT
के लिए उपलब्ध है. CLDR v38 में फ़्रेंच के तौर पर शुरू किए गए इस फ़ॉर्मैट का इस्तेमाल, बड़ी संख्याओं के लिए किया जाता है.
कलर वेक्टर फ़ॉन्ट
Android 13 और उसके बाद के वर्शन में, सिस्टम में COLR वर्शन 1 (COLRv1) में रेंडर करने की सुविधा शामिल है. इसमें फ़ॉन्ट का इस्तेमाल किया जाता है और सिस्टम इमोजी को COLRv1 फ़ॉर्मैट में अपडेट किया जाता है. COLRv1 एक बेहद छोटा फ़ॉन्ट फ़ॉर्मैट है, जो किसी भी साइज़ में तेज़ी से और शानदार तरीके से रेंडर हो जाता है.
ज़्यादातर ऐप्लिकेशन के लिए, सिस्टम ही सब कुछ मैनेज करता है और COLRv1 अपने-आप काम करता है. हालांकि, अगर आपका ऐप्लिकेशन अपना टेक्स्ट रेंडरिंग लागू करता है और सिस्टम के फ़ॉन्ट का इस्तेमाल करता है, तो हमारा सुझाव है कि आप इमोजी रेंडरिंग की जांच करें.
COLRv1 के बारे में ज़्यादा जानने के लिए, ये संसाधन देखें:
- Chrome Developers ब्लॉग पर सूचना
- Chrome में COLRv1 कलर वेक्टर फ़ॉन्ट शिप करना (वीडियो)
- COLR टेबल की खास जानकारी
क्विक सेटिंग प्लेसमेंट एपीआई
सूचना शेड में मौजूद क्विक सेटिंग, उपयोगकर्ताओं के लिए सेटिंग बदलने या किसी ऐप्लिकेशन का इस्तेमाल जारी रखते हुए तुरंत कार्रवाइयां करने का एक आसान तरीका है. पसंद के मुताबिक टाइल उपलब्ध कराने वाले ऐप्लिकेशन के लिए, हम उपयोगकर्ताओं को क्विक सेटिंग में टाइल ढूंढने और उन्हें जोड़ने की सुविधा दे रहे हैं. नए टाइल प्लेसमेंट एपीआई का इस्तेमाल करके, आपका ऐप्लिकेशन अब उपयोगकर्ता को सीधे क्विक सेटिंग की चालू टाइल के सेट में आपकी कस्टम टाइल जोड़ने के लिए कह सकता है. नए सिस्टम डायलॉग की मदद से, उपयोगकर्ता को टाइल जोड़ने के लिए, एक ही चरण में अपने ऐप्लिकेशन से बाहर निकलने की ज़रूरत नहीं पड़ती. इसके बजाय, वह तुरंत सेटिंग में जाकर टाइल जोड़ सकता है.
क्लिपबोर्ड की झलक
Android 13 में, क्लिपबोर्ड में कॉन्टेंट जोड़ने पर, सिस्टम एक स्टैंडर्ड विज़ुअल पुष्टि दिखाता है. नई पुष्टि करने की सुविधा से ये काम किए जाते हैं:
- कॉन्टेंट कॉपी हो गया है.
- कॉपी किए गए कॉन्टेंट की झलक दिखाता है.
इस सुविधा की मदद से, कॉपी करने के बाद ऐप्लिकेशन से मिलने वाली अलग-अलग सूचनाओं को एक जैसा बनाया जाता है. साथ ही, उपयोगकर्ताओं को अपने क्लिपबोर्ड पर ज़्यादा कंट्रोल मिलता है. ज़्यादा जानकारी के लिए, कॉपी और चिपकाएं सुविधा वाले पेज पर जाएं.
पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर
Android 13 में, Android डिवाइसों के लिए, पिछले पेज पर जाने के लिए हाथ के जेस्चर का सुझाव देने की सुविधा जोड़ी गई है. जैसे, फ़ोन, बड़ी स्क्रीन वाले डिवाइस, और फ़ोल्ड किए जा सकने वाले डिवाइस. इस सुविधा का इस्तेमाल करने के लिए, आपको अपना ऐप्लिकेशन अपडेट करना होगा.
ज़्यादा जानकारी वाले दस्तावेज़ देखने के लिए, अपने ऐप्लिकेशन को अपडेट करने के सुझाव देखें, ताकि वह पिछले जेस्चर की सुविधा के साथ काम कर सके. हमारा कोडलैब भी आज़माया जा सकता है.
ब्लूटूथ LE Audio
ब्लूटूथ लो एनर्जी (LE) ऑडियो, वायरलेस ऑडियो है. इसे ब्लूटूथ क्लासिक की जगह इस्तेमाल करने के लिए बनाया गया है. साथ ही, इसे कुछ खास इस्तेमाल के उदाहरणों और कनेक्शन टोपोलॉजी के लिए भी बनाया गया है. इसकी मदद से, उपयोगकर्ता अपने ऑडियो को दोस्तों और परिवार के साथ शेयर और ब्रॉडकास्ट कर सकते हैं. इसके अलावा, जानकारी, मनोरंजन या सुलभता के लिए, सार्वजनिक ब्रॉडकास्ट की सदस्यता भी ली जा सकती है. इसे इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ताओं को बैटरी लाइफ़ में कोई कमी आए बिना, बेहतर ऑडियो सुनने को मिले. साथ ही, वे अलग-अलग तरह के इस्तेमाल के बीच आसानी से स्विच कर सकें. ऐसा ब्लूटूथ क्लासिक के साथ नहीं किया जा सकता. Android 13 में, डिवाइस में पहले से ही LE Audio की सुविधा उपलब्ध होगी. इसलिए, डेवलपर को काम करने वाले डिवाइसों पर, ये सुविधाएं बिना किसी शुल्क के मिल जाएंगी.
MIDI 2.0
Android 13 में, सिस्टम में MIDI 2.0 स्टैंडर्ड के साथ काम करने की सुविधा शामिल है. इसमें, यूएसबी के ज़रिए MIDI 2.0 हार्डवेयर को कनेक्ट करने की सुविधा भी शामिल है. इस स्टैंडर्ड मोड में कई तरह की सुविधाएं मिलती हैं. जैसे, कंट्रोलर के लिए ज़्यादा रिज़ॉल्यूशन, गैर-वेस्टर्न टोन के लिए बेहतर सहायता, और हर नोट के नियंत्रकों का इस्तेमाल करके बेहतर परफ़ॉर्मेंस.
स्प्लैश स्क्रीन की परफ़ॉर्मेंस को बेहतर बनाना
Android 13, स्प्लैश स्क्रीन एपीआई में ऐनिमेशन वाली स्प्लैश स्क्रीन की परफ़ॉर्मेंस को बेहतर बनाता है:
सिस्टम, ऐनिमेशन के दिखने का समय सीधे
AnimatedVectorDrawable
से तय करता है. Android 13 से पहले,windowSplashScreenAnimationDuration
को सीधे सेट करना ज़रूरी था.Android 13 और उसके बाद के वर्शन में, आपका ऐप्लिकेशन स्प्लैश स्क्रीन पर आइकॉन हमेशा दिखाता है या नहीं, इस पर ज़्यादा कंट्रोल पाने के लिए, नए
windowSplashScreenBehavior
एट्रिब्यूट का इस्तेमाल करें.
ज़्यादा जानकारी वाले दस्तावेज़ देखने के लिए, स्प्लैश स्क्रीन देखें.
एआरटी ऑप्टिमाइज़ेशन
Android 13 (एपीआई लेवल 33) और इसके बाद के वर्शन में, ART नेटिव कोड पर स्विच करने और उससे स्विच करने की प्रोसेस को ज़्यादा तेज़ कर दिया है. साथ ही, JNI कॉल अब 2.5 गुना ज़्यादा तेज़ हो गए हैं. रनटाइम रेफ़रंस प्रोसेसिंग को भी फिर से तैयार किया गया है, ताकि इसे ज़्यादातर ब्लॉक न किया जा सके. इससे, वीडियो में रुकावट की समस्या और कम हो जाती है. इसके अलावा, ऐक्सेस नहीं किए जा सकने वाले ऑब्जेक्ट को जल्दी वापस पाने के लिए, Reference.refersTo()
के सार्वजनिक एपीआई का इस्तेमाल किया जा सकता है. साथ ही, आपको पता चलेगा कि ऑप्टिमाइज़ की गई क्लास और मेथड लुकअप की मदद से, इंटरप्रेटर अब ज़्यादा तेज़ है. ART, इंस्टॉल के समय ज़्यादा बाइट कोड की पुष्टि भी करता है. इससे, रनटाइम के दौरान पुष्टि करने में लगने वाले समय को बचाया जा सकता है. साथ ही, ऐप्लिकेशन के शुरू होने में लगने वाला समय भी कम हो जाता है.
निजता और सुरक्षा
कॉन्टेक्स्ट के हिसाब से रजिस्टर किए गए रिसीवर को ज़्यादा सुरक्षित तरीके से एक्सपोर्ट करना
रनटाइम रिसीवर को ज़्यादा सुरक्षित बनाने के लिए, Android 13 में आपके ऐप्लिकेशन के लिए यह तय करने की सुविधा जोड़ी गई है कि रजिस्टर किए गए ब्रॉडकास्ट रिसीवर को एक्सपोर्ट किया जाना चाहिए या नहीं. साथ ही, यह भी तय किया जा सकता है कि डिवाइस पर मौजूद अन्य ऐप्लिकेशन उसे देख पाएं या नहीं. Android के पिछले वर्शन पर, डिवाइस पर मौजूद कोई भी ऐप्लिकेशन, डाइनैमिक तौर पर रजिस्टर किए गए रिसीवर को बिना सुरक्षा वाला ब्रॉडकास्ट भेज सकता था. हालांकि, ऐसा तब तक ही होता था, जब तक उस रिसीवर को हस्ताक्षर की अनुमति से सुरक्षित नहीं किया जाता.
डेटा एक्सपोर्ट करने का यह कॉन्फ़िगरेशन, उन ऐप्लिकेशन के लिए उपलब्ध है जो इनमें से कम से कम एक काम करते हैं:
- AndroidX Core लाइब्रेरी के 1.9.0 या इसके बाद के वर्शन में मौजूद
ContextCompat
क्लास का इस्तेमाल करें. - Android 13 या उसके बाद के वर्शन को टारगेट करें.
फ़ोटो पिकर
Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन में, फ़ोटो पिकर की सुविधा उपलब्ध है. जब आपका ऐप्लिकेशन फ़ोटो पिकर को लॉन्च करता है, तो उपयोगकर्ता आपके ऐप्लिकेशन के साथ शेयर करने के लिए, कुछ खास फ़ोटो और वीडियो चुनते हैं. जैसे, प्रोफ़ाइल फ़ोटो. इसके बजाय, वे आपके ऐप्लिकेशन को अपनी पूरी मीडिया लाइब्रेरी का ऐक्सेस नहीं देते. उपयोगकर्ता की फ़ोटो और वीडियो ऐक्सेस करने का यह सुझाया गया तरीका है.
फ़ोटो पिकर की मदद से, उपयोगकर्ताओं को बेहतर निजता मिलती है. इसकी वजह यह है कि आपके ऐप्लिकेशन को रनटाइम की अनुमतियों के बारे में बताने की ज़रूरत नहीं होती. इसके अलावा, फ़ोटो पिकर ऐप्लिकेशन के लिए, पहले से मौजूद और स्टैंडर्ड यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराता है. इससे उपयोगकर्ताओं को एक जैसा अनुभव मिलता है.
आस-पास मौजूद वाई-फ़ाई डिवाइसों के लिए, रनटाइम की नई अनुमति
Android 13 (एपीआई लेवल 33) में, NEARBY_DEVICES
अनुमति ग्रुप में एक नई रनटाइम अनुमति जोड़ी गई है. यह अनुमति उन ऐप्लिकेशन के लिए है जो वाई-फ़ाई की मदद से, डिवाइस के आस-पास मौजूद ऐक्सेस पॉइंट से कनेक्ट होने की सुविधा को मैनेज करते हैं. जब ये ऐप्लिकेशन,
कई अलग-अलग वाई-फ़ाई एपीआई को कॉल करते हैं, तब उन्हें नई अनुमति,
NEARBY_WIFI_DEVICES
का एलान करना होगा.
इसके अलावा, जब तक ऐप्लिकेशन, Wi-Fi एपीआई से जगह की जानकारी नहीं पाते, तब तक उन्हें Android 13 या उसके बाद के वर्शन को टारगेट करते समय, ACCESS_FINE_LOCATION
अनुमति का एलान करने की ज़रूरत नहीं होती.
आस-पास मौजूद वाई-फ़ाई डिवाइसों से कनेक्ट करने की अनुमति के बारे में ज़्यादा जानें.
एग्ज़ैक्ट अलार्म का इस्तेमाल करने के लिए नई अनुमति
अगर आपका ऐप्लिकेशन Android 13 या उसके बाद के वर्शन को टारगेट करता है, तो आपके पास USE_EXACT_ALARM
अनुमति का इस्तेमाल करने का विकल्प है. यह अनुमति आपके ऐप्लिकेशन को अपने-आप मिल जाती है. हालांकि, इस अनुमति का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन को इनमें से कम से कम एक शर्त पूरी करनी होगी:
- आपका ऐप्लिकेशन, अलार्म घड़ी या टाइमर ऐप्लिकेशन हो.
- आपका ऐप्लिकेशन, कैलेंडर ऐप्लिकेशन हो. यह आने वाले इवेंट की सूचनाएं दिखाता है.
अगर आपका ऐप्लिकेशन सटीक समय वाले अलार्म सेट करता है, लेकिन वह पिछली सूची में बताए गए किसी भी मामले में शामिल नहीं है, तो SCHEDULE_EXACT_ALARM
अनुमति का एलान करना जारी रखें. साथ ही, इस बात के लिए तैयार रहें कि उपयोगकर्ता आपके ऐप्लिकेशन को ऐक्सेस करने से मना कर दे.
डेवलपर डाउनग्रेडेबल परमिशन
Android 13 से, आपका ऐप्लिकेशन इस्तेमाल नहीं की गई रनटाइम अनुमतियों का ऐक्सेस रद्द कर सकता है. इस एपीआई की मदद से, आपके ऐप्लिकेशन को निजता को बेहतर बनाने वाले ये काम करने की अनुमति मिलती है:
- इस्तेमाल नहीं की जा रही अनुमतियां हटाएं.
- अनुमतियों के सबसे सही तरीकों का पालन करें. इससे उपयोगकर्ता का भरोसा बढ़ता है. आप शायद उपयोगकर्ताओं को उन अनुमतियों को दिखाने वाला डायलॉग दिखाना चाहें जिन्हें आपने पहले ही निरस्त कर दिया है.
APK सिग्नेचर स्कीम v3.1
Android 13 में, 'APK सिग्नेचर स्कीम v3.1' के साथ काम करने की सुविधा जोड़ी गई है. इससे, मौजूदा APK सिग्नेचर स्कीम v3 को बेहतर बनाया जा सकता है. इस स्कीम में, APK सिग्नेचर स्कीम v3 के साथ रोटेशन से जुड़ी कुछ समस्याओं को हल किया गया है. खास तौर पर, v3.1 सिग्नेचर स्कीम, SDK टूल के वर्शन टारगेटिंग के साथ काम करती है. इससे प्लैटफ़ॉर्म के बाद के रिलीज़ को टारगेट करने के लिए, रोटेशन की सुविधा मिलती है.
v3.1 सिग्नेचर स्कीम, ऐसे ब्लॉक आईडी का इस्तेमाल करता है जिसे Android 12L या इससे पहले के वर्शन पर नहीं पहचाना जाता. इसलिए, प्लैटफ़ॉर्म पर हस्ताक्षर करने वाले व्यक्ति के व्यवहार के लिए ये नियम लागू होते हैं:
- Android 13 या इसके बाद के वर्शन वाले डिवाइस, v3.1 ब्लॉक में रोटेट किए गए हस्ताक्षरकर्ता का इस्तेमाल करते हैं.
- Android के पुराने वर्शन पर काम करने वाले डिवाइस, बदले गए साइनिंग पासकोड को अनदेखा करते हैं. इसके बजाय, वे v3.0 ब्लॉक में मौजूद ओरिजनल साइनिंग पासकोड का इस्तेमाल करते हैं.
जिन ऐप्लिकेशन ने अब तक अपनी साइनिंग कुंजी नहीं बदली है उन्हें कोई और कार्रवाई करने की ज़रूरत नहीं है. जब भी ये ऐप्लिकेशन घूमते हैं, तो सिस्टम डिफ़ॉल्ट रूप से हस्ताक्षर की सुविधा के v3.1 वर्शन को लागू करता है.
जो ऐप्लिकेशन पहले से ही बदल चुके हैं और v3.0 साइनिंग ब्लॉक में, घुमाई गई साइनिंग कुंजी का इस्तेमाल जारी रखना चाहते हैं, उन्हें अपने apksigner
न्योते को अपडेट करना होगा:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...जहां API_LEVEL
32 या इससे कम है.
Keystore और KeyMint में गड़बड़ी की बेहतर रिपोर्टिंग
कुंजियां जनरेट करने वाले ऐप्लिकेशन के लिए, अब Keystore और KeyMint, ज़्यादा जानकारी वाले और गड़बड़ी के सटीक संकेत उपलब्ध कराते हैं. हमने java.security.ProviderException
में अपवाद वाली क्लास की हैरारकी जोड़ी है. इसमें Android से जुड़े अपवाद शामिल हैं. इनमें Keystore/KeyMint गड़बड़ी कोड और यह जानकारी भी शामिल है कि गड़बड़ी को दोबारा आज़माया जा सकता है या नहीं. नए अपवाद दिखाने के लिए, कुंजी जनरेट करने और इस्तेमाल करने (साइनिंग, एन्क्रिप्शन) के तरीकों में भी बदलाव किया जा सकता है. बेहतर गड़बड़ी की रिपोर्टिंग, सिर्फ़ पासकोड जनरेशन तक सीमित नहीं है. अब आपको पासकोड जनरेशन की कोशिश फिर से करने के लिए ज़रूरी जानकारी मिल जाएगी.
टैबलेट और बड़ी स्क्रीन के लिए उपलब्ध
Android 13, Android 12 और 12L वर्शन के लिए लॉन्च हुए टैबलेट ऑप्टिमाइज़ेशन के आधार पर बनाया जाता है. इनमें सिस्टम यूज़र इंटरफ़ेस (यूआई) के लिए ऑप्टिमाइज़ेशन, बेहतर मल्टीटास्किंग, और बेहतर काम करने वाले मोड शामिल हैं. अपने ऐप्लिकेशन की जांच के दौरान, यह पक्का करें कि टैबलेट और बड़ी स्क्रीन वाले अन्य डिवाइसों पर आपके ऐप्लिकेशन बेहतरीन दिखें.
नई सुविधाओं और जांच के बारे में ज़्यादा जानने के लिए, टैबलेट और बड़ी स्क्रीन के लिए सहायता पेज देखें.
ग्राफ़िक्स
प्रोग्राम किए जा सकने वाले शेडर
Android 13 में, प्रोग्राम किए जा सकने वाले RuntimeShader
ऑब्जेक्ट के लिए सिस्टम में सहायता शामिल है. इन ऑब्जेक्ट के व्यवहार को Android Graphics Shading Language (AGSL) का इस्तेमाल करके तय किया जाता है. AGSL का सिंटैक्स, GLSL के सिंटैक्स से काफ़ी हद तक मिलता-जुलता है. हालांकि, यह Android के कैनवस में पेंटिंग को पसंद के मुताबिक बनाने के साथ-साथ, व्यू कॉन्टेंट को फ़िल्टर करने के लिए, Android रेंडरिंग इंजन में काम करता है.
Android, इन शेडर का इस्तेमाल इंटरनल तौर पर करता है, ताकि रिपल इफ़ेक्ट, ब्लर, और स्ट्रेच ओवरस्क्रोल लागू किया जा सके.
Android 13 और उसके बाद के वर्शन की मदद से, अपने ऐप्लिकेशन के लिए मिलते-जुलते ऐडवांस इफ़ेक्ट बनाए जा सकते हैं.
कोरियोग्राफ़र में किए गए सुधार
Android 13 में, Choreographer
और ASurfaceControl
के लिए सार्वजनिक एपीआई के तरीके उपलब्ध कराए गए हैं. इनसे ऐप्लिकेशन को फ़्रेम को रेंडर होने में लगने वाले संभावित समय के बारे में ज़्यादा जानकारी मिलती है. साथ ही, फ़्रेम के लाइफ़साइकल के बारे में SurfaceFlinger
के लिए ज़्यादा जानकारी मिलती है. पहले की तरह ही, ऐप्लिकेशन Choreographer
पर कॉलबैक पोस्ट कर सकते हैं और फ़्रेम की टाइमलाइन की जानकारी पा सकते हैं. Android 13 (एपीआई लेवल 33) में, Choreographer
कई संभावित प्रज़ेंटेशन टाइम और उनसे जुड़ी फ़्रेम की समयसीमा दिखाता है. ऐप्लिकेशन, प्रज़ेंटेशन का समय चुन सकते हैं और इसके बाद, SurfaceFlinger
को इसकी सूचना दे सकते हैं. इसके बाद, SurfaceFlinger
, प्रज़ेंटेशन के तय समय से पहले लेन-देन लागू करने या बफ़र को लॉच करने की कोशिश नहीं करता.
कैमरा
एचडीआर वीडियो रिकॉर्ड करना
Android 13 में शुरू होने वाले Camera2 APIs में हाई डाइनैमिक रेंज (एचडीआर) वीडियो कैप्चर करने की सुविधा है. इससे आपको कैमरे का इस्तेमाल करके एचडीआर वीडियो कॉन्टेंट की झलक देखने और उसे रिकॉर्ड करने की सुविधा मिलती है. स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) की तुलना में, एचडीआर में ज़्यादा रंग मिलते हैं. यह ल्यूमिनेंस कॉम्पोनेंट की डाइनैमिक रेंज को बढ़ाता है. मौजूदा 100 cd/m2 की रेंज 100 cd/m2 से 1,000 से लेकर cd/m2 तक हो जाती है. इससे वीडियो की क्वालिटी ज़्यादा असली जैसी दिखती है. साथ ही, इसमें रंग ज़्यादा बेहतर दिखते हैं, हाइलाइट ज़्यादा चमकदार होती हैं, और शेडो ज़्यादा गहरा दिखता है.
एचडीआर वीडियो कैप्चर करने के बारे में ज़्यादा जानने के लिए, एचडीआर वीडियो कैप्चर करने से जुड़ा दस्तावेज़ देखें.
मीडिया
स्पेशल ऑडियो
स्पेशल ऑडियो, ऑडियो का शानदार अनुभव है. इसकी मदद से, मीडिया कॉन्टेंट में दिखने वाला कॉन्टेंट, उपयोगकर्ताओं को ज़्यादा असली लगता है. इस सुविधा को इंटिग्रेट करने का तरीका जानने के लिए, स्पेशल ऑडियो के बारे में हमारा दस्तावेज़ देखें.
ऑडियो रूटिंग की सुविधा
मीडिया ऐप्लिकेशन को यह पता लगाने में मदद करने के लिए कि उनके ऑडियो को कैसे रूट किया जाएगा, Android 13 ने AudioManager
क्लास में ऑडियो रूट एपीआई को जोड़ा है. getAudioDevicesForAttributes()
एपीआई की मदद से, उन डिवाइसों की सूची देखी जा सकती है जिन पर बताए गए ऑडियो को चलाया जा सकता है. साथ ही, getDirectProfilesForAttributes()
एपीआई से यह समझने में मदद मिलती है कि आपकी ऑडियो स्ट्रीम को सीधे तौर पर चलाया जा सकता है या नहीं. अपने ऑडियो ट्रैक के लिए सबसे अच्छा AudioFormat
तय करने के लिए, इन एपीआई का इस्तेमाल करें.
सुलभता
ऑडियो फ़ॉर्मैट में जानकारी
Android 13 (एपीआई लेवल 33) में, सुलभता से जुड़ी एक नई सेटिंग जोड़ी गई है. इसकी मदद से, उपयोगकर्ता सभी ऐप्लिकेशन में ऑडियो डिस्क्रिप्शन की सुविधा चालू कर सकते हैं. जानकारी सुनने की सुविधा, नैरेशन का एक अतिरिक्त ट्रैक होता है. इसमें नैरेटर, प्रज़ेंटेशन के दौरान स्क्रीन पर दिख रहे कॉन्टेंट के बारे में बताता है. यह सुविधा, ऑडियो में होने वाले सामान्य रुकावटों के दौरान काम करती है.
ऐप्लिकेशन, जानकारी सुनने की सुविधा वाले ट्रैक के लिए उपयोगकर्ता की प्राथमिकता का पालन कर सकते हैं. इसके लिए, उन्हें isAudioDescriptionRequested()
से क्वेरी करनी होगी. इस बारे में नीचे दिए गए कोड स्निपेट में बताया गया है:
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
ऐप्लिकेशन, AccessbilityManager
में एक लिसनर जोड़कर, उपयोगकर्ता की प्राथमिकता में हुए बदलाव को मॉनिटर कर सकते हैं:
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
मुख्य फ़ंक्शन
OpenJDK 11 के अपडेट
Android 13 में, Android की मुख्य लाइब्रेरी को रीफ़्रेश करने की प्रोसेस शुरू की गई है. इससे, OpenJDK 11 LTS रिलीज़ के साथ अलाइन किया जा सकेगा. इसमें, लाइब्रेरी के अपडेट और ऐप्लिकेशन और प्लैटफ़ॉर्म डेवलपर के लिए Java 11 भाषा के साथ काम करने की सुविधा शामिल है. Android 13 में जोड़े गए मुख्य लाइब्रेरी में हुए बदलाव, Android 12 डिवाइसों के लिए भी उपलब्ध होंगे. इसके लिए, Google Play के सिस्टम अपडेट की मदद से, ART Mainline मॉड्यूल में बदलाव किए जाएंगे.
Android 13 में मुख्य लाइब्रेरी में किए गए ये बदलाव शामिल हैं:
- स्थानीय वैरिएबल और पैरामीटर के तौर पर लैम्ब्डा के लिए
var
कीवर्ड का इस्तेमाल किया जा सकता है. स्ट्रिंग क्लास में नए तरीके:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
Collection.toArray(IntFunction)
के लिए सहायता, ताकि किसी कलेक्शन को ऐरे में बदलना आसान हो.java.util
क्लासOptional
,OptionalDouble
,OptionalInt
, औरOptionalLong
मेंifPresentOrElse()
,isEmpty()
,orElseThrow()
, औरstream()
के लिए सहायता.SocketOptions
के लिए, सोकेट का फिर से इस्तेमाल करने की सुविधा के साथ-साथ ज़्यादा सहायता उपलब्ध कराई गई है.NullReader
,NullWriter
,InputStream
,OutputStream
, औरtransferTo()
Reader
की सुविधा, जो पढ़े गए वर्णों कोWriter
में ट्रांसफ़र करती है.Charsets
का इस्तेमाल करके, यूआरएल को कोड में बदलने और उसे डिकोड करने की सुविधा जोड़ी गई.FileReader
,FileWriter
,PrintStream
, औरPrintWriter
के लिएCharset
फ़ंक्शन.ByteArrayInput
याOutputStream
औरInput
याOutputStream
के लिए,transferTo()
,readNBytes()
,readAllBytes()
, औरwriteBytes()
के नए फ़ंक्शन.java.lang.invoke.VarHandle
के लिए रनटाइम और कंपाइलर की सहायता.VarHandle
का इस्तेमाल करके,java.util.concurrent
को OpenJDK 11 एपीआई में अपडेट करता है.
Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.