Android 12 में, डेवलपर के लिए कई नई सुविधाएं और एपीआई जोड़े गए हैं. नीचे दिए गए सेक्शन, अपने ऐप्लिकेशन की सुविधाओं के बारे में जानने और इनसे जुड़े एपीआई का इस्तेमाल शुरू करने में आपकी मदद करते हैं.
नए, बदले गए, और हटाए गए एपीआई की पूरी सूची के लिए, एपीआई के बीच अंतर की रिपोर्ट पढ़ें. नए एपीआई के बारे में ज़्यादा जानने के लिए, Android एपीआई का रेफ़रंस देखें. नए एपीआई को हाइलाइट किया गया है, ताकि उन्हें आसानी से देखा जा सके. साथ ही, उन जगहों के बारे में जानने के लिए जहां प्लैटफ़ॉर्म में हुए बदलावों का आपके ऐप्लिकेशन पर असर पड़ सकता है, Android 12 को टारगेट करने वाले ऐप्लिकेशन और सभी ऐप्लिकेशन के लिए, Android 12 के काम करने के तरीके में हुए बदलावों को देखना न भूलें.
उपयोगकर्ता अनुभव
खास आपके लिए
Android 12 को लॉन्च किया गया है एक नई डिज़ाइन भाषा, जिसे Material You कहा जाता है. इससे आपको अपनी पसंद के हिसाब से ज़्यादा आकर्षक ऐप्लिकेशन बनाने में मदद मिलेगी. अपने ऐप्लिकेशन में Material Design 3 के सभी नए अपडेट शामिल करने के लिए, Material Design के कॉम्पोनेंट के अल्फा वर्शन को आज़माएं.
विजेट में किए गए सुधार
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 में पूरे सिस्टम के लिए बनाए रखा जाने वाला एक मुख्य इंडेक्स. सेंट्रल इंडेक्स का इस्तेमाल करके, आपका ऐप्लिकेशन अपने डेटा को सिस्टम के यूज़र इंटरफ़ेस (यूआई) प्लैटफ़ॉर्म पर दिखाने की अनुमति दे सकता है. इसके लिए, सिस्टम में पहले से इंस्टॉल किए गए इंटेलिजेंस कॉम्पोनेंट का इस्तेमाल किया जाता है. सिस्टम यूज़र इंटरफ़ेस (यूआई) के प्लैटफ़ॉर्म पर कौनसा डेटा दिखेगा, यह OEM पर निर्भर करता है. इसके अलावा, आपका ऐप्लिकेशन अन्य ऐप्लिकेशन के साथ डेटा को सुरक्षित तरीके से शेयर कर सकता है, ताकि वे उस डेटा को भी खोज सकें.
डेवलपर गाइड में, AppSearch के बारे में ज़्यादा जानें. साथ ही, AppSearch Jetpack लाइब्रेरी का इस्तेमाल शुरू करें. यह लाइब्रेरी, डेवलपर के लिए आसानी से इस्तेमाल होने वाला एपीआई और एनोटेशन प्रोसेसर की सहायता उपलब्ध कराती है.
गेम मोड
Game Mode API और Game Mode के इंटरवेंशन की मदद से, गेमप्ले को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, उपयोगकर्ता की सेटिंग या गेम के खास कॉन्फ़िगरेशन के आधार पर, परफ़ॉर्मेंस या बैटरी लाइफ़ जैसी विशेषताओं को प्राथमिकता दी जाती है.
ज़्यादा जानकारी के लिए, गेम मोड लेख पढ़ें.
पिक्चर में पिक्चर (पीआईपी) के सुझाव और सुधार
Android 12 में, पीआईपी मोड में ये सुधार किए गए हैं:
पीआईपी के नए जेस्चर की सुविधा
Android 12 में अब पिन की गई विंडो के लिए, छिपाने और पिंच करके ज़ूम करने के जेस्चर काम करते हैं:
विंडो को छिपाने के लिए, उपयोगकर्ता उसे बाएं या दाएं किनारे पर खींचकर छोड़ सकता है. विंडो को अनस्टैश करने के लिए, उपयोगकर्ता स्टैश की गई विंडो के दिख रहे हिस्से पर टैप कर सकता है या उसे खींचकर बाहर ला सकता है.
उपयोगकर्ता अब पिंच-टू-ज़ूम का इस्तेमाल करके, पिन किए गए वीडियो की विंडो का साइज़ बदल सकता है.
सुझाई गई नई सुविधाएं, जो पिन किए गए वीडियो के ट्रांज़िशन को बेहतर बनाती हैं
Android 12 में, फ़ुलस्क्रीन और पिन की गई विंडो के बीच ऐनिमेशन वाले ट्रांज़िशन में काफ़ी सुधार किए गए हैं. हमारा सुझाव है कि आप सभी ज़रूरी बदलाव लागू करें. ऐसा करने के बाद, ये बदलाव फ़ोल्ड किए जा सकने वाले डिवाइसों और टैबलेट जैसी बड़ी स्क्रीन पर अपने-आप लागू हो जाएंगे. इसके लिए, आपको कुछ भी करने की ज़रूरत नहीं होगी.
ये सुविधाएं यहां दी गई हैं:
जेस्चर नेविगेशन की मदद से, पिन किए गए विंडो मोड पर आसानी से स्विच करने के लिए, एपीआई का नया फ़्लैग
जेस्चर नेविगेशन मोड में होम स्क्रीन पर ऊपर की ओर स्वाइप करते समय, पीआईपी मोड में आसानी से ट्रांज़िशन करने के लिए,
setAutoEnterEnabled
फ़्लैग का इस्तेमाल करें. पहले, Android, PiP विंडो में फ़ेड होने से पहले, होम स्क्रीन पर स्वाइप-अप करने के ऐनिमेशन के खत्म होने का इंतज़ार करता था.पीआईपी मोड में जाने और उससे बाहर निकलने पर बेहतर ऐनिमेशन
पीआईपी मोड में जाने और उससे बाहर निकलने पर, बेहतर ऐनिमेशन लागू करने के लिए,
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
फ़ील्ड शामिल होते हैं:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
लॉकस्क्रीन पर सुरक्षित तरीके से मिलने वाली सूचनाओं से जुड़ी कार्रवाइयां
Android 12 से, Notification.Action.Builder
क्लास के साथ setAuthenticationRequired()
वाला तरीका काम करता है. इसकी मदद से, आपके ऐप्लिकेशन को किसी सूचना से जुड़ी कार्रवाई करने से पहले, डिवाइस को अनलॉक करना ज़रूरी है. इस तरीके से, लॉक किए हुए डिवाइसों पर
सूचनाओं को ज़्यादा सुरक्षित बनाने में मदद मिलती है.
BiometricPrompt के लिए, स्थानीय भाषा में बदली जा सकने वाली स्ट्रिंग
Android 12 में नए एपीआई जोड़े गए हैं. इनकी मदद से, अपने ऐप्लिकेशन में उपयोगकर्ता के लिए, बायोमेट्रिक पुष्टि करने का बेहतर अनुभव दिया जा सकता है. नई BiometricManager.Strings
नेस्ट की गई क्लास में, getButtonLabel()
,
getPromptMessage()
, और getSettingName()
तरीके शामिल हैं. इनकी मदद से, आपके ऐप्लिकेशन में उपयोगकर्ता के पढ़ने लायक और स्थानीय भाषा में बटन का लेबल, प्रॉम्प्ट मैसेज या ऐप्लिकेशन सेटिंग का नाम वापस पाया जा सकता है. इन लेबल का इस्तेमाल करके, उपयोगकर्ता को दिए जाने वाले सटीक निर्देश बनाएं. ये निर्देश, बायोमेट्रिक तरीके से पुष्टि करने के तरीकों से जुड़े होते हैं. जैसे, “फ़ेस अनलॉक की सुविधा का इस्तेमाल करना” या “जारी रखने के लिए, अपने फ़िंगरप्रिंट का इस्तेमाल करना”.
मैसेजिंग ऐप्लिकेशन में फ़िशिंग का पता लगाना (सिर्फ़ Pixel के लिए)
Android 12, उन Pixel डिवाइसों पर फ़िशिंग का पता लगाता है जिन पर यह सुविधा काम करती है. इसके लिए, यह लोकप्रिय मैसेजिंग ऐप्लिकेशन से मिले मैसेज का इस्तेमाल करता है. संदिग्ध गतिविधियों का पता लगाने के लिए, यह सिस्टम ऑन-डिवाइस मशीन लर्निंग का इस्तेमाल करता है. मैलवेयर का पता चलने पर, सिस्टम मैसेजिंग ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के ऊपर सुरक्षा ओवरले दिखाता है, ताकि उपयोगकर्ताओं को चेतावनी दी जा सके. उदाहरण के लिए, फ़िशिंग की पहचान करने से, उपयोगकर्ताओं को नीचे दिए गए संभावित जोखिमों के बारे में चेतावनी मिल सकती है:
- संदिग्ध अनुरोध, जैसे कि कोड, पैसे या ऐसी ही कोई चीज़ भेजने के लिए
- गैर-भरोसेमंद यूआरएल
- नुकसान पहुंचाने वाले अटैचमेंट
- नुकसान पहुंचाने वाले ऐप्लिकेशन के लिंक
उपयोगकर्ता को चेतावनी देने के अलावा, ओवरले की मदद से उपयोगकर्ता किसी संदिग्ध मैसेज की शिकायत भी कर सकता है. साथ ही, सिस्टम से मिली चेतावनियों के बारे में सुझाव या राय भी दे सकता है.
डेवलपर इस सुविधा से ऑप्ट-आउट कर सकते हैं. इसके लिए, उन्हें अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइलों में एक नया मेटाडेटा टैग जोड़ना होगा. इस टैग में com.google.android.ALLOW_PHISHING_DETECTION
स्ट्रिंग शामिल होनी चाहिए. उदाहरण के लिए:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
मीडिया
इस सुविधा के साथ काम करने वाले मीडिया ट्रांसकोडिंग
Android 12 (एपीआई लेवल 31) से शुरू किए गए सिस्टम, डिवाइस पर रिकॉर्ड किए गए HEVC(H.265) और एचडीआर (HDR10 और HDR10+) वीडियो को अपने-आप एवीसी (H.264) पर ट्रांसकोड कर सकता है. यह एक ऐसा फ़ॉर्मैट है जो स्टैंडर्ड प्लेयर के साथ बड़े पैमाने पर काम करता है. यह सुविधा, पुराने ऐप्लिकेशन के साथ काम करने की सुविधा को बनाए रखते हुए, उपलब्ध होने पर नए कोडेक का फ़ायदा लेती है.
ज़्यादा जानकारी के लिए, काम करने वाले मीडिया को ट्रांसकोड करना देखें.
परफ़ॉर्मेंस क्लास
Android 12 में परफ़ॉर्मेंस क्लास नाम का एक स्टैंडर्ड शामिल किया गया है. परफ़ॉर्मेंस क्लास से, Android की बुनियादी ज़रूरतों के अलावा हार्डवेयर की क्षमताओं के बारे में पता चलता है. हर Android डिवाइस उस परफ़ॉर्मेंस क्लास के बारे में बताता है जो उसके साथ काम करती है. डेवलपर, डिवाइस की परफ़ॉर्मेंस क्लास को रनटाइम पर देख सकते हैं और डिवाइस की सुविधाओं का पूरा फ़ायदा उठाने के लिए, बेहतर अनुभव दे सकते हैं.
ज़्यादा जानकारी के लिए, परफ़ॉर्मेंस क्लास देखें.
वीडियो एन्कोडिंग में सुधार
Android 12 में, वीडियो कोड में बदलने के लिए क्वांटिज़ेशन पैरामीटर (QP) की वैल्यू को कंट्रोल करने के लिए, कुंजियों का एक स्टैंडर्ड सेट तय किया गया है. इससे डेवलपर, वेंडर के हिसाब से बनाए गए कोड का इस्तेमाल करने से बच सकते हैं.
नई कुंजियां, 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 एक्सटेंशन एपीआई, CameraX की तरह ही एक्सटेंशन का वही सेट दिखाते हैं. ये कई अलग-अलग डिवाइसों पर पहले से काम करते हैं. इसलिए, इनका इस्तेमाल बिना किसी अतिरिक्त कॉन्फ़िगरेशन के किया जा सकता है.
ज़्यादा जानकारी के लिए, CameraExtensionCharacteristics
देखें.
क्वाड बेयर कैमरा सेंसर के साथ काम करना
फ़िलहाल, ज़्यादातर Android डिवाइसों में अल्ट्रा हाई रिज़ॉल्यूशन वाले कैमरा सेंसर होते हैं. आम तौर पर, ये क्वाड या नॉन-नाइन बेयर पैटर्न के साथ होते हैं. इनसे इमेज क्वालिटी और कम रोशनी में बेहतर परफ़ॉर्मेंस मिलती है. Android 12 में नए प्लैटफ़ॉर्म एपीआई जोड़े गए हैं. इनकी मदद से, तीसरे पक्ष के ऐप्लिकेशन इन बेहतर सेंसर का पूरा फ़ायदा ले सकते हैं. नए एपीआई इन सेंसर के खास व्यवहार के साथ काम करते हैं. साथ ही, इस बात को ध्यान में रखते हैं कि 'डिफ़ॉल्ट' मोड के मुकाबले 'फ़ुल रिज़ॉल्यूशन' या 'ज़्यादा से ज़्यादा रिज़ॉल्यूशन' मोड में काम करते समय, ये अलग-अलग स्ट्रीम कॉन्फ़िगरेशन और एक साथ काम कर सकते हैं.
ग्राफ़िक और इमेज
ऐप्लिकेशन को टॉम्बस्टोन ट्रेस का सीधा ऐक्सेस देना
Android 12 और उसके बाद के वर्शन में, ApplicationExitInfo.getTraceInputStream()
के ज़रिए अपने ऐप्लिकेशन के क्रैश टॉम्बस्टोन को प्रोटोकॉल बफ़र के तौर पर ऐक्सेस किया जा सकता है. प्रोटोकॉल बफ़र को इस स्कीमा का इस्तेमाल करके क्रम से लगाया जाता है.
पहले, इस जानकारी को ऐक्सेस करने का सिर्फ़ एक तरीका था. इसके लिए, Android डीबग ब्रिज (adb) का इस्तेमाल करना होता था.
ज़्यादा जानकारी के लिए, ऐप्लिकेशन को टॉम्बस्टोन ट्रेस का सीधा ऐक्सेस देना लेख पढ़ें
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 में, एनडीके ImageDecoder
एपीआई को ऐनिमेटेड GIF और ऐनिमेटेड WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करने वाली इमेज के सभी फ़्रेम और टाइमिंग डेटा को डिकोड करने के लिए बड़ा किया गया है. Android 11 में इसे लॉन्च किए जाने के बाद, यह एपीआई इन फ़ॉर्मैट में ऐनिमेशन की सिर्फ़ पहली इमेज को डिकोड करता था.
APK का साइज़ कम करने और आने वाले समय में सुरक्षा और परफ़ॉर्मेंस से जुड़े अपडेट का फ़ायदा पाने के लिए, तीसरे पक्ष की लाइब्रेरी के बजाय ImageDecoder
का इस्तेमाल करें.
एपीआई के बारे में ज़्यादा जानकारी के लिए, एपीआई के लिए रेफ़रंस और GitHub पर सैंपल देखें.
कनेक्टिविटी
साथी ऐप्लिकेशन को चालू रखना
डिवाइस को मैनेज करने के लिए, साथी ऐप्लिकेशन को चालू रखने की ज़रूरत को पूरा करने के लिए, Android 12 में ऐसे एपीआई जोड़े गए हैं जो ये काम करते हैं:
- इससे, साथी डिवाइस की रेंज में होने पर, ऐप्लिकेशन को चालू किया जा सकता है.
- इस बात की गारंटी है कि डिवाइस के रेंज में रहने पर भी प्रोसेस चलती रहेगी.
एपीआई का इस्तेमाल करने के लिए, आपके डिवाइसों को Companion Device
Manager का इस्तेमाल करके कनेक्ट करना ज़रूरी है. ज़्यादा जानकारी के लिए, CompanionDeviceManager.startObservingDevicePresence()
और CompanionDeviceService.onDeviceAppeared()
देखें.
कंपैनियन डिवाइस मैनेजर की प्रोफ़ाइलें
Android 12 (एपीआई लेवल 31) और इसके बाद वाले वर्शन पर काम करने वाले पार्टनर ऐप्लिकेशन, स्मार्टवॉच से कनेक्ट करते समय साथी डिवाइस की प्रोफ़ाइलों का इस्तेमाल कर सकते हैं. प्रोफ़ाइल का इस्तेमाल करने से, रजिस्टर करने की प्रोसेस आसान हो जाती है. ऐसा इसलिए होता है, क्योंकि डिवाइस के टाइप के हिसाब से अनुमतियों के सेट को एक ही चरण में मंज़ूरी दी जाती है.
डिवाइस कनेक्ट होने के बाद, साथी ऐप्लिकेशन को बंडल की गई अनुमतियां मिल जाती हैं. ये अनुमतियां सिर्फ़ तब तक मिलती हैं, जब तक डिवाइस कनेक्ट रहता है. ऐप्लिकेशन मिटाने या असोसिएशन हटाने पर, अनुमतियां हट जाती हैं.
ज़्यादा जानकारी के लिए, AssociationRequest.Builder.setDeviceProfile()
देखें.
बैंडविथ के अनुमान में सुधार
Android 12 में, getLinkDownstreamBandwidthKbps()
और getLinkUpstreamBandwidthKbps()
की मदद से, बैंडविड्थ का अनुमान लगाने की सुविधा को बेहतर बनाया गया है. यह सुविधा, वाई-फ़ाई और मोबाइल इंटरनेट, दोनों के लिए उपलब्ध है. अब दिखाई गई वैल्यू, डिवाइस पर मौजूद सभी ऐप्लिकेशन के लिए, हर कैरियर या वाई-फ़ाई SSID, नेटवर्क टाइप, और सिग्नल लेवल के हिसाब से, उपयोगकर्ता के अब तक के औसत थ्रूपुट को दिखाती हैं.
ऐसा करने से, ऐप्लिकेशन के काम करने की अनुमानित दर का ज़्यादा सटीक और सही अनुमान लगाया जा सकता है. साथ ही, ऐप्लिकेशन के कोल्ड स्टार्ट के बारे में अनुमानित जानकारी दी जा सकती है. साथ ही, अन्य थ्रूपुट अनुमान के तरीकों की तुलना में, कम साइकल की ज़रूरत होती है.
वाई-फ़ाई अवेयर (एनएएन) की सुविधा को बेहतर बनाना
Android 12 में, वाई-फ़ाई अवेयर सुविधा को बेहतर बनाया गया है:
- 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
में दो कॉन्स्टेंट जोड़ता है. ये कॉन्स्टेंट, SDK टूल की मदद से SoC चिपसेट वेंडर और मॉडल की जानकारी दिखाते हैं. इस जानकारी को पाने के लिए, 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
|