Android 13 में डेवलपर के लिए, कई नई सुविधाएं और एपीआई जोड़े गए हैं. यहां दिए गए सेक्शन से, आपको अपने ऐप्लिकेशन के लिए उपलब्ध सुविधाओं के बारे में जानने और उनसे जुड़े एपीआई का इस्तेमाल शुरू करने में मदद मिलेगी.
नए, बदले गए, और हटाए गए एपीआई की पूरी सूची देखने के लिए, एपीआई में हुए बदलाव की रिपोर्ट पढ़ें. नए एपीआई के बारे में ज़्यादा जानने के लिए, Android API के बारे में जानकारी पर जाएं. नए एपीआई को हाइलाइट किया गया है, ताकि वे आसानी से दिख सकें. इसके अलावा, उन क्षेत्रों के बारे में जानने के लिए जहां प्लैटफ़ॉर्म में हुए बदलावों से आपके ऐप्लिकेशन पर असर पड़ सकता है, 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 में, ऐप्लिकेशन नए टेक्स्ट कन्वर्ज़न एपीआई को कॉल कर सकते हैं. इससे उपयोगकर्ता, अपनी ज़रूरत की जानकारी को आसानी से और तेज़ी से ढूंढ पाएंगे. उदाहरण के लिए, पहले किसी जापानी उपयोगकर्ता को खोज करने के लिए, ये काम करने पड़ते थे:
- खोज के लिए इस्तेमाल किए गए शब्द का फ़ोनेटिक उच्चारण, हीरागाना के तौर पर डालें. जैसे, किसी जगह या ऐप्लिकेशन का नाम
- कीबोर्ड का इस्तेमाल करके, हिरागाना वर्णों को कांजी में बदलना
- कांजी वर्णों का इस्तेमाल करके फिर से खोजें
- आखिरकार, उनके खोज के नतीजे पाएं
नए टेक्स्ट कन्वर्ज़न एपीआई की मदद से, जापानी उपयोगकर्ता हीरागाना में टाइप कर सकते हैं. साथ ही, उन्हें तुरंत कांजी में खोज के नतीजे लाइव दिखेंगे. इसके लिए, उन्हें दूसरा और तीसरा चरण पूरा करने की ज़रूरत नहीं होगी.
गैर-लैटिन स्क्रिप्ट के लिए, लाइनों के बीच की दूरी को बेहतर बनाया गया है
Android 13 में, नॉन-लैटिन स्क्रिप्ट (जैसे कि तमिल, बर्मीज़, तेलुगु, और तिब्बती) को बेहतर तरीके से दिखाया जाता है. इसके लिए, हर भाषा के हिसाब से लाइन की लंबाई का इस्तेमाल किया जाता है. लाइन की नई ऊंचाई की वजह से, टेक्स्ट कटने की समस्या नहीं होती. साथ ही, वर्णों की पोज़िशन बेहतर होती है. 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के अनुवाद संसाधनों का इस्तेमाल किया जाता है. ऐसा तब होता है, जब अनुवाद संसाधन उपलब्ध नहीं होते हैं. - स्पैनिश
es, इटैलियनit, पॉर्चुगीज़pt, और पॉर्चुगीज़ (पुर्तगाल)pt‑PTके लिए,manyप्लुरल कैटगरी जोड़ी गई है. CLDR v38 में फ़्रेंच भाषा के लिए पेश किए गए फ़ॉर्मैट की तरह ही, इसका इस्तेमाल बड़ी संख्याओं के लिए किया जाता है.
कलर वेक्टर फ़ॉन्ट
Android 13 से, सिस्टम में COLR वर्शन 1 (COLRv1) फ़ॉन्ट रेंडर करने की सुविधा शामिल है. साथ ही, सिस्टम इमोजी को COLRv1 फ़ॉर्मैट में अपडेट किया जाता है. COLRv1, फ़ॉन्ट का एक ऐसा फ़ॉर्मैट है जो बहुत छोटा होता है. यह किसी भी साइज़ में तेज़ी से और साफ़ तौर पर रेंडर होता है.
ज़्यादातर ऐप्लिकेशन के लिए, सिस्टम सब कुछ मैनेज करता है और COLRv1 फ़ॉन्ट काम करता है. हालांकि, अगर आपका ऐप्लिकेशन टेक्स्ट रेंडर करने की सुविधा खुद लागू करता है और सिस्टम के फ़ॉन्ट का इस्तेमाल करता है, तो हमारा सुझाव है कि आप इमोजी रेंडर करने की सुविधा की जांच करें.
COLRv1 के बारे में ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें:
- Chrome Developers ब्लॉग पर सूचना
- Chrome में COLRv1 कलर वेक्टर फ़ॉन्ट शिप करना (वीडियो)
- COLR टेबल की खास जानकारी
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को सीधे तौर पर सेट करना ज़रूरी था.नए
windowSplashScreenBehaviorएट्रिब्यूट का इस्तेमाल करें. इससे आपको यह कंट्रोल करने में मदद मिलेगी कि Android 13 और उसके बाद के वर्शन में, आपका ऐप्लिकेशन हमेशा स्प्लैश स्क्रीन पर आइकॉन दिखाता है या नहीं.
ज़्यादा जानकारी के लिए, स्प्लैश स्क्रीन देखें.
एआरटी ऑप्टिमाइज़ेशन
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 में टैबलेट के लिए पेश की गई ऑप्टिमाइज़ेशन सुविधाओं को और बेहतर बनाया गया है. इनमें सिस्टम यूज़र इंटरफ़ेस (यूआई) के लिए ऑप्टिमाइज़ेशन, बेहतर मल्टीटास्किंग, और बेहतर कंपैटिबिलिटी मोड शामिल हैं. टेस्टिंग के दौरान, यह पक्का करें कि आपके ऐप्लिकेशन, टैबलेट और बड़ी स्क्रीन वाले अन्य डिवाइसों पर अच्छी तरह से दिखें.
क्या नया है और किस चीज़ की जांच करनी है, इस बारे में ज़्यादा जानने के लिए, टैबलेट और बड़ी स्क्रीन पर काम करने की सुविधा पेज देखें.
ग्राफ़िक
प्रोग्राम किए जा सकने वाले शेडर
Android 13 से, सिस्टम में प्रोग्राम किए जा सकने वाले RuntimeShader ऑब्जेक्ट के लिए सहायता शामिल है. इनका व्यवहार, Android Graphics Shading Language (AGSL) का इस्तेमाल करके तय किया जाता है. AGSL का सिंटैक्स, GLSL से काफ़ी मिलता-जुलता है. हालांकि, यह Android के रेंडरिंग इंजन के साथ काम करता है. इससे Android के कैनवस में पेंटिंग को पसंद के मुताबिक बनाया जा सकता है. साथ ही, व्यू के कॉन्टेंट को फ़िल्टर किया जा सकता है.
Android, इन शेडर का इस्तेमाल करके, रिपल इफ़ेक्ट, ब्लर, और स्ट्रेच ओवरस्क्रॉल लागू करता है.
Android 13 और इसके बाद के वर्शन में, अपने ऐप्लिकेशन के लिए इसी तरह के बेहतर इफ़ेक्ट बनाए जा सकते हैं.
कोरियोग्राफ़र के लिए उपलब्ध सुविधाओं में सुधार
Android 13 में, सार्वजनिक एपीआई के ये तरीके पेश किए गए हैं:
Choreographer और
ASurfaceControl. इनसे ऐप्लिकेशन को फ़्रेम की संभावित टाइमलाइन के बारे में ज़्यादा जानकारी मिलती है. साथ ही, फ़्रेम के लाइफ़साइकल के बारे में SurfaceFlinger को ज़्यादा कॉन्टेक्स्ट मिलता है. पहले की तरह, ऐप्लिकेशन Choreographer को कॉलबैक पोस्ट कर सकते हैं और फ़्रेम टाइमलाइन की जानकारी पा सकते हैं. Android 13 (एपीआई लेवल 33) में, Choreographer प्रज़ेंटेशन के कई संभावित समय और उनके फ़्रेम की समयसीमा दिखाता है. ऐप्लिकेशन, सूचना दिखाने का समय चुन सकते हैं. इसके बाद, वे चुने गए समय के बारे में सूचना SurfaceFlinger दे सकते हैं. इसके बाद, SurfaceFlinger तय किए गए समय से पहले लेन-देन या लैच बफ़र लागू करने की कोशिश नहीं करता.
कैमरा
एचडीआर वीडियो कैप्चर करने की सुविधा
Android 13 से, Camera2 एपीआई हाई डाइनैमिक रेंज (एचडीआर) वीडियो कैप्चर करने की सुविधा के साथ काम करते हैं. इससे आपको अपने कैमरे का इस्तेमाल करके, एचडीआर वीडियो कॉन्टेंट को रिकॉर्ड करने और उसका पूर्वावलोकन करने की सुविधा मिलती है. स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) के मुकाबले, एचडीआर में रंगों की ज़्यादा रेंज मिलती है. साथ ही, यह ल्यूमिनेंस कॉम्पोनेंट की डाइनैमिक रेंज को बढ़ाता है. जैसे, मौजूदा 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 और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.