सुविधाओं और एपीआई के बारे में खास जानकारी

Android 13 में, डेवलपर के लिए बेहतरीन नई सुविधाएं और एपीआई जोड़े गए हैं. यहां दिए गए सेक्शन में, आपको अपने ऐप्लिकेशन की सुविधाओं के बारे में जानने और उनसे जुड़े एपीआई का इस्तेमाल शुरू करने में मदद मिलेगी.

नए, बदले गए, और हटाए गए एपीआई की पूरी सूची के लिए, एपीआई के बीच अंतर की रिपोर्ट पढ़ें. नए एपीआई के बारे में जानकारी पाने के लिए, Android एपीआई का रेफ़रंस देखें. नए एपीआई को हाइलाइट किया गया है, ताकि उन्हें आसानी से देखा जा सके. साथ ही, उन जगहों के बारे में जानने के लिए जहां प्लैटफ़ॉर्म में हुए बदलावों से आपके ऐप्लिकेशन पर असर पड़ सकता है, Android 13 को टारगेट करने वाले ऐप्लिकेशन और सभी ऐप्लिकेशन के लिए, 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 को कॉल कर सकते हैं, ताकि उपयोगकर्ता अपनी पसंद की चीज़ें तेज़ी से और आसानी से ढूंढ सकें. उदाहरण के लिए, पहले जापान के उपयोगकर्ता को खोज करने के लिए, ये चरण पूरे करने पड़ते थे:

  1. खोज के लिए इस्तेमाल हुए शब्द (जैसे, किसी जगह या ऐप्लिकेशन का नाम) का फ़ोनेटिक उच्चारण डालने के लिए, हिरागाना का इस्तेमाल करना
  2. हिरागाना वर्णों को कांजी में बदलने के लिए, कीबोर्ड का इस्तेमाल करना
  3. कांजी लिपि के वर्णों का इस्तेमाल करके फिर से खोजें
  4. आखिर में, उन्हें खोज के नतीजे मिलते हैं

टेक्स्ट बदलने वाले नए एपीआई की मदद से, जापानी उपयोगकर्ता हिरागाना टाइप कर सकते हैं और तीसरे और चौथे चरण को छोड़कर, तुरंत कांजी के खोज नतीजे देख सकते हैं.

नॉन-लैटिन स्क्रिप्ट के लिए लाइन हाइट को बेहतर बनाया गया

Android 13 में, हर भाषा के हिसाब से लाइन की ऊंचाई का इस्तेमाल करके, तमिल, बर्मी, तेलुगु, और तिब्बती जैसी ग़ैर-लैटिन लिपि के डिसप्ले को बेहतर बनाया गया है. लाइन की नई हाइट, टेक्स्ट को काटने से रोकती है और वर्णों की पोज़िशन को बेहतर बनाती है. Android 13 को टारगेट करके, आपका ऐप्लिकेशन इन सुधारों का फ़ायदा ले सकता है. लाइन स्पेसिंग के नए तरीके का इस्तेमाल करते समय, अपने ऐप्लिकेशन की जांच करना न भूलें. ऐसा इसलिए, क्योंकि इन बदलावों से, ग़ैर-लैटिन भाषाओं में आपके यूज़र इंटरफ़ेस पर असर पड़ सकता है.

Android 12 (ऊपर) में काटी गई लाइन हाइट, अब 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‑GB के बजाय, अंग्रेज़ी (अमेरिका) en के अनुवाद संसाधनों का इस्तेमाल किया जाता है.
  • many बहुवचन की कैटगरी, स्पैनिश es, इटैलियन it, पॉर्चुगीज़ pt, और पॉर्चुगीज़ (पुर्तगाल) pt‑PT के लिए उपलब्ध है. CLDR v38 में फ़्रेंच के तौर पर शुरू किए गए इस फ़ॉर्मैट का इस्तेमाल, बड़ी संख्याओं के लिए किया जाता है.

कलर वाले वेक्टर फ़ॉन्ट

COLRv1 वेक्टर इमोजी (बाईं ओर) और बिटमैप इमोजी (दाईं ओर)

Android 13 में, सिस्टम में COLR वर्शन 1 (COLRv1) फ़ॉन्ट के लिए रेंडरिंग की सुविधा शामिल है. साथ ही, सिस्टम इमोजी को COLRv1 फ़ॉर्मैट में अपडेट किया गया है. COLRv1 एक बहुत ही छोटा फ़ॉन्ट फ़ॉर्मैट है. यह किसी भी साइज़ में तेज़ी से और साफ़ तौर पर रेंडर होता है.

ज़्यादातर ऐप्लिकेशन के लिए, सिस्टम ही सब कुछ मैनेज करता है और COLRv1 अपने-आप काम करता है. हालांकि, अगर आपका ऐप्लिकेशन अपना टेक्स्ट रेंडरिंग लागू करता है और सिस्टम के फ़ॉन्ट का इस्तेमाल करता है, तो हमारा सुझाव है कि आप इमोजी रेंडरिंग की जांच करें.

COLRv1 के बारे में ज़्यादा जानने के लिए, ये संसाधन देखें:

क्विक सेटिंग प्लेसमेंट एपीआई

सूचना शेड में मौजूद क्विक सेटिंग, उपयोगकर्ताओं के लिए सेटिंग बदलने या किसी ऐप्लिकेशन का इस्तेमाल जारी रखते हुए तुरंत कार्रवाइयां करने का एक आसान तरीका है. पसंद के मुताबिक टाइल उपलब्ध कराने वाले ऐप्लिकेशन के लिए, हम उपयोगकर्ताओं को क्विक सेटिंग में टाइल ढूंढने और उन्हें जोड़ने की सुविधा दे रहे हैं. नए टाइल प्लेसमेंट एपीआई का इस्तेमाल करके, आपका ऐप्लिकेशन अब उपयोगकर्ता को सीधे क्विक सेटिंग की चालू टाइल के सेट में आपकी कस्टम टाइल जोड़ने के लिए कह सकता है. नए सिस्टम डायलॉग की मदद से, उपयोगकर्ता को टाइल जोड़ने के लिए, एक ही चरण में अपने ऐप्लिकेशन से बाहर निकलने की ज़रूरत नहीं पड़ती. इसके बजाय, वह तुरंत सेटिंग में जाकर टाइल जोड़ सकता है.

एक डायलॉग, जिसमें उपयोगकर्ता से पूछा जा रहा है कि क्या उसे अपनी क्विक सेटिंग में कोई टाइल जोड़नी है.

क्लिपबोर्ड की झलक

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 में, SplashScreen API में ऐनिमेशन वाली स्प्लैश स्क्रीन की परफ़ॉर्मेंस को बेहतर बनाया गया है:

  • सिस्टम, ऐनिमेशन के दिखने का समय सीधे 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 invocatio को अपडेट करना होगा:

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 में टैबलेट के लिए किए गए ऑप्टिमाइज़ेशन पर आधारित है. इनमें सिस्टम यूज़र इंटरफ़ेस (यूआई) के लिए ऑप्टिमाइज़ेशन, बेहतर मल्टीटास्किंग, और बेहतर काम करने वाले मोड शामिल हैं. टेस्टिंग के दौरान, पक्का करें कि आपके ऐप्लिकेशन, टैबलेट और बड़ी स्क्रीन वाले अन्य डिवाइसों पर बेहतरीन दिखें.

नई सुविधाओं और जांच के बारे में ज़्यादा जानने के लिए, टैबलेट और बड़ी स्क्रीन के लिए सहायता पेज देखें.

ग्राफ़िक्स

प्रोग्राम किए जा सकने वाले शेडर

AGSL ऐनिमेटेड शेडर, जिसे इस GLSL शेडर से अडैप्ट किया गया है.

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, प्रज़ेंटेशन के तय समय से पहले लेन-देन लागू करने या बफ़र को लॉच करने की कोशिश नहीं करता.

अगर आपका ऐप्लिकेशन, नए Choreographer और SurfaceControl तरीकों का इस्तेमाल करता है, तो आपके पास Perfetto ट्रेस में ऐप्लिकेशन के फ़्रेम लाइफ़साइकल को देखने का विकल्प होता है.

कैमरा

एचडीआर वीडियो कैप्चर करने की सुविधा

Android 13 में, Camera2 API की मदद से, हाई डाइनैमिक रेंज (एचडीआर) वीडियो कैप्चर किया जा सकता है. इससे, कैमरे का इस्तेमाल करके एचडीआर वीडियो कॉन्टेंट की झलक देखी जा सकती है और उसे रिकॉर्ड किया जा सकता है. स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) के मुकाबले, एचडीआर में ज़्यादा रंग दिखते हैं. साथ ही, यह चमक वाले कॉम्पोनेंट की डाइनैमिक रेंज को बढ़ाता है. यह रेंज, मौजूदा 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 कीवर्ड का इस्तेमाल किया जा सकता है.
  • 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 और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.