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 सुरक्षा सेवा देने वाली कंपनी में TLS फ़ंक्शन के लिए एक सार्वजनिक एपीआई शामिल है.
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 हार्डवेयर जैसे सेकंडरी डिवाइसों के लिए बूटस्ट्रैपिंग कॉन्फ़िगरेशन.
ज़्यादा जानकारी के लिए, पीयर-टू-पीयर कनेक्टिविटी के लिए Wi-Fi Network Request API देखें.
वाई-फ़ाई नेटवर्क के सुझाव देने वाला एपीआई
Android 10 में, आपके ऐप्लिकेशन के लिए यह सुविधा जोड़ी गई है कि वह उपयोगकर्ता को वाई-फ़ाई ऐक्सेस पॉइंट से कनेक्ट करने के लिए कहे. आपके पास यह सुझाव देने का विकल्प होता है कि किस नेटवर्क से कनेक्ट किया जाए. प्लैटफ़ॉर्म, आपके और अन्य ऐप्लिकेशन से मिले इनपुट के आधार पर यह तय करेगा कि किस ऐक्सेस पॉइंट को स्वीकार करना है.
इस सुविधा के बारे में ज़्यादा जानने के लिए, वाई-फ़ाई का सुझाव देने की सुविधा लेख पढ़ें.
वाई-फ़ाई के हाई-परफ़ॉर्मेंस और लो-लेटेंसी मोड में सुधार
Android 10 में, आपको मॉडम को एक हिंट देने की सुविधा मिलती है, ताकि वह कम से कम समय में काम कर सके.
Android 10 में, वाई-फ़ाई लॉक एपीआई को बेहतर बनाया गया है. इससे हाई-परफ़ॉर्मेंस मोड और कम समय में डेटा ट्रांसफ़र करने वाले मोड को बेहतर तरीके से सपोर्ट किया जा सकता है. हाई-परफ़ॉर्मेंस और लो-लेटेंसी मोड के लिए, वाई-फ़ाई की बैटरी बचाने की सुविधा बंद कर दी जाती है. साथ ही, लो-लेटेंसी मोड में लेटेंसी को और ऑप्टिमाइज़ किया जा सकता है. यह मॉडम के साथ काम करने की सुविधा पर निर्भर करता है.
लो-लेटेंसी मोड सिर्फ़ तब चालू होता है, जब लॉक करने वाला ऐप्लिकेशन फ़ोरग्राउंड में चल रहा हो और स्क्रीन चालू हो. लो-लेटेंसी मोड, खास तौर पर रीयल-टाइम में मोबाइल गेमिंग ऐप्लिकेशन के लिए मददगार होता है.
डीएनएस रिज़ॉल्वर में खास लुकअप
Android 10 में, खास डीएनएस लुकअप के लिए नेटिव सपोर्ट जोड़ा गया है. इसमें क्लियरटेक्स्ट लुकअप और डीएनएस-ओवर-टीएलएस मोड, दोनों का इस्तेमाल किया जा सकता है. पहले, प्लैटफ़ॉर्म के डीएनएस रिज़ॉल्वर सिर्फ़ A और AAAA रिकॉर्ड के साथ काम करते थे. इनकी मदद से, किसी नाम से जुड़े सिर्फ़ आईपी पतों को ढूंढा जा सकता था. हालांकि, ये किसी अन्य रिकॉर्ड टाइप के साथ काम नहीं करते थे.
DnsResolver एपीआई, सामान्य और एसिंक्रोनस रिज़ॉल्यूशन उपलब्ध कराता है. इससे SRV, NAPTR, और अन्य रिकॉर्ड टाइप देखे जा सकते हैं. ध्यान दें कि जवाब को पार्स करने का काम ऐप्लिकेशन को करना होता है.
एनडीके पर आधारित ऐप्लिकेशन के लिए, android_res_nsend देखें.
Wi-Fi Easy Connect
Android 10 में, WPS की जगह Easy Connect का इस्तेमाल किया जा सकता है. इससे किसी दूसरे डिवाइस पर वाई-फ़ाई क्रेडेंशियल उपलब्ध कराए जा सकते हैं.
ऐप्लिकेशन, ACTION_PROCESS_WIFI_EASY_CONNECT_URI इंटेंट का इस्तेमाल करके, Easy Connect को अपने सेटअप और प्रोविज़निंग फ़्लो में इंटिग्रेट कर सकते हैं.
इस सुविधा के बारे में ज़्यादा जानने के लिए, वाई-फ़ाई ईज़ी कनेक्ट लेख पढ़ें.
Wi-Fi Direct connection API
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);
ब्लूटूथ एलई कनेक्शन ओरिएंटेड चैनल (सीओसी)
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 में, फ़ील्ड क्लासिफ़िकेशन एपीआई में ये सुधार किए गए हैं.
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 का पॉप फ़्रेम रेफ़रंस पेज देखें.
Surface control API
Android 10 में, सिस्टम-कंपोज़िटर (SurfaceFlinger) को लो-लेवल पर ऐक्सेस करने के लिए SurfaceControl एपीआई उपलब्ध है. ज़्यादातर उपयोगकर्ताओं के लिए, कंपोज़िटर का फ़ायदा पाने का सही तरीका SurfaceView है. SurfaceControl एपीआई कुछ मामलों में काम आ सकता है. जैसे:
- कई प्लैटफ़ॉर्म पर सिंक करने की सुविधा
- क्रॉस-प्रोसेस सर्फ़ेस एम्बेडिंग
- लाइफ़टाइम मैनेजमेंट के निचले लेवल की सुविधा
SurfaceControl एपीआई, SDK और NDK बाइंडिंग, दोनों में उपलब्ध है.
एनडीके को लागू करने में, कंपोज़िटर के साथ बफ़र को मैन्युअल तरीके से बदलने के लिए एक एपीआई शामिल होता है. यह उन उपयोगकर्ताओं के लिए एक विकल्प है जो BufferQueue की सीमाओं का सामना कर रहे हैं.
WebView में रेंडरर के रुकने की समस्या का पता लगाना
Android 10 में WebViewRenderProcessClient ऐब्स्ट्रैक्ट क्लास पेश की गई है. ऐप्लिकेशन इसका इस्तेमाल करके यह पता लगा सकते हैं कि WebView काम नहीं कर रहा है या नहीं. इस क्लास का इस्तेमाल करने के लिए:
- अपनी सबक्लास तय करें और उसके
onRenderProcessResponsive()औरonRenderProcessUnresponsive()तरीकों को लागू करें. - अपने
WebViewRenderProcessClientका एक इंस्टेंस, एक या उससे ज़्यादाWebViewऑब्जेक्ट से अटैच करें. - अगर
WebViewजवाब नहीं देता है, तो सिस्टम क्लाइंट केonRenderProcessUnresponsive()तरीके को कॉल करता है. साथ ही,WebViewऔरWebViewRenderProcessको पास करता है. (अगरWebViewसिंगल-प्रोसेस है, तोWebViewRenderProcessपैरामीटर की वैल्यू शून्य होती है.) आपका ऐप्लिकेशन ज़रूरी कार्रवाई कर सकता है. जैसे, उपयोगकर्ता को एक डायलॉग बॉक्स दिखाना. इसमें पूछा जाएगा कि क्या वे रेंडरिंग प्रोसेस को रोकना चाहते हैं.
अगर WebView से कोई जवाब नहीं मिलता है, तो सिस्टम समय-समय पर onRenderProcessUnresponsive() को कॉल करता है. हालांकि, यह हर पांच सेकंड में एक बार से ज़्यादा नहीं होता. इसके अलावा, सिस्टम कोई और कार्रवाई नहीं करता.
अगर WebView फिर से काम करने लगता है, तो सिस्टम onRenderProcessResponsive() को सिर्फ़ एक बार कॉल करता है.
सेटिंग पैनल
Android 10 में सेटिंग पैनल की सुविधा जोड़ी गई है. यह एक एपीआई है, जिसकी मदद से ऐप्लिकेशन, उपयोगकर्ताओं को अपने ऐप्लिकेशन के संदर्भ में सेटिंग दिखा सकते हैं. इससे उपयोगकर्ताओं को ऐप्लिकेशन इस्तेमाल करने के लिए, सेटिंग में जाकर एनएफ़सी या मोबाइल डेटा जैसी सेटिंग बदलने की ज़रूरत नहीं पड़ती.
उदाहरण के लिए, मान लें कि किसी उपयोगकर्ता ने अपने डिवाइस को फ़्लाइट मोड में रखा है और वह वेब ब्राउज़र खोलता है. 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 के साथ काम करता है. शेयर टारगेट पब्लिश करने का यह सबसे अच्छा तरीका है.
टेक्स्ट की झलक देखना
जब कोई ऐप्लिकेशन टेक्स्ट कॉन्टेंट शेयर करता है, तो वह Sharesheet के यूज़र इंटरफ़ेस (यूआई) में कॉन्टेंट की झलक दिखा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
रिच टेक्स्ट की झलक जोड़ने के बारे में जानकारी देखें
ज़्यादा जानें
ऐप्लिकेशन किस तरह डेटा शेयर कर सकते हैं, इस बारे में ज़्यादा जानने के लिए, दूसरे ऐप्लिकेशन को आसान डेटा भेजना और दूसरे ऐप्लिकेशन से आसान डेटा पाना लेख पढ़ें
गहरे रंग वाली थीम
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 Developers Blog पर Android Pie SDK अब Kotlin के साथ ज़्यादा आसानी से काम करता है लेख पढ़ें.
NDK
Android 10 में, NDK में ये बदलाव किए गए हैं.
फ़ाइल डिस्क्रिप्टर के मालिकाना हक की डीबगिंग को बेहतर बनाया गया है
Android 10 में fdsan जोड़ा गया है. इससे फ़ाइल डिस्क्रिप्टर के मालिकाना हक से जुड़ी समस्याओं को आसानी से ढूंढने और ठीक करने में मदद मिलती है.
फ़ाइल डिस्क्रिप्टर के मालिकाना हक को गलत तरीके से मैनेज करने से जुड़ी गड़बड़ियां, बंद होने के बाद इस्तेमाल करना और दो बार बंद करना के तौर पर दिखती हैं. ये गड़बड़ियां, मेमोरी के लिए जगह तय करने से जुड़ी इस्तेमाल के बाद खाली करना और दो बार खाली करना गड़बड़ियों की तरह होती हैं. हालांकि, इनका पता लगाना और इन्हें ठीक करना ज़्यादा मुश्किल होता है. fdsan, फ़ाइल डिस्क्रिप्टर के मालिकाना हक को लागू करके, फ़ाइल डिस्क्रिप्टर को गलत तरीके से मैनेज करने की गड़बड़ियों का पता लगाने और/या उन्हें रोकने की कोशिश करता है.
इन समस्याओं से जुड़े क्रैश के बारे में ज़्यादा जानने के लिए, fdsan ने गड़बड़ी का पता लगाया लेख पढ़ें. fdsan के बारे में ज़्यादा जानकारी के लिए, fdsan के बारे में जानकारी देने वाला Googlesource पेज देखें.
ईएलएफ़ टीएलएस
एनडीके का इस्तेमाल करके बनाए गए ऐप्लिकेशन, emutls के बजाय ईएलएफ़ टीएलएस का इस्तेमाल कर सकते हैं. इसके लिए, ऐप्लिकेशन में कम से कम एपीआई लेवल 29 होना चाहिए. थ्रेड-लोकल वैरिएबल को मैनेज करने के इस तरीके के साथ काम करने के लिए, डाइनैमिक और स्टैटिक लिंकर का सपोर्ट जोड़ा गया है.
एपीआई लेवल 28 और इससे पहले के वर्शन के लिए बनाए गए ऐप्लिकेशन में, libgcc/compiler-rt से जुड़ी कुछ emutls समस्याओं को ठीक करने के लिए सुधार किए गए हैं.
ज़्यादा जानकारी के लिए, NDK डेवलपर के लिए Android में हुए बदलाव लेख पढ़ें.
रनटाइम
Android 10 में, रनटाइम में होने वाला यह बदलाव शामिल है.
Mallinfo के आधार पर गार्बेज कलेक्शन ट्रिगर करना
जब छोटे प्लैटफ़ॉर्म Java ऑब्जेक्ट, C++ हीप में मौजूद बड़े ऑब्जेक्ट को रेफ़रंस करते हैं, तो C++ ऑब्जेक्ट को अक्सर तब ही वापस पाया जा सकता है, जब Java ऑब्जेक्ट को इकट्ठा किया जाता है. उदाहरण के लिए, फ़ाइनल किया जाता है. पिछले वर्शन में, प्लैटफ़ॉर्म ने Java ऑब्जेक्ट से जुड़े कई C++ ऑब्जेक्ट के साइज़ का अनुमान लगाया था. यह अनुमान हमेशा सटीक नहीं होता था. साथ ही, कभी-कभी इससे मेमोरी का इस्तेमाल बहुत ज़्यादा बढ़ जाता था. ऐसा इसलिए होता था, क्योंकि प्लैटफ़ॉर्म को जब गार्बेज इकट्ठा करना चाहिए था तब वह ऐसा नहीं कर पाता था.
Android 10 में, गार्बेज कलेक्टर (GC), सिस्टम malloc() की ओर से असाइन किए गए हीप के कुल साइज़ को ट्रैक करता है. इससे यह पक्का होता है कि बड़े malloc() असाइनमेंट को हमेशा GC-ट्रिगर करने वाले कैलकुलेशन में शामिल किया जाता है. 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() का इस्तेमाल करें.