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

विजेट की सुविधा में सुधार
Android 12 में, मौजूदा विजेट एपीआई को फिर से डिज़ाइन किया गया है. इससे प्लैटफ़ॉर्म और लॉन्चर में, उपयोगकर्ता और डेवलपर को बेहतर अनुभव मिलता है. हमने एक गाइड बनाई है, ताकि आप यह पक्का कर सकें कि आपका विजेट Android 12 के साथ काम करता है. साथ ही, नई सुविधाओं के साथ इसे रीफ़्रेश किया जा सके.
ज़्यादा जानकारी के लिए, Android 12 के विजेट में किए गए सुधार देखें.
रिच कॉन्टेंट जोड़ना
Android 12 में एक नया यूनिफ़ाइड एपीआई जोड़ा गया है. इसकी मदद से, आपका ऐप्लिकेशन किसी भी उपलब्ध सोर्स से रिच कॉन्टेंट पा सकता है. जैसे, क्लिपबोर्ड, कीबोर्ड या खींचें और छोड़ें.
ज़्यादा जानकारी के लिए, रिच कॉन्टेंट पाना लेख पढ़ें.
ऐप्लिकेशन की स्प्लैश स्क्रीन एपीआई
Android 12 में, सभी ऐप्लिकेशन के लिए ऐप्लिकेशन लॉन्च करने का एक नया ऐनिमेशन पेश किया गया है. इसमें ऐप्लिकेशन लॉन्च होने के बाद, ऐप्लिकेशन में होने वाली गतिविधि, ऐप्लिकेशन का आइकॉन दिखाने वाली स्प्लैश स्क्रीन, और ऐप्लिकेशन पर ट्रांज़िशन शामिल है. ज़्यादा जानकारी के लिए, स्प्लैश स्क्रीन डेवलपर गाइड देखें.
राउंडेड कॉर्नर एपीआई
Android 12 में RoundedCorner
और WindowInsets.getRoundedCorner(int
position) को शामिल किया गया है.
इनसे गोल कोनों के लिए रेडियस और सेंटर पॉइंट की जानकारी मिलती है.
ज़्यादा जानकारी के लिए, गोल कोने देखें.
शानदार हैप्टिक अनुभव
Android 12 में, यूज़र इंटरफ़ेस (यूआई) इवेंट के लिए जानकारी देने वाले हैप्टिक फ़ीडबैक, गेमिंग के लिए इमर्सिव और शानदार इफ़ेक्ट, और प्रॉडक्टिविटी के लिए ध्यान खींचने वाले हैप्टिक बनाने के लिए टूल उपलब्ध कराए गए हैं.
ऐक्चुएटर इफ़ेक्ट
Android 12 में, लो टिक जैसे असरदार इफ़ेक्ट जोड़े गए हैं. ये इफ़ेक्ट, नए ऐक्चुएटर की ज़्यादा फ़्रीक्वेंसी बैंडविड्थ का फ़ायदा लेते हैं. गेम डेवलपर अब गेम कंट्रोलर में एक से ज़्यादा और अलग-अलग ऐक्चुएटर को अलग-अलग ऐक्सेस कर सकते हैं. इससे वे एक ही समय पर एक जैसा इफ़ेक्ट या अलग-अलग ऐक्चुएटर पर अलग-अलग हैप्टिक इफ़ेक्ट दे सकते हैं. डेवलपर के लिए, हमारा सुझाव है कि वे कॉन्सटैंट और प्रिमिटिव का इस्तेमाल करें. ये दोनों, हैप्टिक इफ़ेक्ट को बेहतर बनाने के लिए बिल्डिंग ब्लॉक की तरह काम करते हैं. कॉन्सटैंट, यूज़र इंटरफ़ेस (यूआई) इवेंट को बेहतर बनाते हैं. वहीं, हैप्टिक कंपोज़र, प्रिमिटिव को क्रम में लगाकर ज़्यादा जटिल इफ़ेक्ट बनाता है. ये एपीआई, Pixel 4 डिवाइसों पर आज़माए जा सकते हैं. साथ ही, हम डिवाइस बनाने वाली पार्टनर कंपनियों के साथ मिलकर काम कर रहे हैं, ताकि पूरे नेटवर्क में उपयोगकर्ताओं को हैप्टिक की नई सुविधाएं मिल सकें.
ऑडियो के साथ हैप्टिक इफ़ेक्ट
Android 12 वाले ऐप्लिकेशन, फ़ोन के वाइब्रेटर का इस्तेमाल करके ऑडियो सेशन से हैप्टिक फ़ीडबैक जनरेट कर सकते हैं. इससे गेम और ऑडियो का ज़्यादा बेहतर अनुभव मिलता है. उदाहरण के लिए, हैप्टिक की सुविधा वाली रिंगटोन से, कॉल करने वाले लोगों की पहचान करने में मदद मिल सकती है. इसके अलावा, ड्राइविंग गेम में ऊबड़-खाबड़ रास्ते का एहसास कराया जा सकता है.
ज़्यादा जानकारी के लिए, HapticGenerator
रेफ़रंस दस्तावेज़ देखें.
AppSearch
Android 12 में, AppSearch को सिस्टम सर्विस के तौर पर उपलब्ध कराया गया है. यह उपयोगकर्ता के डिवाइस पर इस्तेमाल किया जाने वाला ऐसा सर्च इंजन है जो डिवाइस पर मौजूद इंडेक्स किए गए डेटा और कीवर्ड इनपुट की मदद से काम करता है. AppSearch की मदद से, ऐप्लिकेशन स्ट्रक्चर्ड डेटा को इंडेक्स कर सकते हैं. साथ ही, पहले से मौजूद पूरे टेक्स्ट की खोज की सुविधाओं की मदद से, उस डेटा को खोज सकते हैं. इसके अलावा, AppSearch में नेटिव सर्च की सुविधाएं भी मिलती हैं. जैसे, इंडेक्स करने और डेटा वापस पाने की बेहतर सुविधा, कई भाषाओं में काम करने की सुविधा, और काम के हिसाब से रैंकिंग.
AppSearch दो तरह से काम करता है: आपके ऐप्लिकेशन के लिए एक लोकल इंडेक्स, जो Android के पुराने वर्शन के साथ काम करता है. इसके अलावा, Android 12 में पूरे सिस्टम के लिए एक सेंट्रल इंडेक्स होता है. सेंट्रल इंडेक्स का इस्तेमाल करके, आपका ऐप्लिकेशन अपने डेटा को सिस्टम के यूज़र इंटरफ़ेस (यूआई) की सरफ़ेस पर दिखाने की अनुमति दे सकता है. इसके लिए, सिस्टम में पहले से इंस्टॉल किए गए इंटेलिजेंस कॉम्पोनेंट का इस्तेमाल किया जाता है. सिस्टम यूज़र इंटरफ़ेस (यूआई) के प्लैटफ़ॉर्म पर कौनसा डेटा दिखेगा, यह ओईएम पर निर्भर करता है. इसके अलावा, आपका ऐप्लिकेशन अन्य ऐप्लिकेशन के साथ सुरक्षित तरीके से डेटा शेयर कर सकता है, ताकि वे भी उस डेटा को खोज सकें.
डेवलपर गाइड में AppSearch के बारे में ज़्यादा जानें. साथ ही, AppSearch Jetpack लाइब्रेरी की मदद से इसका इस्तेमाल शुरू करें. यह लाइब्रेरी, डेवलपर के लिए आसान एपीआई प्लैटफ़ॉर्म के साथ-साथ, व्याख्या प्रोसेसर की सुविधा भी उपलब्ध कराती है.
गेम मोड
Game Mode API और गेम मोड इंटरवेंशन की मदद से, गेमप्ले को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, उपयोगकर्ताओं की सेटिंग या गेम के हिसाब से कॉन्फ़िगरेशन के आधार पर, परफ़ॉर्मेंस या बैटरी लाइफ़ जैसी विशेषताओं को प्राथमिकता दी जा सकती है.
ज़्यादा जानकारी के लिए, गेम मोड लेख पढ़ें.
पिक्चर में पिक्चर (पीआईपी) मोड के लिए सुझाव और सुधार
Android 12 में, पीआईपी मोड के लिए ये सुधार किए गए हैं:
पीआईपी के नए जेस्चर की सुविधा
Android 12 में अब पीआईपी विंडो के लिए, स्टैश करने और पिंच-टू-ज़ूम जेस्चर की सुविधा काम करती है:
विंडो को छिपाने के लिए, उपयोगकर्ता उसे बाईं या दाईं ओर खींचकर छोड़ सकता है. विंडो को अनस्टैश करने के लिए, उपयोगकर्ता स्टैश की गई विंडो के दिखने वाले हिस्से पर टैप कर सकता है या उसे खींचकर बाहर ला सकता है.
उपयोगकर्ता, अब पिंच-टू-ज़ूम का इस्तेमाल करके, पीआईपी विंडो का साइज़ बदल सकता है.
सुझाई गई नई सुविधाएं, जो पीआईपी ट्रांज़िशन के अनुभव को बेहतर बनाती हैं
Android 12 में, फ़ुलस्क्रीन और पीआईपी विंडो के बीच ऐनिमेटेड ट्रांज़िशन के लिए, बेहतर विज़ुअल जोड़े गए हैं. हमारा सुझाव है कि आप लागू होने वाले सभी बदलाव करें. ऐसा करने पर, ये बदलाव फ़ोल्ड किए जा सकने वाले डिवाइसों और टैबलेट जैसी बड़ी स्क्रीन पर अपने-आप लागू हो जाएंगे. इसके लिए, आपको कुछ और करने की ज़रूरत नहीं पड़ेगी.
ये सुविधाएं यहां दी गई हैं:
जेस्चर वाले नेविगेशन की मदद से, पीआईपी मोड में आसानी से ट्रांज़िशन करने के लिए एक नया एपीआई फ़्लैग
जेस्चर वाले नेविगेशन मोड में, होम स्क्रीन पर जाने के लिए ऊपर की ओर स्वाइप करने पर, पीआईपी मोड में आसानी से ट्रांज़िशन करने के लिए,
setAutoEnterEnabledफ़्लैग का इस्तेमाल करें. पहले, Android पर पीआईपी विंडो फ़ेड इन होने से पहले, स्वाइप-अप-टू-होम ऐनिमेशन के खत्म होने का इंतज़ार करना पड़ता था.पीआईपी मोड में जाने और उससे बाहर निकलने पर, बेहतर ऐनिमेशन
SourceRectHintफ़्लैग का इस्तेमाल अब पीआईपी मोड में जाने और उससे बाहर निकलने पर, बेहतर ऐनिमेशन लागू करने के लिए किया जाता है.बिना वीडियो वाले कॉन्टेंट के लिए, सीमलेस रीसाइज़िंग की सुविधा को बंद करने के लिए एक नया एपीआई फ़्लैग
SeamlessResizeEnabledफ़्लैग, पीआईपी विंडो में वीडियो के अलावा अन्य कॉन्टेंट का साइज़ बदलने पर, क्रॉस-फ़ेडिंग ऐनिमेशन को ज़्यादा स्मूद बनाता है. पहले, पीआईपी विंडो में वीडियो के अलावा अन्य कॉन्टेंट का साइज़ बदलने पर, विज़ुअल आर्टफ़ैक्ट खराब हो सकते थे.
फ़ोन कॉल की नई सूचनाएं, जिनकी मदद से इनकमिंग कॉल को उनकी अहमियत के हिसाब से रैंक किया जा सकता है
Android 12 में, फ़ोन कॉल के लिए सूचनाओं की नई स्टाइल
Notification.CallStyle
जोड़ी गई है. इस टेंप्लेट का इस्तेमाल करके, आपका ऐप्लिकेशन चालू कॉल की अहमियत दिखा सकता है. इसके लिए, वह स्टेटस बार में एक खास चिप दिखाता है, जिसमें कॉल का समय दिखता है. उपयोगकर्ता इस चिप पर टैप करके, अपने कॉल पर वापस जा सकता है.
इनकमिंग और जारी कॉल, उपयोगकर्ताओं के लिए सबसे ज़रूरी होते हैं. इसलिए, इन सूचनाओं को शेड में सबसे ऊपर दिखाया जाता है. इस रैंकिंग की मदद से, सिस्टम इन ज़रूरी कॉल को अन्य डिवाइसों पर भी फ़ॉरवर्ड कर सकता है.
सभी तरह के कॉल के लिए, यह कोड लागू करें.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
इनकमिंग कॉल के लिए, कॉल स्टाइल वाली सूचना बनाने के लिए, forIncomingCall() का इस्तेमाल करें.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
चल रहे कॉल के लिए, कॉल स्टाइल वाली सूचना बनाने के लिए, forOngoingCall() का इस्तेमाल करें.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
कॉल को स्क्रीन करने के लिए, कॉल स्टाइल वाली सूचना बनाने के लिए forScreeningCall() का इस्तेमाल करें.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
सूचनाओं के लिए बेहतर इमेज की सुविधा
Android 12 में, अब MessagingStyle() और BigPictureStyle() सूचनाओं में ऐनिमेशन वाली इमेज जोड़कर, अपने ऐप्लिकेशन की सूचनाओं को बेहतर बनाया जा सकता है. साथ ही, आपका ऐप्लिकेशन अब उपयोगकर्ताओं को इमेज वाले मैसेज भेजने की सुविधा दे सकता है. ऐसा तब होता है, जब वे नोटिफ़िकेशन शेड से मैसेज का जवाब देते हैं.
जेस्चर वाले नेविगेशन के लिए, इमर्सिव मोड में सुधार
Android 12, मौजूदा व्यवहार को बेहतर बनाता है, ताकि उपयोगकर्ता इमर्सिव मोड में जेस्चर वाले नेविगेशन के निर्देश आसानी से दे सकें. इसके अलावा, Android 12 में स्टिकी इमर्सिव मोड के लिए, पुराने सिस्टम के साथ काम करने की सुविधा भी मिलती है.
हाल ही में देखे गए यूआरएल शेयर करने की सुविधा (सिर्फ़ Pixel पर उपलब्ध)
Pixel डिवाइसों पर, उपयोगकर्ता अब हाल ही में देखे गए वेब कॉन्टेंट के लिंक सीधे 'हाल ही में' स्क्रीन से शेयर कर सकते हैं. किसी ऐप्लिकेशन में कॉन्टेंट देखने के बाद, उपयोगकर्ता हाल ही में इस्तेमाल किए गए ऐप्लिकेशन की स्क्रीन पर स्वाइप करके, उस ऐप्लिकेशन को ढूंढ सकता है जिसमें उसने कॉन्टेंट देखा था. इसके बाद, यूआरएल को कॉपी या शेयर करने के लिए, लिंक बटन पर टैप कर सकता है.
ज़्यादा जानकारी के लिए, हाल ही में खोले गए यूआरएल शेयर करने की सुविधा चालू करना लेख पढ़ें.
सुरक्षा और निजता
प्राइवसी डैशबोर्ड
Android 12 या इसके बाद के वर्शन वाले डिवाइसों पर, सिस्टम सेटिंग में निजता डैशबोर्ड की स्क्रीन दिखती है. इस स्क्रीन पर, उपयोगकर्ता अलग-अलग स्क्रीन ऐक्सेस कर सकते हैं. इन स्क्रीन पर यह जानकारी दिखती है कि ऐप्लिकेशन, जगह की जानकारी, कैमरे, और माइक्रोफ़ोन को कब ऐक्सेस करते हैं. हर स्क्रीन पर एक टाइमलाइन दिखती है. इससे पता चलता है कि अलग-अलग ऐप्लिकेशन ने किसी खास तरह के डेटा को कब ऐक्सेस किया. पहली इमेज में, जगह की जानकारी के डेटा को ऐक्सेस करने की टाइमलाइन दिखाई गई है.
आपका ऐप्लिकेशन उपयोगकर्ताओं को वजह बता सकता है, ताकि वे समझ सकें कि आपका ऐप्लिकेशन जगह की जानकारी, कैमरा या माइक्रोफ़ोन की जानकारी को क्यों ऐक्सेस करता है. यह जानकारी, नई प्राइवसी डैशबोर्ड स्क्रीन, आपके ऐप्लिकेशन की अनुमतियों वाली स्क्रीन या दोनों पर दिख सकती है.
ब्लूटूथ ऐक्सेस करने की अनुमतियां
Android 12 में
BLUETOOTH_SCAN,
BLUETOOTH_ADVERTISE,
और
BLUETOOTH_CONNECT
अनुमतियां जोड़ी गई हैं. इन अनुमतियों की मदद से, Android 12 को टारगेट करने वाले ऐप्लिकेशन, ब्लूटूथ डिवाइसों के साथ आसानी से इंटरैक्ट कर पाते हैं. खास तौर पर, ऐसे ऐप्लिकेशन जिन्हें डिवाइस की जगह की जानकारी ऐक्सेस करने की ज़रूरत नहीं होती.
अपने ऐप्लिकेशन के लिए, ब्लूटूथ की अनुमति के एलान को अपडेट करना
Android 12 या इसके बाद के वर्शन को टारगेट करने के लिए, अपने ऐप्लिकेशन के लॉजिक को अपडेट करें. ब्लूटूथ की अनुमतियों के लेगसी सेट का एलान करने के बजाय, ब्लूटूथ की अनुमतियों के ज़्यादा आधुनिक सेट का एलान करें.
अनुमतियों के समूह की जानकारी देखना
Android 12 या इसके बाद के वर्शन पर, यह क्वेरी की जा सकती है कि सिस्टम, प्लैटफ़ॉर्म से मिली अनुमतियों को अनुमतियों के समूह में कैसे व्यवस्थित करता है:
- यह पता लगाने के लिए कि सिस्टम ने प्लैटफ़ॉर्म के हिसाब से तय की गई अनुमति को किस अनुमतियों के समूह में रखा है,
getGroupOfPlatformPermission()को कॉल करें. - सिस्टम ने प्लैटफ़ॉर्म के हिसाब से तय की गई अनुमतियों को किसी खास अनुमतियों के समूह में रखा है, यह जानने के लिए
getPlatformPermissionsForGroup()को कॉल करें.
ऐप्लिकेशन की ओवरले विंडो छिपाना
डेवलपर के ऐप्लिकेशन के साथ इंटरैक्ट करते समय उपयोगकर्ताओं को क्या दिखेगा, इस पर डेवलपर को ज़्यादा कंट्रोल देने के लिए, Android 12 में ओवरले विंडो छिपाने की सुविधा जोड़ी गई है. ये विंडो, उन ऐप्लिकेशन से बनाई जाती हैं जिनके पास SYSTEM_ALERT_WINDOW अनुमति होती है.
HIDE_OVERLAY_WINDOWS
अनुमति का एलान करने के बाद, कोई ऐप्लिकेशन
setHideOverlayWindows()
को कॉल कर सकता है. इससे यह पता चलता है कि ऐप्लिकेशन की विंडो दिखने पर,
TYPE_APPLICATION_OVERLAY
टाइप की सभी विंडो छिपी होनी चाहिए. ऐप्लिकेशन, संवेदनशील स्क्रीन दिखाते समय ऐसा कर सकते हैं. जैसे, लेन-देन की पुष्टि करने वाले फ़्लो.
TYPE_APPLICATION_OVERLAY टाइप की विंडो दिखाने वाले ऐप्लिकेशन को ऐसे विकल्पों पर विचार करना चाहिए जो उनके इस्तेमाल के हिसाब से ज़्यादा सही हों. जैसे, पिक्चर में पिक्चर या बबल.
पहले से मौजूद साइनर की अनुमति की सुरक्षा वाला फ़्लैग
Android 12 से, सिग्नेचर-लेवल की अनुमतियों के लिए knownCerts एट्रिब्यूट की मदद से, एलान के समय जाने-पहचाने साइनिंग सर्टिफ़िकेट के डाइजेस्ट का रेफ़रंस दिया जा सकता है.
आपका ऐप्लिकेशन इस एट्रिब्यूट के बारे में बता सकता है. साथ ही, knownSigner फ़्लैग का इस्तेमाल करके, डिवाइसों और ऐप्लिकेशन को अन्य ऐप्लिकेशन को सिग्नेचर की अनुमतियां देने की अनुमति दे सकता है. इसके लिए, डिवाइस बनाने और शिपमेंट के समय ऐप्लिकेशन पर हस्ताक्षर करने की ज़रूरत नहीं होती.
डिवाइस की प्रॉपर्टी को प्रमाणित करने की सुविधा
Android 12 में, उन ऐप्लिकेशन का सेट बढ़ाया गया है जो अटेस्टेशन सर्टिफ़िकेट में मौजूद डिवाइस की प्रॉपर्टी की पुष्टि कर सकते हैं. ऐसा तब होता है, जब ये ऐप्लिकेशन नई कुंजी जनरेट करते हैं.
Android 9 (एपीआई लेवल 28) के बाद से, डिवाइस से जुड़ी नीति के मालिक (डीपीओ), Keymaster 4.0 या इसके बाद के वर्शन का इस्तेमाल करके, पुष्टि करने वाले इन सर्टिफ़िकेट में डिवाइस की प्रॉपर्टी की पुष्टि कर सकते हैं. Android 12 से, Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाला कोई भी ऐप्लिकेशन, setDevicePropertiesAttestationIncluded() तरीके का इस्तेमाल करके पुष्टि कर सकता है.
जनरेट की गई डिवाइस प्रॉपर्टी में, ये Build फ़ील्ड शामिल होते हैं:
BRANDDEVICEMANUFACTURERMODELPRODUCT
लॉकस्क्रीन पर सूचनाओं के लिए सुरक्षित कार्रवाइयां
Android 12 से, Notification.Action.Builder क्लास में setAuthenticationRequired() तरीके का इस्तेमाल किया जा सकता है. इससे आपके ऐप्लिकेशन को यह ज़रूरी शर्त लगाने की सुविधा मिलती है कि डिवाइस अनलॉक हो, ताकि ऐप्लिकेशन, सूचना से जुड़ी कोई कार्रवाई कर सके. इस तरीके से, लॉक किए गए डिवाइसों पर सूचनाओं को सुरक्षित रखने के लिए, सुरक्षा की एक और लेयर जोड़ी जा सकती है.
BiometricPrompt के लिए स्थानीय भाषा में उपलब्ध स्ट्रिंग
Android 12 में नए एपीआई जोड़े गए हैं. इनकी मदद से, बायोमेट्रिक ऑथेंटिकेशन की सुविधा इस्तेमाल करने वाले लोगों को बेहतर अनुभव दिया जा सकता है. नई BiometricManager.Strings नेस्ट की गई क्लास में, getButtonLabel(), getPromptMessage(), और getSettingName() तरीके शामिल हैं. इनकी मदद से, आपका ऐप्लिकेशन उपयोगकर्ता के पढ़ने लायक और स्थानीय भाषा में बटन का लेबल, प्रॉम्प्ट मैसेज या ऐप्लिकेशन की सेटिंग का नाम हासिल कर सकता है. इन लेबल का इस्तेमाल करके, इस्तेमाल करने वाले लोगों के लिए उपलब्ध ज़्यादा सटीक निर्देश बनाएँ. ये निर्देश, बायोमेट्रिक ऑथेंटिकेशन के लिए इस्तेमाल किए जाने वाले तरीकों के हिसाब से होने चाहिए. जैसे, “फ़ेस अनलॉक का इस्तेमाल करें” या “जारी रखने के लिए, अपने फ़िंगरप्रिंट की मदद से पहचान की पुष्टि करें”.
मीडिया
HEVC फ़ॉर्मैट पर काम न करने वाले ऐप्लिकेशन के लिए मीडिया ट्रांसकोडिंग
Android 12 (एपीआई लेवल 31) से, सिस्टम डिवाइस पर रिकॉर्ड किए गए HEVC(H.265) और एचडीआर (HDR10 और HDR10+) वीडियो को एवीसी (H.264) में अपने-आप ट्रांसकोड कर सकता है. यह फ़ॉर्मैट, स्टैंडर्ड प्लेयर के साथ काम करता है. यह सुविधा, उपलब्ध होने पर नए कोडेक का फ़ायदा लेती है. साथ ही, यह पुराने ऐप्लिकेशन के साथ काम करती है.
ज़्यादा जानकारी के लिए, HEVC फ़ॉर्मैट पर काम न करने वाले ऐप्लिकेशन के लिए मीडिया ट्रांसकोडिंग देखें.
परफ़ॉर्मेंस क्लास
Android 12 में, परफ़ॉर्मेंस क्लास नाम का एक स्टैंडर्ड पेश किया गया है. परफ़ॉर्मेंस क्लास से, Android की बुनियादी ज़रूरी शर्तों के अलावा, हार्डवेयर की क्षमताओं के बारे में पता चलता है. हर Android डिवाइस, परफ़ॉर्मेंस क्लास के बारे में बताता है. डेवलपर, रनटाइम के दौरान डिवाइस की परफ़ॉर्मेंस क्लास की जांच कर सकते हैं. साथ ही, वे उपयोगकर्ताओं को बेहतर अनुभव दे सकते हैं, ताकि वे डिवाइस की सुविधाओं का पूरा फ़ायदा ले सकें.
ज़्यादा जानकारी के लिए, परफ़ॉर्मेंस क्लास देखें.
वीडियो एन्कोडिंग में सुधार
Android 12 में, वीडियो एन्कोडिंग के लिए क्वांटाइज़ेशन पैरामीटर (क्यूपी) की वैल्यू को कंट्रोल करने के लिए, कुंजियों का एक स्टैंडर्ड सेट तय किया गया है. इससे डेवलपर, वेंडर के हिसाब से कोड बनाने से बच सकते हैं.
नई कुंजियां, MediaFormat एपीआई और NDK मीडिया लाइब्रेरी में उपलब्ध हैं.
Android 12 या इसके बाद के वर्शन में, वीडियो एन्कोडर के लिए कम से कम क्वालिटी की थ्रेशोल्ड तय की गई है. इससे यह पक्का होता है कि वीडियो को एन्कोड करते समय, उपयोगकर्ताओं को बहुत खराब क्वालिटी का अनुभव न मिले. भले ही, वीडियो में जटिल सीन हों.
ऑडियो फ़ोकस
Android 12 (एपीआई लेवल 31) से, जब कोई ऐप्लिकेशन ऑडियो फ़ोकस का अनुरोध करता है, जबकि कोई दूसरा ऐप्लिकेशन फ़ोकस में है और ऑडियो चला रहा है, तो सिस्टम ऑडियो चला रहे ऐप्लिकेशन की आवाज़ को कम कर देता है.
ज़्यादा जानकारी के लिए, Android 12 और इसके बाद के वर्शन में ऑडियो फ़ोकस देखें.
MediaDrm के अपडेट
मौजूदा MediaDrm एपीआई के साथ सुरक्षित डिकोडर कॉम्पोनेंट की ज़रूरत है या नहीं, यह तय करने के लिए आपको यह तरीका अपनाना होगा:
MediaDrmबनाएं.- सेशन आईडी पाने के लिए, कोई सेशन खोलें.
- सेशन आईडी का इस्तेमाल करके,
MediaCryptoबनाएं. MediaCrypto.requiresSecureDecoderComponent(mimeType)पर कॉल करें.
नए तरीकों requiresSecureDecoder(@NonNull String mime) और
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
की मदद से, MediaDrm बनाते ही यह तय किया जा सकता है.
कैमरा
Camera2 वेंडर एक्सटेंशन
डिवाइस बनाने वाले हमारे कई पार्टनर ने कस्टम कैमरा एक्सटेंशन बनाए हैं. जैसे, बोकेह, एचडीआर, नाइट मोड वगैरह. वे चाहते हैं कि ऐप्लिकेशन इन एक्सटेंशन का इस्तेमाल करें, ताकि उनके डिवाइसों पर उपयोगकर्ताओं को अलग अनुभव मिल सके. CameraX लाइब्रेरी में, वेंडर के ये कस्टम एक्सटेंशन पहले से काम करते हैं. Android 12 में, ये वेंडर एक्सटेंशन अब सीधे प्लैटफ़ॉर्म पर दिखते हैं.
इस सुविधा से, उन ऐप्लिकेशन को मदद मिलती है जिनमें
Camera2
वेंडर एक्सटेंशन का फ़ायदा पाने के लिए, लेगसी कोड में ज़्यादा बदलाव किए बिना, जटिल तरीके से लागू किया जाता है. Camera2 Extension API, एक्सटेंशन के उसी सेट को एक्सपोज़ करते हैं जो CameraX में होता है. ये एक्सटेंशन, कई अलग-अलग डिवाइसों पर पहले से काम करते हैं. इसलिए, इनका इस्तेमाल बिना किसी अतिरिक्त कॉन्फ़िगरेशन के किया जा सकता है.
ज़्यादा जानकारी के लिए, CameraExtensionCharacteristics देखें.
क्वाड बेयर कैमरा सेंसर की सुविधा
आज-कल कई Android डिवाइसों में, अल्ट्रा हाई-रिज़ॉल्यूशन वाले कैमरा सेंसर होते हैं. आम तौर पर, इनमें Quad या Nona Bayer पैटर्न होते हैं. इनसे इमेज क्वालिटी और कम रोशनी में परफ़ॉर्मेंस के मामले में काफ़ी फ़ायदा मिलता है. Android 12 में नए प्लैटफ़ॉर्म एपीआई जोड़े गए हैं. इनकी मदद से, तीसरे पक्ष के ऐप्लिकेशन इन सेंसर का पूरा फ़ायदा ले सकते हैं. नए एपीआई, इन सेंसर की यूनीक सुविधाओं के साथ काम करते हैं. साथ ही, ये इस बात का ध्यान रखते हैं कि फ़ुल रिज़ॉल्यूशन या ‘मैक्सिमम रिज़ॉल्यूशन’ मोड बनाम ‘डिफ़ॉल्ट’ मोड में काम करते समय, ये सेंसर अलग-अलग स्ट्रीम कॉन्फ़िगरेशन और कॉम्बिनेशन के साथ काम कर सकते हैं.
ग्राफ़िक और इमेज
ऐप्लिकेशन को टॉम्बस्टोन ट्रेस का डायरेक्ट ऐक्सेस दें
Android 12 और इसके बाद के वर्शन में, ApplicationExitInfo.getTraceInputStream() तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन के नेटिव क्रैश टूंबस्टोन को प्रोटोकॉल बफ़र के तौर पर ऐक्सेस किया जा सकता है. प्रोटोकॉल बफ़र को इस स्कीमा का इस्तेमाल करके क्रम से लगाया जाता है.
पहले, इस जानकारी को ऐक्सेस करने का एकमात्र तरीका Android डीबग ब्रिज (एडीबी) था.
ज़्यादा जानकारी के लिए, ऐप्लिकेशन को टूंबस्टोन ट्रेस का डायरेक्ट ऐक्सेस देना लेख पढ़ें
AVIF इमेज फ़ॉर्मैट के लिए सहायता
Android 12 में, AV1 इमेज फ़ाइल फ़ॉर्मैट (AVIF) का इस्तेमाल करने वाली इमेज के लिए सहायता उपलब्ध कराई गई है. AVIF, इमेज और इमेज के क्रम के लिए एक कंटेनर फ़ॉर्मैट है. इसे AV1 का इस्तेमाल करके एन्कोड किया जाता है. AVIF, वीडियो कंप्रेशन से इंट्रा-फ़्रेम एन्कोड किए गए कॉन्टेंट का फ़ायदा लेता है. यह JPEG जैसे पुराने इमेज फ़ॉर्मैट की तुलना में, फ़ाइल के साइज़ में बदलाव किए बिना इमेज की क्वालिटी को बेहतर बनाता है. इस फ़ॉर्मैट के फ़ायदों के बारे में ज़्यादा जानने के लिए, जेक आर्किबाल्ड की ब्लॉग पोस्ट देखें.
ब्लर, कलर फ़िल्टर, और अन्य इफ़ेक्ट इस्तेमाल करना आसान
Android 12 में नया RenderEffect जोड़ा गया है. यह View और रेंडरिंग की हैरारकी पर, ब्लर, कलर फ़िल्टर, Android शेडर इफ़ेक्ट वगैरह जैसे सामान्य ग्राफ़िक इफ़ेक्ट लागू करता है. इफ़ेक्ट को चेन इफ़ेक्ट (जो अंदरूनी और बाहरी इफ़ेक्ट को कंपोज़ करते हैं) या ब्लेंडेड इफ़ेक्ट के तौर पर जोड़ा जा सकता है. ऐसा हो सकता है कि सीमित प्रोसेसिंग पावर की वजह से, कुछ Android डिवाइसों पर यह सुविधा काम न करे.
View.setRenderEffect(RenderEffect) को कॉल करके, View के लिए, RenderNode पर भी इफ़ेक्ट लागू किए जा सकते हैं.
RenderEffect लागू करने के लिए:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
नेटिव ऐनिमेटेड इमेज डिकोडिंग
Android 12 में, NDK
ImageDecoder एपीआई को बड़ा किया गया है,
ताकि ऐनिमेटेड GIF और
ऐनिमेटेड WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करने वाली इमेज के
सभी फ़्रेम और टाइमिंग डेटा को डिकोड किया जा सके. जब इसे Android 11 में लॉन्च किया गया था, तब यह एपीआई इन फ़ॉर्मैट में मौजूद ऐनिमेशन की सिर्फ़ पहली इमेज को डिकोड करता था.
APK का साइज़ कम करने के लिए, तीसरे पक्ष की लाइब्रेरी के बजाय ImageDecoder का इस्तेमाल करें. इससे आपको सुरक्षा और परफ़ॉर्मेंस से जुड़े आने वाले अपडेट का फ़ायदा भी मिलेगा.
एपीआई के बारे में ज़्यादा जानकारी के लिए, एपीआई का संदर्भ और GitHub पर सैंपल देखें.
कनेक्टिविटी
कंपैनियन ऐप्लिकेशन को चालू रखना
डिवाइस को मैनेज करने के लिए, कंपैनियन ऐप्लिकेशन को बैकग्राउंड में चालू रखना ज़रूरी है. इसके लिए, Android 12 में एपीआई उपलब्ध कराए गए हैं. ये एपीआई ये काम करते हैं:
- इससे आपको कंपैनियन डिवाइस के रेंज में होने पर, किसी ऐप्लिकेशन को चालू करने की सुविधा मिलती है.
- यह पक्का करें कि डिवाइस के रेंज में रहने के दौरान, प्रोसेस जारी रहे.
एपीआई का इस्तेमाल करने के लिए, आपके डिवाइसों को कंपैनियन डिवाइस मैनेजर का इस्तेमाल करके कनेक्ट किया जाना चाहिए. ज़्यादा जानकारी के लिए, CompanionDeviceManager.startObservingDevicePresence() और CompanionDeviceService.onDeviceAppeared() देखें.
कंपैनियन डिवाइस मैनेजर की प्रोफ़ाइलें
Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन पर काम करने वाले पार्टनर ऐप्लिकेशन, स्मार्टवॉच से कनेक्ट करते समय कंपैनियन डिवाइस प्रोफ़ाइलों का इस्तेमाल कर सकते हैं. प्रोफ़ाइल का इस्तेमाल करने से, रजिस्ट्रेशन की प्रोसेस आसान हो जाती है. इसके लिए, डिवाइस के टाइप के हिसाब से अनुमतियों के सेट को एक ही चरण में बंडल किया जाता है.
डिवाइस के कनेक्ट होने के बाद, कंपैनियन ऐप्लिकेशन को बंडल की गई अनुमतियां दी जाती हैं. ये अनुमतियां तब तक ही रहती हैं, जब तक डिवाइस कनेक्ट रहता है. ऐप्लिकेशन को मिटाने या असोसिएशन को हटाने से, अनुमतियां हट जाती हैं.
ज़्यादा जानकारी के लिए, AssociationRequest.Builder.setDeviceProfile() देखें.
बैंडविड्थ का अनुमान लगाने की सुविधा में सुधार
Android 12 में, वाई-फ़ाई और मोबाइल इंटरनेट कनेक्शन, दोनों के लिए बैंडविड्थ का अनुमान लगाने की क्षमता को बेहतर बनाया गया है. इसके लिए,
getLinkDownstreamBandwidthKbps()
और
getLinkUpstreamBandwidthKbps()
का इस्तेमाल किया गया है. अब मिलने वाली वैल्यू, डिवाइस पर मौजूद सभी ऐप्लिकेशन के लिए, हर मोबाइल और इंटरनेट सेवा देने वाली कंपनी या वाई-फ़ाई एसएसआईडी, नेटवर्क टाइप, और सिग्नल लेवल के हिसाब से, उपयोगकर्ता के ऑल-टाइम वेटेड एवरेज थ्रूपुट को दिखाती हैं.
इससे, अनुमानित थ्रूपुट का ज़्यादा सटीक और असल अनुमान मिल सकता है. साथ ही, आपके ऐप्लिकेशन के कोल्ड स्टार्ट के बारे में अनुमान मिल सकते हैं. थ्रूपुट का अनुमान लगाने के अन्य तरीकों की तुलना में, इसमें कम साइकल की ज़रूरत होती है.
Wi-Fi Aware (NAN) में किए गए सुधार
Android 12 में, Wi-Fi Aware की सुविधा में कुछ सुधार किए गए हैं:
- Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन वाले डिवाइसों पर,
onServiceLost()कॉलबैक का इस्तेमाल किया जा सकता है. इससे आपको तब सूचना मिलेगी, जब आपके ऐप्लिकेशन को खोजी गई सेवा का ऐक्सेस नहीं मिल पाएगा. ऐसा सेवा के बंद होने या रेंज से बाहर होने की वजह से हो सकता है. - एक से ज़्यादा डेटा-पाथ (एनएएन डेटा पाथ) सेट अप करने का तरीका बदला जा रहा है, ताकि इसे ज़्यादा असरदार बनाया जा सके. पुराने वर्शन में, फ़ाइल शेयर करने की प्रोसेस शुरू करने वाले डिवाइसों की जानकारी शेयर करने के लिए, L2 मैसेज सेवा का इस्तेमाल किया जाता था. इससे फ़ाइल शेयर करने में ज़्यादा समय लगता था. Android 12 और इसके बाद के वर्शन वाले डिवाइसों पर, जवाब देने वाले डिवाइस (सर्वर) को किसी भी पीयर को स्वीकार करने के लिए कॉन्फ़िगर किया जा सकता है. इसका मतलब है कि उसे पहले से ही, कनेक्शन शुरू करने वाले डिवाइस की जानकारी की ज़रूरत नहीं होती. इससे डेटापाथ को तेज़ी से चालू किया जा सकता है. साथ ही, नेटवर्क के सिर्फ़ एक अनुरोध से कई पॉइंट-टू-पॉइंट लिंक चालू किए जा सकते हैं.
- Android 12 और इसके बाद के वर्शन वाले डिवाइसों पर,
WifiAwareManager.getAvailableAwareResources()को कॉल किया जा सकता है. इससे, संसाधनों की कमी की वजह से फ़्रेमवर्क को खोज या कनेक्शन के अनुरोधों को अस्वीकार करने से रोका जा सकता है. इस तरीके से मिलने वाली वैल्यू से, आपको उपलब्ध डेटा पाथ की संख्या, उपलब्ध पब्लिश सेशन की संख्या, और उपलब्ध सदस्यता सेशन की संख्या का पता चलता है.
एक साथ पीयर-टू-पीयर + इंटरनेट कनेक्शन
Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन को टारगेट करने वाले डिवाइसों पर, हार्डवेयर की सुविधा उपलब्ध होने पर, पीयर-टू-पीयर कनेक्शन का इस्तेमाल करने से, पीयर डिवाइस से कनेक्शन बनाते समय आपका मौजूदा वाई-फ़ाई कनेक्शन डिसकनेक्ट नहीं होगा. यह देखने के लिए कि यह सुविधा काम करती है या नहीं, WifiManager.isMultiStaConcurrencySupported() का इस्तेमाल करें.
एनएफ़सी पेमेंट के लिए, स्क्रीन बंद होने पर भी पेमेंट करने की सुविधा चालू करना
Android 12 और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन में, डिवाइस की स्क्रीन चालू किए बिना एनएफ़सी पेमेंट की सुविधा चालू की जा सकती है. इसके लिए, requireDeviceScreenOn को false पर सेट करें. स्क्रीन बंद होने या लॉक होने पर एनएफ़सी पेमेंट करने के बारे में ज़्यादा जानने के लिए, स्क्रीन बंद होने और लॉक स्क्रीन पर पेमेंट करने की सुविधा लेख पढ़ें.
स्टोरेज
Android 12 में, स्टोरेज मैनेज करने की ये सुविधाएं जोड़ी गई हैं:
MediaDocumentsProviderके लिए मीडिया स्टोर की सुविधा, जब आपका ऐप्लिकेशन दस्तावेज़ उपलब्ध कराने वाली सेवा के यूआरआई के बराबर मीडिया यूआरआई को वापस लाता है.- आवाज़ की रिकॉर्डिंग के लिए डायरेक्ट्री.
MANAGE_MEDIAअनुमति, जो किसी ऐप्लिकेशन को मीडिया मैनेजमेंट से जुड़े ऑपरेशन करने की अनुमति देती है. इसके लिए, उपयोगकर्ता को हर ऑपरेशन के लिए पुष्टि करने वाला डायलॉग नहीं दिखाना पड़ता.- जिन ऐप्लिकेशन के पास
MANAGE_EXTERNAL_STORAGEऔरQUERY_ALL_PACKAGES, दोनों अनुमतियां होती हैं वे किसी दूसरे ऐप्लिकेशन के स्टोरेज को मैनेज करने के लिए, कस्टम गतिविधि को शुरू कर सकते हैं. जैसे, फ़ाइल मैनेजमेंट ऐप्लिकेशन. हालांकि, इसके लिए ज़रूरी है कि दूसरे ऐप्लिकेशन ने कस्टम गतिविधि बनाई हो.
मुख्य फ़ंक्शन
ऐप्लिकेशन अपने-आप अपडेट होने की सुविधा
Android 12 में, PackageInstaller एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, setRequireUserAction() तरीका उपलब्ध कराया गया है.
इस तरीके से, इंस्टॉलर ऐप्लिकेशन, उपयोगकर्ता की पुष्टि के बिना ऐप्लिकेशन अपडेट कर सकते हैं.
डिवाइस के चिपसेट की जानकारी
Android 12, android.os.Build में दो कॉन्सटैंट जोड़ता है. ये कॉन्सटैंट, एसडीके टूल की मदद से एसओसी चिपसेट वेंडर और मॉडल की जानकारी दिखाते हैं. यह जानकारी पाने के लिए,
Build.SOC_MANUFACTURER और Build.SOC_MODEL पर कॉल करें.
मुख्य Java API में किए गए अपडेट
डेवलपर के अनुरोधों और उनके साथ मिलकर काम करने के आधार पर, हमने Android 12 में ये कोर लाइब्रेरी जोड़ी हैं:
| क्लास | एपीआई |
|---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|