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

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

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

डेवलपर की प्रॉडक्टिविटी और टूल

थीम वाले ऐप्लिकेशन के आइकॉन

उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन की सुविधा के लिए ऑप्ट-इन किया हो
Android 13 पर थीम वाले ऐप्लिकेशन आइकॉन की सुविधा के लिए ऑप्ट इन करना

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

इस सुविधा के लिए, आपके ऐप्लिकेशन को अडैप्टिव आइकॉन और मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन, दोनों उपलब्ध कराने होंगे. साथ ही, मेनिफ़ेस्ट में मौजूद <adaptive-icon> एलिमेंट से मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन को पॉइंट करना होगा. अगर किसी उपयोगकर्ता ने थीम वाले ऐप्लिकेशन आइकॉन की सुविधा चालू की है (दूसरे शब्दों में, सिस्टम सेटिंग में थीम वाले आइकॉन टॉगल चालू किया है) और लॉन्चर इस सुविधा के साथ काम करता है, तो सिस्टम, उपयोगकर्ता के चुने गए वॉलपेपर और थीम के रंग का इस्तेमाल करके, टिंट का रंग तय करता है. इसके बाद, यह रंग मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन पर लागू होता है.

इनमें से किसी भी स्थिति में, होम स्क्रीन पर थीम वाला ऐप्लिकेशन आइकॉन नहीं दिखता है. इसके बजाय, अडैप्टिव या स्टैंडर्ड ऐप्लिकेशन आइकॉन दिखता है:

  • अगर उपयोगकर्ता ने थीम वाले ऐप्लिकेशन के आइकॉन की सुविधा चालू नहीं की है
  • अगर आपका ऐप्लिकेशन, मोनोक्रोमैटिक ऐप्लिकेशन आइकॉन उपलब्ध नहीं कराता है
  • अगर लॉन्चर पर थीम वाले ऐप्लिकेशन आइकॉन काम नहीं करते हैं

ज़्यादा जानकारी और निर्देशों के लिए, अनुकूलित आइकॉन देखें.

हर ऐप्लिकेशन के हिसाब से पसंद की भाषा

सिस्टम सेटिंग में, हर ऐप्लिकेशन के लिए भाषाएं सेट करने की सुविधा

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

  • सिस्टम सेटिंग: यह एक ऐसी जगह होती है जहां उपयोगकर्ता, हर ऐप्लिकेशन के लिए अपनी पसंद की भाषा चुन सकते हैं.

    आपके ऐप्लिकेशन को अपने मेनिफ़ेस्ट में android:localeConfig एट्रिब्यूट का एलान करना होगा, ताकि सिस्टम को यह पता चल सके कि यह ऐप्लिकेशन कई भाषाओं में काम करता है. ज़्यादा जानने के लिए, संसाधन फ़ाइल बनाने और उसे अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में शामिल करने के निर्देश देखें.

  • अन्य एपीआई: ये सार्वजनिक एपीआई हैं. जैसे, LocaleManager में मौजूद setApplicationLocales() और getApplicationLocales() तरीके. इनकी मदद से ऐप्लिकेशन, रनटाइम के दौरान सिस्टम की भाषा से अलग कोई भाषा सेट कर सकते हैं.

    ये एपीआई, सिस्टम सेटिंग के साथ अपने-आप सिंक हो जाते हैं. इसलिए, इन एपीआई का इस्तेमाल करके ऐप्लिकेशन में भाषा चुनने की सुविधा बनाने वाले ऐप्लिकेशन यह पक्का करेंगे कि उनके उपयोगकर्ताओं को एक जैसा अनुभव मिले. भले ही, वे भाषा की प्राथमिकताएं कहीं से भी चुनें. सार्वजनिक एपीआई की मदद से, बॉयलरप्लेट कोड की मात्रा को भी कम किया जा सकता है. ये स्प्लिट एपीके के साथ काम करते हैं. साथ ही, ये ऐप्लिकेशन के लिए ऑटो बैकअप की सुविधा के साथ काम करते हैं, ताकि ऐप्लिकेशन लेवल पर उपयोगकर्ता की भाषा की सेटिंग सेव की जा सकें.

    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 (शब्दों की सबसे छोटी इकाई, जो सुनने में स्वाभाविक लगती है) या वाक्यांशों के हिसाब से टेक्स्ट रैप किया जा सकता है. इससे, जापानी ऐप्लिकेशन ज़्यादा बेहतर और पढ़ने में आसान हो जाते हैं. TextView के साथ 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 के लिए पेश किया गया है. सीएलडीआर v38 में फ़्रेंच भाषा के लिए शुरू की गई सुविधा की तरह ही, इसका इस्तेमाल बड़ी संख्याओं के लिए किया जाता है.

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

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

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

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

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

Quick Settings placement API

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

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

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

Android 13 से, सिस्टम क्लिपबोर्ड में कॉन्टेंट जोड़े जाने पर, पुष्टि करने के लिए स्टैंडर्ड विज़ुअल दिखाता है. पुष्टि करने की नई सुविधा से ये काम किए जा सकते हैं:

  • इस कुकी से पुष्टि होती है कि कॉन्टेंट को कॉपी कर लिया गया है.
  • इससे कॉपी किए गए कॉन्टेंट की झलक दिखती है.

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

विजेट को कॉपी/चिपकाने की सुविधा
क्लिपबोर्ड में कॉन्टेंट सेव होने पर दिखने वाला नया यूज़र इंटरफ़ेस (यूआई).

पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर

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

ज़्यादा जानकारी के लिए, पीछे जाने पर झलक दिखाने की सुविधा के साथ काम करने के लिए, अपने ऐप्लिकेशन को अपडेट करना लेख पढ़ें. हमारे कोडलैब को भी आज़माया जा सकता है.

ब्लूटूथ LE Audio

लो एनर्जी (एलई) ऑडियो, वायरलेस ऑडियो की सुविधा है. इसे ब्लूटूथ क्लासिक की जगह इस्तेमाल करने के लिए बनाया गया है. इससे इस्तेमाल के कुछ मामलों और कनेक्शन टोपोलॉजी को चालू किया जा सकता है. इसकी मदद से, लोग अपने दोस्तों और परिवार के साथ ऑडियो शेयर और ब्रॉडकास्ट कर सकते हैं. इसके अलावा, वे जानकारी, मनोरंजन या ऐक्सेसिबिलिटी के लिए, सार्वजनिक ब्रॉडकास्ट की सदस्यता ले सकते हैं. इसे इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता, बैटरी लाइफ़ से समझौता किए बिना हाई फ़िडेलिटी ऑडियो सुन सकें. साथ ही, वे अलग-अलग इस्तेमाल के बीच आसानी से स्विच कर सकें. ऐसा Bluetooth Classic के साथ नहीं किया जा सकता. Android 13 से, सिस्टम में LE Audio के लिए पहले से मौजूद सपोर्ट शामिल है. इसलिए, डेवलपर को इन सुविधाओं को इस्तेमाल करने के लिए, 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, के बारे में बताना होगा. ऐसा तब करना होगा, जब वे कई अलग-अलग वाई-फ़ाई एपीआई कॉल करते हैं. इसके अलावा, जब तक ऐप्लिकेशन, वाई-फ़ाई एपीआई से जगह की जानकारी नहीं लेते हैं, तब तक उन्हें 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 सिग्नेचर स्कीम, एसडीके वर्शन टारगेटिंग के साथ काम करती है. इससे, प्लैटफ़ॉर्म के बाद के वर्शन को टारगेट करने के लिए रोटेशन की अनुमति मिलती है.

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

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

ग्राफ़िक्स

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

यह एक एजीएसएल एनिमेटेड शेडर है, जिसे इस 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 एपीआई हाई डाइनैमिक रेंज (एचडीआर) वीडियो कैप्चर करने की सुविधा के साथ काम करते हैं. इससे आपको अपने कैमरे का इस्तेमाल करके, एचडीआर वीडियो कॉन्टेंट को रिकॉर्ड करने और उसका पूर्वावलोकन करने की सुविधा मिलती है. स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) के मुकाबले, एचडीआर में रंगों की ज़्यादा रेंज मिलती है. साथ ही, यह ल्यूमिनेंस कॉम्पोनेंट की डाइनैमिक रेंज को भी बढ़ाता है. जैसे, मौजूदा 100 cd/m2 से लेकर हज़ारों 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 डिवाइसों के लिए भी उपलब्ध होंगे. इसके लिए, ART Mainline Module को 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 का इस्तेमाल करके, OpenJDK 11 API को java.util.concurrent करता है.

Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.