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

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 से, हस्ताक्षर के लेवल की अनुमतियों के लिए 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>

मीडिया

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 Debug Bridge (adb) के ज़रिए ऐक्सेस किया जा सकता था.

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

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 में ऐसे एपीआई पेश किए गए हैं जो ये काम करते हैं:

  • इससे स्मार्टवॉच से जुड़े डिवाइस के रेंज में होने पर, ऐप्लिकेशन को चालू किया जा सकता है.
  • इस बात की गारंटी देता है कि डिवाइस रेंज में रहने पर प्रोसेस चलती रहेगी.

एपीआई का इस्तेमाल करने के लिए, आपके डिवाइस कंपैनियन डिवाइस मैनेजर का इस्तेमाल करके कनेक्ट होने चाहिए. ज़्यादा जानकारी के लिए, 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 API का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, 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