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

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

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

उपयोगकर्ता अनुभव

खास आपके लिए

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

खास आपके लिए

विजेट की सुविधा को बेहतर बनाया गया है

Android 12 में, मौजूदा Widgets API को बेहतर बनाया गया है. इससे प्लैटफ़ॉर्म और लॉन्चर में, उपयोगकर्ता और डेवलपर के अनुभव को बेहतर बनाया जा सकेगा. हमने एक गाइड बनाई है. इससे आपको यह पक्का करने में मदद मिलेगी कि आपका विजेट 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 में इंडेक्सिंग और खोजने की सुविधा दिखाने वाला डायग्राम

AppSearch दो वर्शन में उपलब्ध है: पहला, आपके ऐप्लिकेशन के लिए लोकल इंडेक्स, जिसका इस्तेमाल Android के पुराने वर्शन पर किया जा सकता है. दूसरा, Android 12 में पूरे सिस्टम के लिए बनाए रखा गया सेंट्रल इंडेक्स. सेंट्रल इंडेक्स का इस्तेमाल करके, आपका ऐप्लिकेशन अपने डेटा को सिस्टम यूज़र इंटरफ़ेस (यूआई) पर दिखा सकता है. ऐसा सिस्टम के पहले से इंस्टॉल किए गए इंटेलिजेंस कॉम्पोनेंट की मदद से किया जा सकता है. सिस्टम यूज़र इंटरफ़ेस (यूआई) पर कौनसा डेटा दिखेगा, यह ओईएम पर निर्भर करता है. इसके अलावा, आपका ऐप्लिकेशन अन्य ऐप्लिकेशन के साथ सुरक्षित तरीके से डेटा शेयर कर सकता है, ताकि वे भी उस डेटा को खोज सकें.

डेवलपर गाइड में AppSearch के बारे में ज़्यादा जानें. साथ ही, AppSearch Jetpack लाइब्रेरी का इस्तेमाल करके इसे शुरू करें. यह लाइब्रेरी, डेवलपर के लिए आसान एपीआई के साथ-साथ एनोटेशन प्रोसेसर का सपोर्ट भी देती है.

गेम मोड

Game Mode API और Game Mode interventions की मदद से, गेमप्ले को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, उपयोगकर्ताओं की सेटिंग या गेम के हिसाब से कॉन्फ़िगरेशन के आधार पर, परफ़ॉर्मेंस या बैटरी लाइफ़ जैसी विशेषताओं को प्राथमिकता दी जाती है.

ज़्यादा जानकारी के लिए, गेम मोड देखें.

पिक्चर में पिक्चर (पीआईपी) की सुविधा से जुड़े सुझाव और सुधार

Android 12 में, PiP मोड के लिए ये सुधार किए गए हैं:

पीआईपी के लिए नए जेस्चर की सुविधा

Android 12 में, PiP विंडो के लिए स्टैश करने और पिंच करके ज़ूम करने के जेस्चर की सुविधा उपलब्ध है:

  • विंडो को स्टैश करने के लिए, उपयोगकर्ता उसे बाईं या दाईं ओर खींचकर छोड़ सकता है. विंडो को वापस लाने के लिए, उपयोगकर्ता छिपाई गई विंडो के दिखने वाले हिस्से पर टैप कर सकता है या उसे खींचकर बाहर ला सकता है.

  • अब उपयोगकर्ता, पिंच-टू-ज़ूम का इस्तेमाल करके PiP विंडो का साइज़ बदल सकते हैं.

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

ये सुविधाएं यहां दी गई हैं:

फ़ोन कॉल की नई सूचनाएं, जो आने वाले कॉल की अहमियत के हिसाब से रैंक करने की अनुमति देती हैं

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 में, डेवलपर को यह कंट्रोल करने की सुविधा मिलती है कि जब उपयोगकर्ता डेवलपर के ऐप्लिकेशन के साथ इंटरैक्ट करें, तो उन्हें क्या दिखे. इसके लिए, Android 12 में उन ऐप्लिकेशन की ओर से बनाई गई ओवरले विंडो को छिपाने की सुविधा दी गई है जिनके पास SYSTEM_ALERT_WINDOW अनुमति है.

HIDE_OVERLAY_WINDOWS अनुमति का एलान करने के बाद, कोई ऐप्लिकेशन setHideOverlayWindows() को कॉल कर सकता है. इससे यह पता चलता है कि जब ऐप्लिकेशन की अपनी विंडो दिख रही हो, तब TYPE_APPLICATION_OVERLAY टाइप की सभी विंडो छिपी होनी चाहिए. ऐप्लिकेशन, संवेदनशील स्क्रीन दिखाते समय ऐसा कर सकते हैं. जैसे, लेन-देन की पुष्टि करने वाले फ़्लो.

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

हस्ताक्षर करने वालों की अनुमति की सुरक्षा से जुड़ा फ़्लैग

Android 12 से, signature-level permissions के लिए knownCerts एट्रिब्यूट का इस्तेमाल किया जा सकता है. इससे, एलान के समय जाने-पहचाने signing certificates के डाइजेस्ट का रेफ़रंस दिया जा सकता है.

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

मीडिया

HEVC फ़ॉर्मैट पर काम न करने वाले ऐप्लिकेशन के लिए मीडिया ट्रांसकोडिंग

Android 12 (एपीआई लेवल 31) से, सिस्टम डिवाइस पर रिकॉर्ड किए गए HEVC(H.265) और एचडीआर (HDR10 और HDR10+) वीडियो को AVC (H.264) में अपने-आप ट्रांसकोड कर सकता है. यह फ़ॉर्मैट, स्टैंडर्ड प्लेयर के साथ काम करता है. यह सुविधा, पुराने ऐप्लिकेशन के साथ काम करने की सुविधा को बनाए रखते हुए, उपलब्ध होने पर नए कोडेक का इस्तेमाल करती है.

ज़्यादा जानकारी के लिए, मीडिया ट्रांसकोडिंग की सुविधा के साथ काम करने वाले फ़ॉर्मैट देखें.

परफ़ॉर्मेंस क्लास

Android 12 में, परफ़ॉर्मेंस क्लास नाम का एक स्टैंडर्ड पेश किया गया है. परफ़ॉर्मेंस क्लास, Android की बुनियादी ज़रूरी शर्तों से ज़्यादा हार्डवेयर क्षमताओं के बारे में बताती है. हर Android डिवाइस, परफ़ॉर्मेंस क्लास के बारे में बताता है. डेवलपर, रनटाइम के दौरान डिवाइस की परफ़ॉर्मेंस क्लास की जांच कर सकते हैं. साथ ही, वे बेहतर अनुभव दे सकते हैं, ताकि डिवाइस की क्षमताओं का पूरा फ़ायदा उठाया जा सके.

ज़्यादा जानकारी के लिए, परफ़ॉर्मेंस क्लास देखें.

वीडियो एन्कोडिंग की प्रोसेस को बेहतर बनाया गया है

Android 12 में, वीडियो एन्कोडिंग के लिए क्वांटाइज़ेशन पैरामीटर (QP) की वैल्यू को कंट्रोल करने के लिए, कुंजियों का एक स्टैंडर्ड सेट तय किया गया है. इससे डेवलपर, वेंडर के हिसाब से कोड का इस्तेमाल करने से बच सकते हैं.

नई कुंजियां, MediaFormat एपीआई और NDK मीडिया लाइब्रेरी में उपलब्ध हैं.

Android 12 से, वीडियो एन्कोडर के लिए क्वालिटी का कम से कम थ्रेशोल्ड लागू किया गया है. इससे यह पक्का होता है कि ज़्यादा जटिल सीन वाले वीडियो को एन्कोड करते समय, लोगों को बहुत खराब क्वालिटी का अनुभव न मिले.

ऑडियो फ़ोकस

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

ज़्यादा जानकारी के लिए, Android 12 और इसके बाद के वर्शन में ऑडियो फ़ोकस लेख पढ़ें.

MediaDrm से जुड़े अपडेट

यह तय करने के लिए कि मौजूदा MediaDrm एपीआई के साथ सुरक्षित डिकोडर कॉम्पोनेंट की ज़रूरत है या नहीं, आपको यह तरीका अपनाना होगा:

  1. MediaDrm बनाएं.
  2. सेशन आईडी पाने के लिए, कोई सेशन खोलें.
  3. सेशन आईडी का इस्तेमाल करके MediaCrypto बनाएं.
  4. 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 डिवाइसों में अल्ट्रा हाई-रिज़ॉल्यूशन वाले कैमरा सेंसर होते हैं. ये आम तौर पर क्वाड या नोना बेयर पैटर्न के साथ आते हैं. इनसे इमेज की क्वालिटी और कम रोशनी में परफ़ॉर्मेंस के मामले में काफ़ी फ़ायदा मिलता है. Android 12 में नए प्लैटफ़ॉर्म एपीआई पेश किए गए हैं. इनकी मदद से, तीसरे पक्ष के ऐप्लिकेशन इन अलग-अलग तरह के सेंसर का पूरा फ़ायदा ले सकते हैं. नए एपीआई, इन सेंसर के खास व्यवहार के साथ काम करते हैं. साथ ही, यह ध्यान रखते हैं कि फ़ुल रिज़ॉल्यूशन या ‘ज़्यादा से ज़्यादा रिज़ॉल्यूशन’ मोड में काम करते समय, ये अलग-अलग स्ट्रीम कॉन्फ़िगरेशन और कॉम्बिनेशन के साथ काम कर सकते हैं. हालांकि, ‘डिफ़ॉल्ट’ मोड में ऐसा नहीं होता.

ग्राफ़िक और इमेज

ऐप्लिकेशन को सीधे तौर पर टॉम्बस्टोन ट्रेस का ऐक्सेस देना

Android 12 और इसके बाद के वर्शन में, ApplicationExitInfo.getTraceInputStream() तरीके का इस्तेमाल करके, अपने ऐप्लिकेशन के नेटिव क्रैश टॉम्बस्टोन को प्रोटोकॉल बफ़र के तौर पर ऐक्सेस किया जा सकता है. प्रोटोकॉल बफ़र को इस स्कीमा का इस्तेमाल करके क्रम से लगाया जाता है. पहले, इस जानकारी को सिर्फ़ Android डीबग ब्रिज (एडीबी) के ज़रिए ऐक्सेस किया जा सकता था.

ज़्यादा जानकारी के लिए, ऐप्लिकेशन को सीधे तौर पर टॉम्बस्टोन ट्रेस का ऐक्सेस देना लेख पढ़ें

AVIF इमेज के लिए सहायता

Android 12 में, AV1 इमेज फ़ाइल फ़ॉर्मैट (AVIF) का इस्तेमाल करने वाली इमेज के लिए सहायता उपलब्ध कराई गई है. AVIF, इमेज और AV1 का इस्तेमाल करके एन्कोड की गई इमेज के क्रम के लिए एक कंटेनर फ़ॉर्मैट है. AVIF, वीडियो कंप्रेस करने की प्रोसेस में, इंट्रा-फ़्रेम में कोड किए गए कॉन्टेंट का इस्तेमाल करता है. यह फ़ॉर्मैट, JPEG जैसे पुराने इमेज फ़ॉर्मैट की तुलना में, फ़ाइल के साइज़ को बढ़ाए बिना इमेज की क्वालिटी को बेहतर बनाता है. इस फ़ॉर्मैट के फ़ायदों के बारे में ज़्यादा जानने के लिए, Jake Archibald की ब्लॉग पोस्ट पढ़ें.

ब्लर करने, रंग के फ़िल्टर लगाने, और अन्य इफ़ेक्ट का इस्तेमाल करने में आसानी

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

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 और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन में, डिवाइस की स्क्रीन चालू किए बिना ही NFC पेमेंट की सुविधा चालू की जा सकती है. इसके लिए, requireDeviceScreenOn को false पर सेट करें. स्क्रीन बंद होने या लॉक होने पर, NFC पेमेंट करने के बारे में ज़्यादा जानने के लिए, स्क्रीन बंद होने और लॉक-स्क्रीन के दौरान होने वाली गतिविधि लेख पढ़ें.

स्टोरेज

Android 12 में, स्टोरेज मैनेज करने से जुड़ी ये सुविधाएं उपलब्ध हैं:

मुख्य फ़ंक्शन

ऐप्लिकेशन अपने-आप अपडेट होने की सुविधा

Android 12 में, PackageInstaller एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, setRequireUserAction() तरीका पेश किया गया है. इस तरीके से, इंस्टॉलर ऐप्लिकेशन, ऐप्लिकेशन को अपडेट कर सकते हैं. इसके लिए, उपयोगकर्ता को कार्रवाई की पुष्टि करने की ज़रूरत नहीं होती.

डिवाइस के चिपसेट की जानकारी

Android 12, android.os.Build में दो कॉन्स्टेंट जोड़ता है. ये एसडीके के ज़रिए, 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