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

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

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

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

खास आपके लिए

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

खास आपके लिए

विजेट में किए गए सुधार

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 रेफ़रंस दस्तावेज़ देखें.

ऐप्लिकेशन खोज

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

AppSearch में इंडेक्स करने और खोजने की जानकारी देने वाला डायग्राम

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

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

गेम मोड

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

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

पिक्चर में पिक्चर (पीआईपी) मोड के सुझाव और उसमें हुए सुधार

Android 12 में, पीआईपी मोड में ये सुधार किए गए हैं:

पिन किए गए वीडियो के लिए नए जेस्चर की सुविधा

Android 12 में, अब पीआईपी विंडो के लिए, को छिपाने और ज़ूम करने के लिए पिंच हाथ के जेस्चर (हाव-भाव) की सुविधा काम करती है:

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

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

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

इन सुविधाओं के बारे में यहां बताया गया है:

आने वाले (इनकमिंग) कॉल की रैंकिंग की अहमियत को समझने के लिए, फ़ोन कॉल के नए नोटिफ़िकेशन उपलब्ध कराए गए हैं

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>

मीडिया

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

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

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

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

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

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

वीडियो एन्कोडिंग से जुड़ी बेहतर सुविधाएं

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

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

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

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

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