Android 10 की सुविधाएं और एपीआई

Android 10 में उपयोगकर्ताओं और डेवलपर के लिए, बेहतर सुविधाएं और क्षमताएं उपलब्ध हैं. इस दस्तावेज़ में, डेवलपर के लिए उपलब्ध सुविधाओं के बारे में बताया गया है.

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

सुरक्षा से जुड़ी बेहतर सुविधाएं

Android 10 में सुरक्षा से जुड़ी कई सुविधाएं जोड़ी गई हैं. इनके बारे में यहां बताया गया है.

बायोमेट्रिक ऑथेंटिकेशन के लिए बेहतर डायलॉग

Android 10 में, बायोमेट्रिक ऑथेंटिकेशन की सुविधा में ये सुधार किए गए हैं:

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

एम्बेड किए गए DEX कोड को सीधे APK से चलाना

Android 10 के बाद, प्लैटफ़ॉर्म को सीधे अपने ऐप्लिकेशन की APK फ़ाइल से एम्बेड किया गया DEX कोड चलाने के लिए कहा जा सकता है. अगर हमलावर कभी भी डिवाइस पर, लोकल तौर पर कॉम्पाइल किए गए कोड में बदलाव कर पाता है, तो इस विकल्प की मदद से हमले को रोका जा सकता है.

ज़्यादा जानकारी के लिए, एम्बेड किए गए DEX कोड को सीधे APK से चलाना लेख पढ़ें.

TLS 1.3 के साथ काम करना

Android 10 में TLS 1.3 के साथ काम करने की सुविधा जोड़ी गई है. TLS 1.3, TLS स्टैंडर्ड का एक बड़ा बदलाव है. इसमें परफ़ॉर्मेंस के फ़ायदे और बेहतर सुरक्षा शामिल है. हमारे बेंचमार्क से पता चलता है कि TLS 1.2 की तुलना में, TLS 1.3 की मदद से सुरक्षित कनेक्शन 40% ज़्यादा तेज़ी से बनाए जा सकते हैं.

TLS 1.3 को लागू करने के बारे में ज़्यादा जानकारी के लिए, सभी ऐप्लिकेशन के व्यवहार में हुए बदलावों वाले पेज पर, TLS सेक्शन देखें.

सार्वजनिक Conscrypt API

Android 10 के बाद, Conscrypt सुरक्षा सेवा देने वाली कंपनी ने TLS की सुविधा के लिए, एक सार्वजनिक एपीआई शामिल किया है.

android.net.ssl में मौजूद क्लास के कलेक्शन में, ऐसी सुविधाओं को ऐक्सेस करने के लिए स्टैटिक तरीके शामिल होते हैं जो सामान्य javax.net.ssl एपीआई से उपलब्ध नहीं होते. इन क्लास के नाम, संबंधित javax.net.ssl क्लास के बहुवचन के तौर पर समझे जा सकते हैं. उदाहरण के लिए, javax.net.ssl.SSLSocket के इंस्टेंस पर काम करने वाला कोड, SSLSockets के तरीकों का इस्तेमाल कर सकता है.

कनेक्टिविटी से जुड़ी सुविधाएं

Android 10 में, नेटवर्क और कनेक्टिविटी से जुड़े कई सुधार किए गए हैं.

Wi-Fi नेटवर्क कनेक्शन API

Android 10 में पीयर-टू-पीयर कनेक्शन की सुविधा जोड़ी गई है. इस सुविधा की मदद से, आपका ऐप्लिकेशन उपयोगकर्ता को उस ऐक्सेस पॉइंट को बदलने के लिए कह सकता है जिससे डिवाइस कनेक्ट है. इसके लिए, अनुरोध किए गए नेटवर्क की प्रॉपर्टी के बारे में बताने के लिए, WifiNetworkSpecifier का इस्तेमाल किया जाता है. पीयर-टू-पीयर कनेक्शन का इस्तेमाल, नेटवर्क उपलब्ध कराने के अलावा अन्य कामों के लिए किया जाता है. जैसे, Chromecast और Google Home हार्डवेयर जैसे दूसरे डिवाइसों के लिए, कॉन्फ़िगरेशन को बूटस्ट्रैप करना.

ज़्यादा जानकारी के लिए, पीयर-टू-पीयर कनेक्टिविटी के लिए वाई-फ़ाई नेटवर्क अनुरोध एपीआई देखें.

वाई-फ़ाई नेटवर्क के सुझाव देने वाला एपीआई

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

इस सुविधा के बारे में ज़्यादा जानने के लिए, वाई-फ़ाई का सुझाव देखें.

वाई-फ़ाई की बेहतर परफ़ॉर्मेंस और कम इंतज़ार वाले मोड में सुधार

Android 10 की मदद से, डिवाइस में मौजूद मॉडेम को सूचना दी जा सकती है, ताकि इंतज़ार का समय कम किया जा सके.

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

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

डीएनएस रिज़ॉल्वर में खास लुकअप

Android 10 में, क्लियरटेक्स्ट लुकअप और डीएनएस-ओवर-टीएलएस मोड, दोनों का इस्तेमाल करके खास डीएनएस लुकअप के लिए नेटिव सपोर्ट जोड़ा गया है. पहले, प्लैटफ़ॉर्म का डीएनएस रिज़ॉल्वर सिर्फ़ A और AAAA रिकॉर्ड के साथ काम करता था. इन रिकॉर्ड की मदद से, किसी नेम से जुड़े सिर्फ़ आईपी पते देखे जा सकते थे. हालांकि, यह किसी दूसरे टाइप के रिकॉर्ड के साथ काम नहीं करता था. DnsResolver एपीआई, सामान्य और असिंक्रोनस रिज़ॉल्यूशन उपलब्ध कराता है. इससे, SRV, NAPTR, और अन्य तरह के रिकॉर्ड को देखा जा सकता है. ध्यान दें कि जवाब को पार्स करने की ज़िम्मेदारी ऐप्लिकेशन की होती है.

NDK पर आधारित ऐप्लिकेशन के लिए, android_res_nsend देखें.

वाई-फ़ाई आसानी से कनेक्ट करना

Android 10 में, किसी दूसरे डिवाइस पर वाई-फ़ाई क्रेडेंशियल डालने के लिए, आसानी से कनेक्ट करने की सुविधा का इस्तेमाल किया जा सकता है. यह सुविधा, अब काम न करने वाले WPS की जगह लेती है. ऐप्लिकेशन, ACTION_PROCESS_WIFI_EASY_CONNECT_URI इंटेंट का इस्तेमाल करके, अपने सेटअप और प्रोविज़निंग फ़्लो में Easy Connect को इंटिग्रेट कर सकते हैं.

इस सुविधा के बारे में ज़्यादा जानने के लिए, वाई-फ़ाई आसानी से कनेक्ट करना लेख पढ़ें.

Wi-Fi Direct कनेक्शन एपीआई

Android 10 में WifiP2pConfig और WifiP2pManager एपीआई क्लास को अपडेट किया गया है, ताकि पहले से तय की गई जानकारी का इस्तेमाल करके, वाई-फ़ाई डायरेक्ट से तेज़ी से कनेक्शन बनाया जा सके. यह जानकारी, ब्लूटूथ या एनएफ़सी जैसे साइड चैनल के ज़रिए शेयर की जाती है.

यहां दिए गए कोड सैंपल में, पहले से तय की गई जानकारी का इस्तेमाल करके ग्रुप बनाने का तरीका बताया गया है:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

क्रेडेंशियल का इस्तेमाल करके किसी ग्रुप में शामिल होने के लिए, manager.createGroup() को इनके साथ बदलें:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

ब्लूटूथ LE कनेक्शन ओरिएंटेड चैनल (CoC)

Android 10 की मदद से, आपके ऐप्लिकेशन में BLE CoC कनेक्शन का इस्तेमाल किया जा सकता है. इससे, दो BLE डिवाइसों के बीच बड़ी डेटा स्ट्रीम ट्रांसफ़र की जा सकती है. यह इंटरफ़ेस, ब्लूटूथ और कनेक्टिविटी मैकेनिक्स को अलग करता है, ताकि इसे लागू करना आसान हो.

टेलीफ़ोनी की सुविधाएं

Android 10 में, टेलीफ़ोन से जुड़ी कई सुविधाओं में सुधार किए गए हैं.

कॉल की क्वालिटी को बेहतर बनाना

Android 10 में, चल रहे आईपी मल्टीमीडिया सबसिस्टम (आईएमएस) कॉल की क्वालिटी के बारे में जानकारी इकट्ठा करने की सुविधा जोड़ी गई है. इसमें, इस सुविधा के साथ काम करने वाले डिवाइसों पर, नेटवर्क से आने और जाने वाले कॉल की क्वालिटी की जानकारी भी शामिल है.

कॉल की स्क्रीनिंग और कॉलर आईडी

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

कॉल रीडायरेक्शन सेवा का एपीआई

Android 10 में, कॉल इंटेंट को मैनेज करने का तरीका बदल गया है. NEW_OUTGOING_CALL ब्रॉडकास्ट की सुविधा बंद कर दी गई है और इसे CallRedirectionService एपीआई से बदल दिया गया है. CallRedirectionService एपीआई, Android प्लैटफ़ॉर्म से किए गए आउटगोइंग कॉल में बदलाव करने के लिए इंटरफ़ेस उपलब्ध कराता है. उदाहरण के लिए, तीसरे पक्ष के ऐप्लिकेशन कॉल रद्द कर सकते हैं और उन्हें VoIP पर फिर से रूट कर सकते हैं.

बाहरी स्टोरेज में फ़ाइलें बनाने की सुविधा को बेहतर बनाया गया है

Android 10 में स्कोप किए गए स्टोरेज की सुविधा के साथ-साथ, बाहरी स्टोरेज से जुड़ी ये सुविधाएं भी जोड़ी गई हैं:

मीडिया और ग्राफ़िक

Android 10 में, मीडिया और ग्राफ़िक से जुड़ी ये नई सुविधाएं और एपीआई जोड़े गए हैं:

ऑडियो इनपुट शेयर करना

Android 10 में, दो ऐप्लिकेशन के लिए एक साथ ऑडियो इनपुट शेयर करने की सुविधा जोड़ी गई है. पूरी जानकारी के लिए, ऑडियो इनपुट शेयर करना लेख पढ़ें.

ऑडियो प्लेबैक कैप्चर

Android 10 में, किसी ऐप्लिकेशन को दूसरे ऐप्लिकेशन से ऑडियो चलाने की सुविधा मिलती है. पूरी जानकारी के लिए, वीडियो चलाने के दौरान स्क्रीन रिकॉर्ड करना लेख पढ़ें.

MediaStyle सूचनाओं में मौजूद सीकबार

Android 10 से, MediaStyle सूचनाओं में एक स्क्रोल बार दिखता है. PlaybackState.getPosition() से प्लेबैक की प्रोग्रेस को स्क्रीन पर दिखाने के लिए, स्क्रीन पर एक बार में दिखने वाले हिस्से को छोटा या बड़ा करने वाला बार होता है. कुछ मामलों में, इस बार का इस्तेमाल करके चल रहे प्रोग्राम में किसी हिस्से पर पहुंचा जा सकता है. रीवाइस बार के दिखने और काम करने के तरीके को इन नियमों से कंट्रोल किया जाता है:

  • MediaSession चालू होने पर और उसकी अवधि (MediaMetadata.METADATA_KEY_DURATION से तय की गई) शून्य से ज़्यादा होने पर, 'वीडियो पर जाएं' बार दिखता है. इसका मतलब है कि यह बार, लाइव स्ट्रीम और रेडियो ब्रॉडकास्ट जैसी ऐसी स्ट्रीम के लिए नहीं दिखता है जिनके खत्म होने का समय तय नहीं होता.
  • अगर सेशन में ACTION_SEEK_TO लागू किया जाता है, तो उपयोगकर्ता वीडियो चलाने की जगह को कंट्रोल करने के लिए, रीकवर बार को खींच सकता है.

नेटिव MIDI API

Android नेटिव एमआईडीआई एपीआई (AMidi) की मदद से, ऐप्लिकेशन डेवलपर C/C++ कोड की मदद से एमआईडीआई डेटा भेज और पा सकते हैं. साथ ही, वे अपने C/C++ ऑडियो/कंट्रोल लॉजिक के साथ ज़्यादा बेहतर तरीके से इंटिग्रेट कर सकते हैं. इससे, JNI की ज़रूरत कम हो जाती है.

ज़्यादा जानकारी के लिए, Android Native MIDI API देखें.

MediaCodecInfo में किए गए सुधार

Android 10 में MediaCodecInfo के लिए ऐसे तरीके जोड़े गए हैं जिनसे कोडेक के बारे में ज़्यादा जानकारी मिलती है.

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

Thermal API

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

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

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

थर्मल एपीआई के लिए, डिवाइस की नई एचएएल लेयर की ज़रूरत होती है. फ़िलहाल, यह Android 10 पर चलने वाले Pixel डिवाइसों पर काम करता है. हम डिवाइस बनाने वाली कंपनियों के साथ मिलकर काम कर रहे हैं, ताकि इस सुविधा को जल्द से जल्द पूरे ईकोसिस्टम के लिए उपलब्ध कराया जा सके.

कैमरा और इमेज

Android 10 में, कैमरे और इमेज से जुड़ी ये नई सुविधाएं जोड़ी गई हैं:

मोनोक्रोम कैमरे की सुविधा

Android 9 (एपीआई लेवल 28) में पहली बार मोनोक्रोम कैमरे की सुविधा लॉन्च की गई थी. Android 10 में, मोनोक्रोम कैमरे की सुविधा में कई सुधार किए गए हैं:

  • Y8 स्ट्रीम फ़ॉर्मैट की सुविधा, ताकि मेमोरी का बेहतर तरीके से इस्तेमाल किया जा सके.
  • मोनोक्रोम रॉ DNG कैप्चर की सुविधा.
  • सामान्य तौर पर इस्तेमाल होने वाले मॉनोक्रोम कैमरे और नीयर-इंफ़्रारेड कैमरों के बीच अंतर करने के लिए, MONO और NIR सीएफ़ए एलिमेंट को शामिल किया गया है.

इस सुविधा का इस्तेमाल करके, नेटिव मोनोक्रोम इमेज कैप्चर की जा सकती है. एक से ज़्यादा कैमरे वाला कोई डिवाइस, कम रोशनी में बेहतर इमेज क्वालिटी पाने के लिए, फ़िज़िकल सब-कैमरे के तौर पर मोनोक्रोम कैमरे का इस्तेमाल कर सकता है.

डाइनैमिक डेप्थ फ़ॉर्मैट

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

इस फ़ॉर्मैट की स्पेसिफ़िकेशन पढ़ने के लिए, डाइनैमिक डेप्थ फ़ॉर्मैट देखें.

बेहतर परफ़ॉर्मेंस वाली इमेज फ़ाइल फ़ॉर्मैट

हाई एफ़िशिएंसी इमेज फ़ाइल (HEIF) फ़ॉर्मैट, इमेज और वीडियो का एक स्टैंडर्ड फ़ॉर्मैट है. इसकी मदद से, अन्य फ़ाइल फ़ॉर्मैट की तुलना में बेहतर क्वालिटी में डेटा कोड में बदला जा सकता है और फ़ाइल का साइज़ भी कम किया जा सकता है.

फ़ाइल फ़ॉर्मैट के बारे में ज़्यादा जानने के लिए, HEIC देखें.

एक से ज़्यादा कैमरे इस्तेमाल करने की सुविधा में सुधार

Android 10 में, एक से ज़्यादा कैमरों को एक लॉजिकल कैमरे में फ़्यूज़ करने की सुविधा को बेहतर बनाया गया है. यह सुविधा, Android 9 (एपीआई लेवल 28) में लॉन्च की गई थी. Camera2 API में ये चीज़ें जोड़ी गई हैं:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig)—इससे यह पता चलता है कि पास किए गए सेशन कॉन्फ़िगरेशन का इस्तेमाल, कैमरा कैप्चर सेशन बनाने के लिए किया जा सकता है या नहीं.

  • LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID—इसकी मदद से, लॉजिकल कैमरा डिवाइस के साथ काम करने वाले फ़िज़िकल कैमरे का आईडी पता लगाया जा सकता है. बेहतर बैटरी लाइफ़ पाने के लिए, लौटाए गए आईडी का इस्तेमाल करके लॉजिकल स्ट्रीम और फ़िज़िकल सब-कैमरा स्ट्रीम का अनुरोध किया जा सकता है.

Accessibility services API

Android 10 में, सुलभता सेवा की ये नई सुविधाएं और एपीआई जोड़े गए हैं:

AccessibilityNodeInfo एंट्री पासकोड फ़्लैग

Android 10 में, isTextEntryKey() को कॉल करके यह पता लगाया जा सकता है कि दिया गया AccessibilityNodeInfo, कीबोर्ड या कीपैड का हिस्सा है या नहीं.

सुलभता से जुड़े डायलॉग बॉक्स में बोलकर जवाब देने की सुविधा

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

जेस्चर नेविगेशन की सुविधा चालू होने पर, सुलभता सुविधा का शॉर्टकट

Android 10 में जेस्चर नेविगेशन की सुविधा चालू होने पर, सुलभता बटन न तो दिखता है और न ही चुना जा सकता है. सुलभता सेवाओं का मेन्यू ऐक्सेस करने के लिए, उपयोगकर्ताओं को इनमें से कोई एक जेस्चर करना होगा:

  • दो उंगलियों से ऊपर की ओर स्वाइप करें.
  • दो उंगलियों से ऊपर की ओर स्वाइप करें और होल्ड करें.

फ़िज़िकल कीबोर्ड के लिए सुलभता शॉर्टकट

Android 10 में, उपयोगकर्ता Control+Alt+Z दबाकर, फ़िज़िकल कीबोर्ड पर सुलभता शॉर्टकट को ट्रिगर कर सकते हैं.

सॉफ़्ट कीबोर्ड कंट्रोलर को बेहतर बनाना

Android 10 में, सुलभता सेवाएं यह अनुरोध कर सकती हैं कि डिवाइस पर हार्ड कीबोर्ड अटैच होने पर भी, सॉफ़्ट कीबोर्ड दिखाया जाए. उपयोगकर्ता इस सेटिंग को बदल सकते हैं.

सुलभता से जुड़ी सुविधाओं के लिए, उपयोगकर्ता के तय किए गए टाइम आउट

Android 10 में getRecommendedTimeoutMillis() एपीआई को पेश किया गया है. इस तरीके से, इंटरैक्टिव और नॉन-इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, उपयोगकर्ता के तय किए गए टाइम आउट का इस्तेमाल किया जा सकता है. रिटर्न वैल्यू पर, उपयोगकर्ता की प्राथमिकताओं और सुलभता सेवा के एपीआई, दोनों का असर पड़ता है.

अपने-आप जानकारी भरने की सुविधा में सुधार

Android 10 में, जानकारी ऑटोमैटिक भरने की सेवा में ये सुधार किए गए हैं.

काम करने से जुड़े, अपने-आप भरने की सुविधा के अनुरोध

FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST फ़्लैग का इस्तेमाल करके यह पता लगाया जा सकता है कि ऑटोमैटिक भरने का अनुरोध, काम करने के तरीके के मोड की मदद से जनरेट किया गया था या नहीं.

उपयोगकर्ता नाम और पासवर्ड एक साथ सेव करना

SaveInfo.FLAG_DELAY_SAVE फ़्लैग का इस्तेमाल करके, उन मामलों में मदद की जा सकती है जहां कोई ऐप्लिकेशन उपयोगकर्ता नाम, पासवर्ड, और अन्य फ़ील्ड दिखाने के लिए कई गतिविधियों का इस्तेमाल करता है.

सेव करने के यूज़र इंटरफ़ेस (यूआई) के साथ उपयोगकर्ता का इंटरैक्शन

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

डेटासेट अपडेट करने से जुड़ी सहायता

ऑटोमैटिक भरने की सुविधा, मौजूदा पासवर्ड अपडेट कर सकती है. उदाहरण के लिए, अगर किसी उपयोगकर्ता ने पहले से ही कोई पासवर्ड सेव किया हुआ है और वह नया पासवर्ड सेव करता है, तो ऑटोमैटिक भरने की सुविधा, उपयोगकर्ता को नया पासवर्ड सेव करने के बजाय, मौजूदा पासवर्ड अपडेट करने के लिए कहती है.

फ़ील्ड के क्लासिफ़िकेशन से जुड़े सुधार

Android 10 में, फ़ील्ड क्लासिफ़िकेशन एपीआई में ये सुधार किए गए हैं.

UserData.Builder कंस्ट्रक्टर

Builder पैटर्न के साथ बेहतर तरीके से अलाइन करने के लिए, UserData.Builder कंस्ट्रक्टर बदल दिया गया है.

किसी वैल्यू को कई तरह के कैटगरी आईडी से मैप करने की अनुमति देना

Android 10 में UserData.Builder का इस्तेमाल करते समय, अब किसी वैल्यू को कई तरह के कैटगरी आईडी पर मैप किया जा सकता है. पिछली रिलीज़ में, अगर कोई वैल्यू एक से ज़्यादा बार जोड़ी जाती थी, तो एक अपवाद दिखता था.

क्रेडिट कार्ड नंबर के लिए बेहतर सहायता

फ़ील्ड की कैटगरी तय करने की सुविधा, अब चार अंकों के नंबर को क्रेडिट कार्ड नंबर के आखिरी चार अंकों के तौर पर पहचान सकती है.

ऐप्लिकेशन के हिसाब से फ़ील्ड का क्लासिफ़िकेशन करने की सुविधा

Android 10 में FillResponse.setUserData() जोड़ा गया है. इसकी मदद से, सेशन के दौरान ऐप्लिकेशन के हिसाब से उपयोगकर्ता का डेटा सेट किया जा सकता है. इससे, अपने-आप जानकारी भरने की सुविधा को ऐप्लिकेशन के हिसाब से कॉन्टेंट वाले फ़ील्ड के टाइप का पता लगाने में मदद मिलती है.

यूज़र इंटरफ़ेस (यूआई) और सिस्टम कंट्रोल

Android 10 में यूज़र इंटरफ़ेस को बेहतर बनाने के लिए ये बदलाव किए गए हैं:

JVMTI PopFrame कैप के साथ काम करता है

Android 10 में, Android JVMTI लागू करने के लिए, can_pop_frames की सुविधा जोड़ी गई है. डीबग करते समय, इस सुविधा की मदद से किसी ब्रेकपॉइंट पर फ़ंक्शन को रोकने के बाद, उसे फिर से चलाया जा सकता है. साथ ही, स्थानीय, वैश्विक या किसी फ़ंक्शन के लागू होने में बदलाव किया जा सकता है. ज़्यादा जानकारी के लिए, Oracle का पॉप फ़्रेम रेफ़रंस पेज देखें.

Surface control API

Android 10 में, सिस्टम-कंपोज़र (SurfaceFlinger) को कम लेवल पर ऐक्सेस करने के लिए, SurfaceControl एपीआई उपलब्ध कराया गया है. ज़्यादातर उपयोगकर्ताओं के लिए, कंपोज़र का फ़ायदा पाने का सही तरीका SurfaceView है. SurfaceControl एपीआई का इस्तेमाल कुछ मामलों में किया जा सकता है. उदाहरण के लिए:

  • कई प्लैटफ़ॉर्म को सिंक करना
  • अलग-अलग प्रोसेस में सर्फ़ेस एम्बेड करना
  • लाइफ़टाइम मैनेजमेंट का निचला लेवल

SurfaceControl एपीआई, SDK और NDK बाइंडिंग, दोनों में उपलब्ध है. एनडीके लागू करने में, एपीआई का इस्तेमाल करके, कंपोज़िटर के साथ बफ़र को मैन्युअल तरीके से एक्सचेंज किया जा सकता है. इससे उन उपयोगकर्ताओं को एक विकल्प मिलता है जिन्हें BufferQueue की सीमाओं का सामना करना पड़ रहा है.

वेबव्यू के रेंडरर के हंग होने का पता लगाना

Android 10 में, WebViewRenderProcessClient आब्स्ट्रैक्ट क्लास की सुविधा जोड़ी गई है. ऐप्लिकेशन इसका इस्तेमाल करके यह पता लगा सकते हैं कि WebView काम कर रहा है या नहीं. इस क्लास का इस्तेमाल करने के लिए:

  1. अपना सबक्लास तय करें और उसके onRenderProcessResponsive() और onRenderProcessUnresponsive() तरीके लागू करें.
  2. अपने WebViewRenderProcessClient का एक इंस्टेंस, एक या उससे ज़्यादा WebView ऑब्जेक्ट से अटैच करें.
  3. अगर WebView काम नहीं करता है, तो सिस्टम WebView और WebViewRenderProcess को पास करके, क्लाइंट के onRenderProcessUnresponsive() तरीके को कॉल करता है. (अगर WebView एक प्रोसेस है, तो WebViewRenderProcess पैरामीटर शून्य है.) आपका ऐप्लिकेशन ज़रूरी कार्रवाई कर सकता है. जैसे, उपयोगकर्ता को डायलॉग बॉक्स दिखाकर पूछना कि क्या उन्हें रेंडरिंग की प्रोसेस रोकनी है.

अगर WebView काम नहीं करता है, तो सिस्टम समय-समय पर onRenderProcessUnresponsive() को कॉल करता है (हर पांच सेकंड में एक बार से ज़्यादा नहीं). हालांकि, वह कोई और कार्रवाई नहीं करता. अगर WebView फिर से काम करने लगता है, तो सिस्टम onRenderProcessResponsive() को सिर्फ़ एक बार कॉल करता है.

सेटिंग पैनल

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

पहली इमेज. जब डिवाइस, नेटवर्क से कनेक्ट न होने पर उपयोगकर्ता कोई वेब पेज खोलने की कोशिश करता है. Chrome, इंटरनेट कनेक्शन सेटिंग पैनल को पॉप-अप करता है...

दूसरी इमेज. उपयोगकर्ता, Chrome ऐप्लिकेशन से बाहर निकले बिना वाई-फ़ाई चालू कर सकता है और कोई नेटवर्क चुन सकता है.

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

सेटिंग पैनल दिखाने के लिए, इनमें से किसी एक Settings.Panel कार्रवाई के साथ इंटेंट ट्रिगर करें:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type इनमें से कोई एक हो सकता है:

ACTION_INTERNET_CONNECTIVITY
इंटरनेट कनेक्शन से जुड़ी सेटिंग दिखाता है. जैसे, हवाई जहाज़ मोड, वाई-फ़ाई, और मोबाइल डेटा.
ACTION_WIFI
यह वाई-फ़ाई सेटिंग दिखाता है, लेकिन कनेक्टिविटी की अन्य सेटिंग नहीं दिखाता. यह उन ऐप्लिकेशन के लिए मददगार है जिन्हें ज़्यादा डेटा अपलोड या डाउनलोड करने के लिए, वाई-फ़ाई कनेक्शन की ज़रूरत होती है.
ACTION_NFC
नियर फ़ील्ड कम्यूनिकेशन (एनएफ़सी) से जुड़ी सभी सेटिंग दिखाता है.
ACTION_VOLUME
यह सभी ऑडियो स्ट्रीम के लिए वॉल्यूम की सेटिंग दिखाता है.

शेयर करने की सुविधा में सुधार

Android 10 में, शेयर करने की सुविधा को बेहतर बनाने के लिए कई सुधार किए गए हैं:

Sharing Shortcuts API

शेयर करने के शॉर्टकट एपीआई, डायरेक्ट शेयर करने वाले एपीआई की जगह लेता है.

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

डायरेक्ट शेयर करने की पुरानी सुविधा अब भी काम करती है. हालांकि, इसका इस्तेमाल करने वाले ऐप्लिकेशन को, शेयर करने के लिए शॉर्टकट एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन के मुकाबले कम प्राथमिकता दी जाती है.

ShortcutInfo.Builder शेयर टारगेट के बारे में ज़्यादा जानकारी देने के लिए, नए तरीके जोड़ता है और मौजूदा तरीकों को बेहतर बनाता है.

डायरेक्ट शेयर टारगेट

डाइनैमिक शॉर्टकट को डायरेक्ट शेयर टारगेट के तौर पर पब्लिश किया जा सकता है. सीधे शेयर टारगेट पब्लिश करें देखें.

ShortcutManagerCompat एक नया AndroidX एपीआई है. यह पुराने DirectShare API के साथ काम करता है. शेयरिंग टारगेट पब्लिश करने का यह सबसे सही तरीका है.

टेक्स्ट की झलक देखना

जब कोई ऐप्लिकेशन टेक्स्ट कॉन्टेंट शेयर करता है, तो वह शेयरशीट के यूज़र इंटरफ़ेस (यूआई) में कॉन्टेंट की झलक दिखा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

रिच टेक्स्ट की झलक जोड़ना लेख पढ़ें

ज़्यादा जानें

ऐप्लिकेशन, डेटा कैसे शेयर कर सकते हैं, इस बारे में ज़्यादा जानने के लिए, दूसरे ऐप्लिकेशन को आसान डेटा भेजना और दूसरे ऐप्लिकेशन से आसान डेटा पाना लेख पढ़ें

गहरे रंग वाली थीम

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

फ़ोरग्राउंड सेवा के टाइप

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

नीचे दी गई टेबल में, फ़ोरग्राउंड सेवा के अलग-अलग टाइप और उन सेवाओं के बारे में बताया गया है जिनके लिए किसी खास टाइप का एलान करना सही होता है:

फ़ोरग्राउंड सेवा का टाइप ऐसी सेवा के इस्तेमाल का उदाहरण जिसके लिए इस टाइप का एलान करना चाहिए
connectedDevice पहने जाने वाले फ़िटनेस ट्रैकर पर नज़र रखना
dataSync नेटवर्क से फ़ाइलें डाउनलोड करना
location उपयोगकर्ता की शुरू की गई कार्रवाई को जारी रखना
mediaPlayback ऑडियो बुक, पॉडकास्ट या संगीत चलाना
mediaProjection डिवाइस के डिसप्ले को कुछ समय के लिए रिकॉर्ड करना
phoneCall चल रहे फ़ोन कॉल को मैनेज करना

Kotlin

Android 10 में, Kotlin डेवलपमेंट के लिए ये अपडेट शामिल हैं.

libcore API के लिए, शून्य होने की जानकारी देने वाले एनोटेशन

Android 10 में, libcore APIs के लिए SDK टूल में, वैल्यू न होने की जानकारी देने वाले एनोटेशन की कवरेज को बेहतर बनाया गया है. इन एनोटेशन की मदद से, ऐप्लिकेशन डेवलपर को इन एपीआई के साथ इंटरैक्ट करते समय, वैल्यू के शून्य होने की जानकारी मिलती है. इसके लिए, वे Android Studio में Kotlin या Java के नलबिलिटी विश्लेषण का इस्तेमाल करते हैं.

आम तौर पर, Kotlin में वैल्यू न होने की शर्त के उल्लंघन की वजह से, कोड को कंपाइल करने में गड़बड़ियां होती हैं. आपके मौजूदा कोड के साथ काम करने के लिए, सिर्फ़ @RecentlyNullable और @RecentlyNonNull एनोटेशन जोड़े जाते हैं. इसका मतलब है कि वैल्यू न होने की शर्त का उल्लंघन होने पर, गड़बड़ियों के बजाय चेतावनियां मिलती हैं.

इसके अलावा, Android 9 में जोड़े गए @RecentlyNullable या @RecentlyNonNull एनोटेशन, क्रमशः @Nullable और @NonNull में बदल जाएंगे. इसका मतलब है कि Android 10 और उसके बाद के वर्शन में, वैल्यू न होने की शर्त के उल्लंघन की वजह से, चेतावनियों के बजाय गड़बड़ियां दिखती हैं.

एनोटेशन में हुए बदलावों के बारे में ज़्यादा जानने के लिए, Android Developers Blog पर Android Pie SDK अब Kotlin के साथ ज़्यादा काम करता है लेख पढ़ें.

एनडीके

Android 10 में, NDK में ये बदलाव किए गए हैं.

फ़ाइल डिस्क्रिप्टर के मालिकाना हक की डीबगिंग को बेहतर बनाया गया

Android 10 में fdsan जोड़ा गया है. इससे, फ़ाइल डिस्क्रिप्टर के मालिकाना हक से जुड़ी समस्याओं को आसानी से ढूंढा और ठीक किया जा सकता है.

फ़ाइल डिस्क्रिप्टर के मालिकाना हक को गलत तरीके से मैनेज करने से जुड़ी गड़बड़ियां, बंद करने के बाद इस्तेमाल करना और दो बार बंद करना के तौर पर दिखती हैं. ये गड़बड़ियां, मेमोरी ऐलोकेशन से जुड़ी खाली करने के बाद इस्तेमाल करना और दो बार खाली करना गड़बड़ियों से मिलती-जुलती हैं. हालांकि, इनका पता लगाना और ठीक करना ज़्यादा मुश्किल होता है. fdsan, फ़ाइल डिस्क्रिप्टर के मालिकाना हक को लागू करके, फ़ाइल डिस्क्रिप्टर के गलत तरीके से मैनेज होने का पता लगाने और/या उसे रोकने की कोशिश करता है.

इन समस्याओं से जुड़े क्रैश के बारे में ज़्यादा जानकारी के लिए, fdsan की ओर से मिली गड़बड़ी देखें. fdsan के बारे में ज़्यादा जानकारी के लिए, fdsan पर Googlesource पेज देखें.

ELF TLS

कम से कम एपीआई लेवल 29 वाले एनडीके का इस्तेमाल करके बनाए गए ऐप्लिकेशन, emutls के बजाय ELF TLS का इस्तेमाल कर सकते हैं. थ्रेड-लोकल वैरिएबल को मैनेज करने के इस तरीके के साथ काम करने के लिए, डाइनैमिक और स्टैटिक लिंकर की सुविधा जोड़ी गई है.

एपीआई लेवल 28 और उससे पहले के वर्शन के लिए बनाए गए ऐप्लिकेशन में, libgcc/compiler-rt के लिए सुधार लागू किए गए हैं, ताकि emutls की कुछ समस्याओं को हल किया जा सके.

ज़्यादा जानकारी के लिए, NDK डेवलपर के लिए Android में हुए बदलाव लेख पढ़ें.

रनटाइम

Android 10 में, रनटाइम से जुड़ा यह बदलाव शामिल है.

Mallinfo के आधार पर गार्बेज कलेक्शन ट्रिगर करना

जब छोटे प्लैटफ़ॉर्म Java ऑब्जेक्ट, C++ ढेर में मौजूद बड़े ऑब्जेक्ट का रेफ़रंस देते हैं, तो C++ ऑब्जेक्ट को अक्सर तब ही वापस पाया जा सकता है, जब Java ऑब्जेक्ट इकट्ठा किया जाता है और उदाहरण के लिए, उसे फ़ाइनल किया जाता है. पिछली रिलीज़ में, प्लैटफ़ॉर्म ने Java ऑब्जेक्ट से जुड़े कई C++ ऑब्जेक्ट के साइज़ का अनुमान लगाया था. यह अनुमान हमेशा सटीक नहीं होता था. साथ ही, कभी-कभी मेमोरी का इस्तेमाल बहुत ज़्यादा हो जाता था, क्योंकि प्लैटफ़ॉर्म सही समय पर ग़ैर-ज़रूरी डेटा को हटा नहीं पाता था.

Android 10 में, गै़रबेज कलेक्टर (GC) सिस्टम malloc() से एलोकेट किए गए ढेर के कुल साइज़ को ट्रैक करता है. इससे यह पक्का होता है कि GC को ट्रिगर करने वाली गिनती में, malloc() के बड़े एलोकेशन हमेशा शामिल हों. जिन ऐप्लिकेशन में Java के साथ बड़ी संख्या में C++ एलोकेशन का इस्तेमाल किया जाता है उनमें, ग़ैर-ज़रूरी डेटा इकट्ठा करने की फ़्रीक्वेंसी बढ़ सकती है. अन्य ऐप्लिकेशन में थोड़ी कमी दिख सकती है.

जांच करना और डीबग करना

Android 10 में, टेस्टिंग और डीबगिंग के लिए ये सुधार किए गए हैं.

डिवाइस पर सिस्टम ट्रैकिंग की सुविधा को बेहतर बनाया गया

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

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

Android 10 और उसके बाद के वर्शन में, ट्रेस फ़ाइलें ऐसे फ़ॉर्मैट में सेव की जाती हैं जिन्हें Perfetto की मदद से खोला जा सकता है. यह परफ़ॉर्मेंस इंस्ट्रूमेंटेशन और ट्रेसिंग के लिए, ओपन-सोर्स प्रोजेक्ट है. Perfetto ट्रैक फ़ाइलों को Systrace फ़ॉर्मैट में बदला जा सकता है.

TextClassifier में हुए सुधार

Android 10 में, TextClassifier इंटरफ़ेस में टेक्स्ट की कैटगरी तय करने की अतिरिक्त सुविधाएं मिलती हैं.

अपने-आप भाषा पहचानने की सुविधा

detectLanguage() वाला तरीका, कैटगरी तय करने के पहले से मौजूद तरीकों की तरह ही काम करता है. यह एक TextLanguage.Request ऑब्जेक्ट लेता है और TextLanguage ऑब्जेक्ट दिखाता है.

TextLanguage ऑब्जेक्ट में, क्रम से लगाए गए पेयर की सूची होती है. हर जोड़े में, भाषा और कैटगरी के लिए उससे जुड़ा कॉन्फ़िडेंस स्कोर होता है.

बातचीत में की जाने वाली कार्रवाइयों के सुझाव

suggestConversationActions() का यह तरीका, कैटगरी तय करने के मौजूदा तरीकों की तरह ही काम करता है. इसमें एक ConversationActions.Request ऑब्जेक्ट डाला जाता है और एक ConversationActions ऑब्जेक्ट मिलता है.

ConversationActions ऑब्जेक्ट में, ConversationAction ऑब्जेक्ट की सूची होती है. हर ConversationAction ऑब्जेक्ट में, सुझाई गई संभावित कार्रवाई और उसके भरोसे के आधार पर दिया गया स्कोर शामिल होता है.

सूचनाओं में स्मार्ट जवाब/कार्रवाइयां

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

इन जवाबों को जनरेट करने के लिए इस्तेमाल किया गया एपीआई, TextClassifier का हिस्सा है. साथ ही, Android 10 में डेवलपर को सीधे तौर पर भी इसका ऐक्सेस दिया गया है. ज़्यादा जानकारी के लिए, कृपया TextClassifier में हुए सुधारों के बारे में सेक्शन पढ़ें.

अगर आपका ऐप्लिकेशन अपने-आप सुझाव देता है, तो प्लैटफ़ॉर्म अपने-आप कोई सुझाव जनरेट नहीं करता. अगर आपको अपने ऐप्लिकेशन की सूचनाओं में, सुझाए गए जवाब या कार्रवाइयां नहीं देखनी हैं, तो setAllowGeneratedReplies() और setAllowSystemGeneratedContextualActions() का इस्तेमाल करके, सिस्टम से जनरेट किए गए जवाबों और कार्रवाइयों से ऑप्ट आउट किया जा सकता है.