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

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

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

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

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

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

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

Android 12 (ऊपर) में काटी गई लाइन हाइट, अब 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 अनुवाद के लिए उपलब्ध संसाधनों का इस्तेमाल करते हैं. अंग्रेज़ी (यूनाइटेड किंगडम) के बजाय, कोई अनुवाद संसाधन उपलब्ध नहीं होता en‑GB.
  • 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) और उसके बाद के वर्शन में, एआर की मदद से नेटिव कोड पर तेज़ी से स्विच किया जा सकता है. इसमें 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 जब ये कई अलग-अलग वाई-फ़ाई एपीआई को कॉल करते हैं. जब तक ऐप्लिकेशन, वाई-फ़ाई एपीआई से डिवाइस की जगह की जानकारी हासिल नहीं करते, तब तक उन्हें 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 सिग्नेचर स्कीम में ऐसे ब्लॉक आईडी का इस्तेमाल होता है जिसकी पहचान 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 से जुड़े खास अपवाद हैं. इनमें कीस्टोर/KeyMint गड़बड़ी कोड शामिल हैं. साथ ही, यह भी बताया गया है कि क्या गड़बड़ी फिर से की जा सकती है. नए अपवाद दिखाने के लिए, कुंजी जनरेट करने और इस्तेमाल करने (साइनिंग, एन्क्रिप्शन) के तरीकों में भी बदलाव किया जा सकता है. गड़बड़ी की बेहतर तरीके से रिपोर्ट करने की सुविधा, कुंजी जनरेट करने तक ही सीमित नहीं है. अब इससे आपको कुंजी जनरेट करने के लिए फिर से कोशिश करने की जानकारी मिलेगी.

टैबलेट और बड़ी स्क्रीन सपोर्ट

Android 13, Android 12 और 12L वर्शन के लिए लॉन्च हुए टैबलेट ऑप्टिमाइज़ेशन के आधार पर बनाया जाता है. इनमें सिस्टम यूज़र इंटरफ़ेस (यूआई) के लिए ऑप्टिमाइज़ेशन, बेहतर मल्टीटास्किंग, और बेहतर काम करने वाले मोड शामिल हैं. टेस्टिंग के दौरान, पक्का करें कि आपके ऐप्लिकेशन, टैबलेट और बड़ी स्क्रीन वाले अन्य डिवाइसों पर बेहतरीन दिखें.

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

ग्राफ़िक्स

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

एक AGSL ऐनिमेटेड शेडर, जीएलएसएल शेडर से लिया गया है.

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 एलटीएस रिलीज़ के साथ अलाइन हो सकें. साथ ही, ऐप्लिकेशन और प्लैटफ़ॉर्म डेवलपर के लिए Java 11 लैंग्वेज की सुविधा वाले वर्शन भी उपलब्ध हों. Android 13 में किए गए मुख्य लाइब्रेरी बदलाव, Android 12 डिवाइसों पर भी उपलब्ध होंगे. इसके लिए, ART Mainline मॉड्यूल में Google Play का सिस्टम अपडेट होगा.

Android 13 में मुख्य लाइब्रेरी में किए गए ये बदलाव शामिल हैं:

  • लोकल वैरिएबल के लिए var कीवर्ड और Lambdas पैरामीटर के तौर पर सहायता.
  • 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 और/या इसके सहयोगियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.