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

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

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

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

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

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

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

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

APK से सीधे तौर पर एम्बेड किए गए DEX कोड को चलाएं

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

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

TLS 1.3 के साथ काम करता है

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

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

Public Conscrypt API

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

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

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

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

Wi-Fi network connection API

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

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

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

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

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

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

Android 10 में, आपको मॉडम को एक हिंट देने की सुविधा मिलती है, ताकि वह कम से कम समय में काम कर सके.

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

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

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

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

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

वाई-फ़ाई ईज़ी कनेक्ट

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

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

Wi-Fi Direct connection API

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

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

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);

ब्लूटूथ स्मार्ट कनेक्शन ओरिएंटेड चैनल (सीओसी)

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 में स्कोप की गई स्टोरेज की सुविधा के साथ-साथ, बाहरी स्टोरेज से जुड़ी ये सुविधाएं भी जोड़ी गई हैं:

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

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

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

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

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

ऑडियो प्लेबैक कैप्चर करने की सुविधा

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

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

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

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

Native MIDI API

Android Native MIDI API (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 CFA के एन्यूमरेशन की सुविधा जोड़ी गई है. इससे सामान्य मोनोक्रोम कैमरे और नियर इंफ़्रारेड कैमरों के बीच अंतर किया जा सकता है.

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

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

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

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

High Efficiency Image File format

हाई एफ़िशियंसी इमेज फ़ाइल (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 में, Field Classification API में ये सुधार किए गए हैं.

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

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

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

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

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

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

ऐप्लिकेशन के हिसाब से फ़ील्ड को कैटगरी में बांटने की सुविधा

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

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

Android 10 में, यूज़र इंटरफ़ेस से जुड़े ये सुधार किए गए हैं:

JVMTI PopFrame कैप्स के लिए सहायता

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

Surface Control API

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

  • एक से ज़्यादा प्लैटफ़ॉर्म पर सिंक करने की सुविधा
  • क्रॉस-प्रोसेस सर्फ़ेस एम्बेडिंग
  • लाइफ़टाइम मैनेजमेंट के लिए कम लेवल की सेटिंग

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

WebView में रेंडरर के रुकने की समस्या का पता लगाना

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

  1. अपनी सबक्लास तय करें और उसके onRenderProcessResponsive() और onRenderProcessUnresponsive() तरीकों को लागू करें.
  2. अपने WebViewRenderProcessClient के इंस्टेंस को एक या उससे ज़्यादा WebView ऑब्जेक्ट से अटैच करें.
  3. अगर WebView काम नहीं करता है, तो सिस्टम क्लाइंट के onRenderProcessUnresponsive() तरीके को कॉल करता है. साथ ही, WebView और WebViewRenderProcess को पास करता है. (अगर 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

Sharing Shortcuts API, Direct Share APIs की जगह लेगा.

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

शेयर करने की सुविधा का पुराना तरीका अब भी काम करता है. हालांकि, इसका इस्तेमाल करने वाले ऐप्लिकेशन को, Sharing Shortcuts API का इस्तेमाल करने वाले ऐप्लिकेशन की तुलना में कम प्राथमिकता मिलती है.

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

सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोग या ग्रुप

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

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

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

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

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

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

एनडीके (NDK)

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

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

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

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

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

ईएलएफ़ टीएलएस

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

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

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

रनटाइम

Android 10 में, रनटाइम में होने वाला यह बदलाव शामिल है.

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

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

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

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

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() का इस्तेमाल करें.