Android 13 में डेवलपर के लिए, शानदार नई सुविधाएं और एपीआई जोड़े गए हैं. यहां दिए गए सेक्शन से, आपको अपने ऐप्लिकेशन की सुविधाओं के बारे में जानने और उनसे जुड़े एपीआई इस्तेमाल करने में मदद मिलेगी.
नए, बदले गए, और हटाए गए एपीआई की पूरी सूची के लिए, एपीआई में हुए बदलाव की रिपोर्ट पढ़ें. नए एपीआई के बारे में जानकारी पाने के लिए, Android API के बारे में जानकारी पर जाएं. नए एपीआई को हाइलाइट किया गया है, ताकि वे आसानी से दिख सकें. इसके अलावा, यह जानने के लिए कि प्लैटफ़ॉर्म में हुए बदलावों का असर आपके ऐप्लिकेशन पर कहां पड़ सकता है, Android 13 में हुए बदलावों के बारे में जानकारी देने वाले पेज देखें. ये पेज, Android 13 को टारगेट करने वाले ऐप्लिकेशन और सभी ऐप्लिकेशन के लिए उपलब्ध हैं.
डेवलपर की प्रोडक्टिविटी और टूल
थीम वाले ऐप्लिकेशन के आइकॉन
Android 13 और इसके बाद के वर्शन में, थीम वाले ऐप्लिकेशन आइकॉन इस्तेमाल करने का विकल्प चुना जा सकता है. इस सुविधा की मदद से, Android लॉन्चर के साथ काम करने वाले ऐप्लिकेशन आइकॉन का रंग, उपयोगकर्ता के चुने गए वॉलपेपर और अन्य थीम के रंग के हिसाब से बदल जाता है.
इस सुविधा का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन में अडैप्टिव आइकॉन और मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन, दोनों होने चाहिए. साथ ही, मेनिफ़ेस्ट में <adaptive-icon> एलिमेंट से मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन को पॉइंट करना चाहिए. अगर किसी उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन चालू किए हैं (दूसरे शब्दों में, सिस्टम सेटिंग में जाकर थीम वाले आइकॉन टॉगल को चालू किया है) और लॉन्चर इस सुविधा के साथ काम करता है, तो सिस्टम, उपयोगकर्ता के चुने गए वॉलपेपर और थीम के रंग का इस्तेमाल करके, टिंट कलर तय करता है. इसके बाद, वह इस रंग को मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन पर लागू करता है.
इनमें से किसी भी स्थिति में, होम स्क्रीन पर थीम वाला ऐप्लिकेशन का आइकॉन नहीं दिखता है. इसके बजाय, अडैप्टिव या स्टैंडर्ड ऐप्लिकेशन का आइकॉन दिखता है:
- अगर उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन की सुविधा चालू नहीं की है
- अगर आपके ऐप्लिकेशन में मोनोक्रोमैटिक ऐप्लिकेशन का आइकॉन नहीं है
- अगर लॉन्चर, थीम वाले ऐप्लिकेशन के आइकॉन के साथ काम नहीं करता है
ज़्यादा जानकारी और निर्देशों के लिए, अडैप्टिव आइकॉन देखें.
हर ऐप्लिकेशन के हिसाब से पसंद की भाषा
कई मामलों में, एक से ज़्यादा भाषाएं जानने वाले लोग अपने सिस्टम की भाषा को किसी एक भाषा पर सेट करते हैं. जैसे, अंग्रेज़ी. हालांकि, वे कुछ ऐप्लिकेशन के लिए अन्य भाषाएं चुनना चाहते हैं. जैसे, डच, चाइनीज़ या हिन्दी. ऐसे उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, Android 13 में कई भाषाओं के साथ काम करने वाले ऐप्लिकेशन के लिए ये सुविधाएं जोड़ी गई हैं:
सिस्टम सेटिंग: यह एक ऐसी जगह है जहां उपयोगकर्ता हर ऐप्लिकेशन के लिए अपनी पसंदीदा भाषा चुन सकते हैं.
आपके ऐप्लिकेशन को अपने मेनिफ़ेस्ट में
android:localeConfigएट्रिब्यूट का एलान करना होगा, ताकि सिस्टम को यह बताया जा सके कि वह कई भाषाओं के साथ काम करता है. ज़्यादा जानने के लिए, संसाधन फ़ाइल बनाने और उसे अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में शामिल करने के निर्देश देखें.अन्य एपीआई: ये सार्वजनिक एपीआई, जैसे कि
LocaleManagerमेंsetApplicationLocales()औरgetApplicationLocales()तरीके, ऐप्लिकेशन को रनटाइम के दौरान सिस्टम की भाषा से अलग भाषा सेट करने की सुविधा देते हैं.ये एपीआई, सिस्टम सेटिंग के साथ अपने-आप सिंक हो जाते हैं. इसलिए, जो ऐप्लिकेशन इन एपीआई का इस्तेमाल करके, ऐप्लिकेशन में भाषा चुनने की सुविधा बनाते हैं वे यह पक्का करेंगे कि उनके उपयोगकर्ताओं को एक जैसा उपयोगकर्ता अनुभव मिले. भले ही, वे भाषा से जुड़ी प्राथमिकताएं कहीं भी चुनें. सार्वजनिक एपीआई, छोटे-मोटे बदलाव वाले कोड की संख्या को कम करने में भी मदद करते हैं. ये split APKs के साथ काम करते हैं. साथ ही, ये ऐप्लिकेशन के लिए ऑटो बैकअप की सुविधा के साथ काम करते हैं, ताकि ऐप्लिकेशन के लेवल पर उपयोगकर्ता की भाषा की सेटिंग को सेव किया जा सके.
Android के पुराने वर्शन के साथ काम करने की सुविधा के लिए, AndroidX में भी मिलते-जुलते एपीआई उपलब्ध हैं. हमारा सुझाव है कि आप Appcompat 1.6.0-beta01 या इसके बाद के वर्शन में जोड़े गए एपीआई का इस्तेमाल करें.
जिन ऐप्लिकेशन में एक से ज़्यादा भाषाओं का इस्तेमाल नहीं किया जा सकता उन पर इन बदलावों का कोई असर नहीं पड़ेगा.
टेक्स्ट और भाषा से जुड़ी बेहतर सुविधाएं
Android 13 में टेक्स्ट और भाषा से जुड़ी कई सुविधाएं शामिल हैं. इनकी मदद से, उपयोगकर्ताओं को बेहतर अनुभव दिया जा सकता है. इनके बारे में यहां बताया गया है:
हाइफ़न लगाने की सुविधा को बेहतर बनाया गया है
हाइफ़नेशन की सुविधा से, रैप किए गए टेक्स्ट को पढ़ना आसान हो जाता है. साथ ही, इससे आपके यूज़र इंटरफ़ेस (यूआई) को ज़्यादा अडैप्टिव बनाने में मदद मिलती है. Android 13 से, हाइफ़न लगाने की सुविधा की परफ़ॉर्मेंस को 200% तक ऑप्टिमाइज़ किया गया है. इससे, रेंडरिंग की परफ़ॉर्मेंस पर कोई असर डाले बिना, इसे TextView में चालू किया जा सकता है. हाइफ़नेशन की प्रोसेस को तेज़ करने के लिए, setHyphenationFrequency() में fullFast या normalFast फ़्रीक्वेंसी का इस्तेमाल करें.
टेक्स्ट कन्वर्ज़न एपीआई
जैपनीज़ और चाइनीज़ जैसी भाषाएं बोलने वाले लोग, फ़ोनेटिक लेटरिंग इनपुट के तरीकों का इस्तेमाल करते हैं. इससे अक्सर खोज करने और अपने-आप पूरा होने जैसी सुविधाओं की रफ़्तार धीमी हो जाती है. Android 13 में, ऐप्लिकेशन नए टेक्स्ट कन्वर्ज़न एपीआई को कॉल कर सकते हैं, ताकि उपयोगकर्ता अपनी ज़रूरत की चीज़ें तेज़ी से और आसानी से ढूंढ सकें. उदाहरण के लिए, पहले किसी जापानी उपयोगकर्ता को खोजने के लिए ये चरण पूरे करने पड़ते थे:
- खोज के लिए इस्तेमाल किए गए शब्द (जैसे, किसी जगह या ऐप्लिकेशन का नाम) के फ़ोनेटिक उच्चारण के तौर पर हिरागाना इनपुट करना
- हिरागाना वर्णों को कांजी में बदलने के लिए, कीबोर्ड का इस्तेमाल करना
- कांजी वर्णों का इस्तेमाल करके फिर से खोजें
- आखिर में, खोज के नतीजे पाना
टेक्स्ट कन्वर्ज़न एपीआई की नई सुविधा की मदद से, जापानी उपयोगकर्ता हिरागाना में टाइप कर सकते हैं. साथ ही, उन्हें कांजी में खोज के नतीजे तुरंत दिखते हैं. इसके लिए, उन्हें दूसरा और तीसरा चरण पूरा करने की ज़रूरत नहीं होती.
गैर-लैटिन स्क्रिप्ट के लिए, पंक्तियों के बीच की दूरी को बेहतर बनाया गया है
Android 13 में, नॉन-लैटिन स्क्रिप्ट (जैसे, तमिल, बर्मी, तेलुगु, और तिब्बती) को बेहतर तरीके से दिखाया जाता है. इसके लिए, हर भाषा के हिसाब से लाइन की लंबाई का इस्तेमाल किया जाता है. लाइन की नई ऊंचाइयों से, क्लिपिंग को रोका जा सकता है और वर्णों की पोज़िशन को बेहतर बनाया जा सकता है. Android 13 को टारगेट करके, आपके ऐप्लिकेशन को इन सुधारों का फ़ायदा मिल सकता है. नई लाइन स्पेसिंग का इस्तेमाल करते समय, अपने ऐप्लिकेशन की जांच ज़रूर करें. ऐसा इसलिए, क्योंकि इन बदलावों से गैर-लैटिन भाषाओं में आपके यूज़र इंटरफ़ेस (यूआई) पर असर पड़ सकता है.
जैपनीज़ टेक्स्ट रैपिंग की सुविधा को बेहतर बनाया गया है
Android 13 से, TextViews में टेक्स्ट को वर्ण के बजाय, Bunsetsu (शब्दों की सबसे छोटी इकाई जो सुनने में नैचुरल लगती है) या वाक्यांशों के हिसाब से रैप किया जा सकता है. इससे जापानी ऐप्लिकेशन को ज़्यादा बेहतर और पढ़ने लायक बनाया जा सकता है. TextViews के साथ android:lineBreakWordStyle="phrase" का इस्तेमाल करके, इस रैपिंग का फ़ायदा लिया जा सकता है.
यूनिकोड लाइब्रेरी के अपडेट
Android 13 में, Unicode ICU 70, Unicode CLDR 40, और Unicode 14.0 में शामिल किए गए नए सुधार, गड़बड़ियों को ठीक करने के तरीके, और बदलाव जोड़े गए हैं.
यहां कुछ अहम बदलावों के बारे में बताया गया है:
- अंग्रेज़ी (कनाडा)
en‑CAऔर अंग्रेज़ी (फ़िलिपींस गणराज्य)en‑PH, दोनों ही अंग्रेज़ी (यूनाइटेड किंगडम)en‑GBके बजाय, अंग्रेज़ी (संयुक्त राज्य अमेरिका)enके अनुवाद के संसाधनों का इस्तेमाल करते हैं. ऐसा तब होता है, जब अनुवाद के संसाधन उपलब्ध नहीं होते. 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 Audio, ब्लूटूथ क्लासिक की जगह लेने के लिए बनाया गया वायरलेस ऑडियो है. यह कुछ खास इस्तेमाल के उदाहरण और कनेक्शन टोपोलॉजी को चालू करता है. इससे उपयोगकर्ता अपने दोस्तों और परिवार के साथ ऑडियो शेयर और ब्रॉडकास्ट कर सकते हैं. इसके अलावा, जानकारी, मनोरंजन या सुलभता के लिए सार्वजनिक ब्रॉडकास्ट की सदस्यता ले सकते हैं. इसे इस तरह डिज़ाइन किया गया है कि उपयोगकर्ता, बैटरी लाइफ़ को कम किए बिना हाई फ़िडेलिटी ऑडियो का आनंद ले सकें. साथ ही, वे अलग-अलग इस्तेमाल के मामलों के बीच आसानी से स्विच कर सकें. ब्लूटूथ क्लासिक के साथ ऐसा करना संभव नहीं है. Android 13 से, सिस्टम में LE Audio की सुविधा पहले से मौजूद है. इसलिए, डेवलपर को इसके साथ काम करने वाले डिवाइसों पर, ये सुविधाएं बिना किसी शुल्क के मिलती हैं.
MIDI 2.0
Android 13 और इसके बाद के वर्शन में, MIDI 2.0 स्टैंडर्ड का इस्तेमाल किया जा सकता है. इसमें यूएसबी की मदद से, MIDI 2.0 हार्डवेयर को कनेक्ट करने की सुविधा भी शामिल है. इस स्टैंडर्ड में कई सुविधाएं मिलती हैं. जैसे, कंट्रोलर के लिए ज़्यादा रिज़ॉल्यूशन, पश्चिमी देशों से बाहर के संगीत के लिए बेहतर सपोर्ट, और हर नोट के लिए कंट्रोलर का इस्तेमाल करके ज़्यादा बेहतर परफ़ॉर्मेंस.
स्प्लैश स्क्रीन की परफ़ॉर्मेंस में सुधार
Android 13, Splash Screen API में ऐनिमेशन वाली स्प्लैश स्क्रीन की परफ़ॉर्मेंस को बेहतर बनाता है:
सिस्टम, ऐनिमेशन की अवधि का अनुमान सीधे
AnimatedVectorDrawableसे लगाता है. Android 13 से पहले,windowSplashScreenAnimationDurationको सीधे तौर पर सेट करना ज़रूरी था.नए
windowSplashScreenBehaviorएट्रिब्यूट का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि Android 13 और इसके बाद के वर्शन में, स्प्लैश स्क्रीन पर आपके ऐप्लिकेशन का आइकॉन हमेशा दिखे या नहीं.
ज़्यादा जानकारी वाला दस्तावेज़ देखने के लिए, स्प्लैश स्क्रीन पर जाएं.
Android रनटाइम ऑप्टिमाइज़ेशन
Android 13 (एपीआई लेवल 33) और इसके बाद के वर्शन में, एआरटी की मदद से नेटिव कोड पर स्विच करना और उससे वापस आना काफ़ी तेज़ हो गया है. अब जेएनआई कॉल 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 का एलान करना होगा.
इसके अलावा, जब तक ऐप्लिकेशन वाई-फ़ाई एपीआई से जगह की सटीक जानकारी नहीं लेते, तब तक उन्हें 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 Signature Scheme v3 में रोटेशन से जुड़ी कुछ आम समस्याओं को हल करती है. खास तौर पर, v3.1 सिग्नेचर स्कीम, एसडीके वर्शन टारगेटिंग के साथ काम करती है. इससे, प्लैटफ़ॉर्म की बाद की रिलीज़ को टारगेट करने के लिए, रोटेशन की सुविधा मिलती है.
v3.1 सिग्नेचर स्कीम में, एक ऐसे ब्लॉक आईडी का इस्तेमाल किया जाता है जिसकी पहचान 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 ग्राफ़िक्स शेडिंग लैंग्वेज (AGSL) का इस्तेमाल करके तय किया जाता है. एजीएसएल का ज़्यादातर सिंटैक्स, जीएलएसएल के साथ शेयर किया जाता है. हालांकि, यह Android के रेंडरिंग इंजन में काम करता है, ताकि Android के कैनवस में पेंटिंग को पसंद के मुताबिक बनाया जा सके. साथ ही, व्यू कॉन्टेंट को फ़िल्टर किया जा सके.
Android, इन शेडर का इस्तेमाल करके,
रिपल इफ़ेक्ट,
धुंधला करने की सुविधा,
और
स्ट्रेच ओवरस्क्रोल को लागू करता है.
Android 13 और इसके बाद के वर्शन में, अपने ऐप्लिकेशन के लिए इसी तरह के बेहतर इफ़ेक्ट बनाए जा सकते हैं.
कोरियोग्राफ़र में किए गए सुधार
Android 13 में, Choreographer और ASurfaceControl के लिए सार्वजनिक एपीआई के तरीके जोड़े गए हैं. इनसे ऐप्लिकेशन को फ़्रेम की संभावित टाइमलाइन के बारे में ज़्यादा जानकारी मिलती है. साथ ही, फ़्रेम की लाइफ़साइकल के बारे में SurfaceFlinger को ज़्यादा जानकारी मिलती है. पहले की तरह ही, ऐप्लिकेशन Choreographer पर कॉलबैक पोस्ट कर सकते हैं और फ़्रेम की टाइमलाइन की जानकारी पा सकते हैं. Android 13 (एपीआई लेवल 33) में, Choreographer प्रज़ेंटेशन के कई संभावित समय और उनके फ़्रेम की समयसीमाएं दिखाता है. ऐप्लिकेशन, प्रज़ेंटेशन का समय चुन सकते हैं. इसके बाद, वे चुने गए समय के बारे में SurfaceFlinger को सूचना दे सकते हैं. SurfaceFlinger, इसके बाद तय किए गए प्रज़ेंटेशन टाइम से पहले, लेन-देन या लैच बफ़र लागू करने की कोशिश नहीं करता.
कैमरा
एचडीआर वीडियो कैप्चर करने की सुविधा
Android 13 से, Camera2 एपीआई में हाई डाइनैमिक रेंज (एचडीआर) वीडियो कैप्चर करने की सुविधा उपलब्ध है. इससे आपको अपने कैमरे का इस्तेमाल करके, एचडीआर वीडियो कॉन्टेंट की झलक देखने और उसे रिकॉर्ड करने की सुविधा मिलती है. स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) के मुकाबले, एचडीआर में रंगों की ज़्यादा रेंज मिलती है. साथ ही, यह ल्यूमिनेंस कॉम्पोनेंट की डाइनैमिक रेंज को बढ़ाता है. यह रेंज, मौजूदा 100 सीडी/एम2 से 1000 सीडी/एम2 तक बढ़ जाती है. इससे वीडियो की क्वालिटी, असल ज़िंदगी से ज़्यादा मेल खाती है. साथ ही, इसमें ज़्यादा रंग, ज़्यादा चमकदार हाइलाइट, और गहरे रंग की शैडो दिखती हैं.
एचडीआर वीडियो कैप्चर करने के बारे में ज़्यादा जानने के लिए, एचडीआर वीडियो कैप्चर करने से जुड़ा दस्तावेज़ देखें.
मीडिया
स्पेशल ऑडियो
स्पेशल ऑडियो, ऑडियो का बेहतरीन अनुभव देता है. इससे उपयोगकर्ताओं को मीडिया कॉन्टेंट की आवाज़ ज़्यादा असली लगती है. इस सुविधा को इंटिग्रेट करने के तरीके के बारे में जानने के लिए, स्पेशल ऑडियो से जुड़ा हमारा दस्तावेज़ देखें.
एंटीसिपेटरी ऑडियो रूटिंग
मीडिया ऐप्लिकेशन को यह पहचानने में मदद करने के लिए कि उनका ऑडियो कैसे रूट किया जाएगा, 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 का सिस्टम अपडेट करना होगा.
Android 13 में, कोर लाइब्रेरी में ये बदलाव किए गए हैं:
- लोकल वैरिएबल और पैरामीटर लैम्ब्डा के लिए,
varकीवर्ड का इस्तेमाल किया जा सकता है. String क्लास में नए तरीके:
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 और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.