Android 8.0 (एपीआई लेवल 26) में, कई तरह के उपयोगकर्ताओं और डेवलपर के लिए नई सुविधाएं और क्षमताएं. इस दस्तावेज़ में, डेवलपर के लिए नई सुविधाओं के बारे में बताया गया है.
Android 8.0 के काम करने के तरीके में हुए बदलाव देखना न भूलें. इससे आपको उन चीज़ों के बारे में पता चलेगा जिन पर प्लैटफ़ॉर्म में हुए बदलावों का असर आपके ऐप्लिकेशन पर पड़ सकता है.
उपयोगकर्ता अनुभव
पिक्चर में पिक्चर मोड
Android 8.0 में पिक्चर में पिक्चर की सुविधा.
Android 8.0 (एपीआई लेवल 26) में, गतिविधियों को लॉन्च किया जा सकता है पिक्चर में पिक्चर (पीआईपी) मोड. पिन किए गए वीडियो का मोड, कई विंडो वाले मोड का एक खास टाइप है. इसका इस्तेमाल ज़्यादातर वीडियो चलाने के लिए किया जाता है. PIP मोड मूल रूप से इसके लिए उपलब्ध था सिर्फ़ Android TV के लिए; Android 8.0, इस सुविधा को दूसरे Android डिवाइसों पर.
जब कोई गतिविधि पीआईपी मोड में होती है, तो वह रोकी गई स्थिति में होती है. हालांकि, इसे
सामग्री दिखाना जारी रखें. इस वजह से, आपको यह पक्का करना चाहिए कि
अपने onPause()
में प्लेबैक को नहीं रोकता है
हैंडलर. इसके बजाय, आपको onStop()
में वीडियो को रोकना चाहिए और onStart()
में फिर से वीडियो चलाना चाहिए. ज़्यादा जानकारी के लिए,
मल्टी-विंडो
लाइफ़साइकल देखें.
यह बताने के लिए कि आपकी गतिविधि पीआईपी मोड का इस्तेमाल कर सकती है,
मेनिफ़ेस्ट में android:supportsPictureInPicture
को सही पर सेट करें.
(Android 8.0 से शुरू होने वाले, PIP के लिए
android:resizeableActivity
मेनिफ़ेस्ट एट्रिब्यूट.
हालांकि, अगर आपकी गतिविधि में मल्टी-विंडो मोड के अन्य मोड काम करते हैं, तो आपको android:resizeableActivity
को 'सही' पर सेट करना होगा.)
Android 8.0 (एपीआई लेवल 26) में एक नया ऑब्जेक्ट, PictureInPictureParams
,
इसे पीआईपी (पिक्चर में पिक्चर) तरीकों में पास किया जाता है, ताकि यह बताया जा सके कि किसी गतिविधि को कैसे काम करना चाहिए
जब यह पीआईपी मोड में होता है. इस ऑब्जेक्ट में, गतिविधि के पसंदीदा आसपेक्ट रेशियो जैसी प्रॉपर्टी की जानकारी होती है.
इसमें बताई गई मौजूदा पीआईपी तरीकों की जानकारी जोड़ना पिक्चर में पिक्चर मोड को अब Android TV पर ही नहीं, बल्कि सभी Android डिवाइसों पर इस्तेमाल किया जाता है. इसके अलावा, Android 8.0, Android 8.0 इस्तेमाल करने के लिए ये तरीके उपलब्ध कराता है पीआईपी मोड:
Activity.enterPictureInPictureMode(PictureInPictureParams args)
: गतिविधि को पिक्चर में पिक्चर मोड में डालता है. गतिविधि का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) और अन्य कॉन्फ़िगरेशन सेटिंग, args तय करता है. अगर कोई फ़ील्ड args में खाली हैं, तो सिस्टम उन वैल्यू का इस्तेमाल करता है जो आपने पिछली बार सेट किए थेActivity.setPictureInPictureParams()
नाम का इस्तेमाल करें.बताई गई गतिविधि को स्क्रीन के कोने में रखा गया है; बाकी स्क्रीन पर, स्क्रीन पर की गई पिछली गतिविधि की जानकारी मौजूद होगी. पीआईपी मोड में जाने वाली गतिविधि, रुकी हुई स्थिति में चलती रहती है, लेकिन फिर भी शुरू रहती है. अगर उपयोगकर्ता पीआईपी गतिविधि पर टैप करता है, तो सिस्टम एक मेन्यू दिखाता है, ताकि उपयोगकर्ता उससे इंटरैक्ट कर सके. पीआईपी मोड में होने पर, गतिविधि पर कोई टच इवेंट नहीं पहुंचता.
-
Activity.setPictureInPictureParams()
: किसी गतिविधि की पीआईपी कॉन्फ़िगरेशन सेटिंग को अपडेट करता है. अगर गतिविधि फ़िलहाल, पीआईपी मोड में सेटिंग अपडेट की गई हैं; यह तब काम आता है, जब गतिविधि का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदल जाता है. अगर गतिविधि पीआईपी मोड में नहीं है, इन कॉन्फ़िगरेशन सेटिंग का इस्तेमाल, चाहे आपकी वेबसाइट पर कॉल करने काenterPictureInPictureMode()
तरीका.
सूचनाएं
हमने Android 8.0 (एपीआई लेवल 26) में, सूचनाओं को फिर से डिज़ाइन किया है, ताकि आपके लिए सूचनाओं के व्यवहार और सेटिंग को मैनेज करना आसान हो. इन बदलावों में ये शामिल हैं:
- सूचना चैनल: Android 8.0 में, सूचना चैनल की सुविधा जोड़ी गई है. इसकी मदद से, आपको हर तरह की सूचना के लिए उपयोगकर्ता के हिसाब से चैनल बनाने की सुविधा मिलती है. यूज़र इंटरफ़ेस में चैनलों को सूचना की कैटगरी के तौर पर अपडेट करने की सुविधा मिलती है. इसका तरीका जानने के लिए सूचना के चैनल लागू करने के लिए, यहां देखें मैनेजिंग सूचना के चैनल.
- सूचनाएं बताने वाले डॉट: Android 8.0 पेश करता है स्क्रीन को दिखाने की सुविधा बिंदु या बैज दिखाई देते हैं. सूचना बिंदु, उन सूचनाओं की मौजूदगी को दिखाते हैं जिन्हें उपयोगकर्ता ने अब तक खारिज नहीं किया है या जिन पर कार्रवाई नहीं की है. नई सूचनाएं बताने वाले डॉट के साथ काम करने का तरीका जानने के लिए, देखें सूचना बैज.
- स्नूज़ करना: उपयोगकर्ता, सूचनाओं को स्नूज़ कर सकते हैं, जिससे वे गायब हो जाती हैं कुछ समय के लिए दिखेगा. इसके साथ सूचनाएं फिर से दिखने लगती हैं उसी स्तर की अहमियत है जिसके साथ वे सबसे पहले दिखते थे. ऐप्लिकेशन हटा सकते हैं या अपडेट कर सकते हैं स्नूज़ की गई सूचना, लेकिन स्नूज़ की गई सूचना को अपडेट करने से सकता है.
- सूचना के टाइम आउट:
setTimeoutAfter()
का इस्तेमाल करके सूचना बनाते समय, टाइम आउट सेट किया जा सकता है. इस तरीके का इस्तेमाल करके, यह तय किया जा सकता है कि सूचना को कितने समय के बाद रद्द किया जाए. अगर ज़रूरी हो, तो तय किए गए समयसीमा खत्म होने से पहले, सूचना को रद्द किया जा सकता है. - सूचना सेटिंग: आप
setSettingsText()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है वह टेक्स्ट सेट करने के लिए जो तब दिखाई देता है, जब आप अपने ऐप्लिकेशन के नोटिफ़िकेशन सेटिंग का उपयोग करकेNotification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES
इंटेंट. फ़िल्टर करने के लिए, सिस्टम आपको यहां दी गई अतिरिक्त जानकारी दे सकता है वे सेटिंग जो आपके ऐप्लिकेशन को लोगों को दिखानी चाहिए:EXTRA_CHANNEL_ID
,NOTIFICATION_TAG
औरNOTIFICATION_ID
. - सूचना खारिज करना: उपयोगकर्ता खुद सूचनाओं को खारिज कर सकते हैं और
तो उन्हें प्रोग्राम के हिसाब से हटाया जा सकता है. आपके पास यह तय करने का विकल्प है कि कोई सूचना कब मिले
को खारिज कर दिया जाता है और उसे क्यों खारिज किया जाता है,
onNotificationRemoved()
तरीकाNotificationListenerService
क्लास. - बैकग्राउंड के रंग: आपके पास किसी सूचना के लिए बैकग्राउंड का रंग सेट करने और चालू करने का विकल्प होता है. इस सुविधा का इस्तेमाल सिर्फ़ उन टास्क के लिए सूचनाओं में करना चाहिए जो उपयोगकर्ता के लिए एक नज़र में देखने के लिए ज़रूरी हैं. इसके लिए
उदाहरण के लिए, आप संबंधित सूचनाओं के लिए एक पृष्ठभूमि रंग सेट कर सकते हैं
ड्राइविंग दिशा निर्देश या कोई फ़ोन कॉल चल रहा हो.
setColor()
का इस्तेमाल करके, अपनी पसंद का बैकग्राउंड रंग भी सेट किया जा सकता है. ऐसा करना आपकोsetColorized()
का इस्तेमाल करके, सूचना के लिए बैकग्राउंड के रंग का इस्तेमाल करने की सुविधा मिलती है. - मैसेज की शैली: Android 8.0 में, वे सूचनाएं जो
MessagingStyle
क्लास डिसप्ले और कॉन्टेंट को छोटा करके दिखाने की सुविधा मिलती है. आपको इसके लिएMessagingStyle
क्लास जो मैसेज से जुड़ी हों. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए किसी बातचीत के कॉन्टेक्स्ट के बारे में बताने के लिएaddHistoricMessage()
तरीका जोड़ें. इसके लिए, यह तरीका अपनाएं: पुराने मैसेज को सेव किया गया था.

Android 8.0 में, उपयोगकर्ता ऐप्लिकेशन लॉन्चर के आइकॉन पर लंबे समय तक दबाकर, नोटिफ़िकेशन देख सकते हैं.
अपने-आप भरने वाला फ़्रेमवर्क
खाता बनाने, लॉगिन करने, और क्रेडिट कार्ड से लेन-देन करने में समय लगता है. साथ ही, इनके लिए आम तौर पर गड़बड़ियां हैं. उपयोगकर्ता ऐसे ऐप्लिकेशन से आसानी से परेशान हो सकते हैं जिनमें इस तरह के बार-बार होने वाले टास्क करने पड़ते हैं.
Android 8.0 (एपीआई लेवल 26) में जानकारी अपने-आप भरने की सुविधा उपलब्ध है. इसकी मदद से, लॉगिन और क्रेडिट कार्ड जैसे फ़ॉर्म आसानी से भरे जा सकते हैं. मौजूदा और नए ऐप्लिकेशन, उपयोगकर्ता के ऑप्ट इन करने के बाद ऑटोफ़िल फ़्रेमवर्क के साथ काम करते हैं ऑटोमैटिक भरना.
फ़्रेमवर्क के साथ आपके ऐप्लिकेशन के काम करने के तरीके को ऑप्टिमाइज़ करने के लिए, कुछ कदम उठाए जा सकते हैं. ज़्यादा जानकारी के लिए, ऑटोमैटिक भरने वाले फ़्रेमवर्क की खास जानकारी देखें.
ऐसे फ़ॉन्ट जिन्हें डाउनलोड किया जा सकता है
Android 8.0 (एपीआई लेवल 26) और Android सपोर्ट लाइब्रेरी 26, आपको किसी APK में फ़ॉन्ट का बंडल बनाने या APK में फ़ॉन्ट डाउनलोड किए जा सकते हैं. इस सुविधा से आपके APK का साइज़ कम होता है. साथ ही, ऐप्लिकेशन के इंस्टॉल होने की दर भी बढ़ती है. साथ ही, एक ही फ़ॉन्ट को कई ऐप्लिकेशन शेयर कर सकते हैं.
फ़ॉन्ट डाउनलोड करने के बारे में ज़्यादा जानने के लिए, डाउनलोड किए जा सकने वाले फ़ॉन्ट लेख पढ़ें.
एक्सएमएल में फ़ॉन्ट
Android 8.0 (एपीआई लेवल 26) में, फ़ॉन्ट को एक्सएमएल फ़ॉर्मैट में इस्तेमाल करने की नई सुविधा जोड़ी गई है. इसकी मदद से, फ़ॉन्ट को संसाधन के तौर पर इस्तेमाल किया जा सकता है. इसका मतलब है कि फ़ॉन्ट को ऐसेट के तौर पर बंडल करने की ज़रूरत नहीं है. फ़ॉन्ट को R
फ़ाइल में कंपाइल किया जाता है और अपने-आप
जो सिस्टम में एक संसाधन के रूप में उपलब्ध हैं. इसके बाद, इन फ़ॉन्ट को
नए संसाधन टाइप, font
की मदद लें.
सपोर्ट लाइब्रेरी 26, डिवाइसों पर इस सुविधा के लिए पूरी सहायता देती है एपीआई वर्शन 14 और इसके बाद वाले वर्शन पर चल रहे हों.
फ़ॉन्ट को संसाधन के तौर पर इस्तेमाल करने और सिस्टम फ़ॉन्ट को वापस पाने के बारे में ज़्यादा जानने के लिए, एक्सएमएल में फ़ॉन्ट देखें.
अपने-आप साइज़ बदलने वाला TextView
Android 8.0 (एपीआई लेवल 26) की मदद से, टेक्स्ट को बड़ा या बड़ा करने के लिए, टेक्स्ट का साइज़ सेट किया जा सकता है तो TextView के साइज़ के आधार पर अपने-आप कॉन्ट्रैक्ट (अनुबंध) कर सकते हैं. इसका मतलब है कि अलग-अलग स्क्रीन या डाइनैमिक कॉन्टेंट के लिए, टेक्स्ट के साइज़ को ऑप्टिमाइज़ करना ज़्यादा आसान है. Android 8.0 में अपने-आप साइज़ बदलने वाले TextView के बारे में ज़्यादा जानकारी के लिए, TextView को अपने-आप साइज़ बदलना देखें.
डिवाइस के मुताबिक बदलने वाले आइकॉन
Android 8.0 (एपीआई लेवल 26) में, अडैप्टिव लॉन्चर आइकॉन की सुविधा उपलब्ध है. अडैप्टिव आइकॉन, विज़ुअल इफ़ेक्ट के साथ काम करते हैं. साथ ही, ये अलग-अलग डिवाइस मॉडल पर अलग-अलग शेप में दिख सकते हैं. यह जानने के लिए कि अडैप्टिव आइकॉन बनाएं, अडैप्टिव आइकॉन देखें पढ़ें.
कलर मैनेजमेंट
इमेजिंग ऐप्लिकेशन के Android डेवलपर, अब नए डिवाइसों का भी फ़ायदा ले सकते हैं जिनका डिसप्ले कई तरह के रंगों में उपलब्ध है. बड़ा गैमट दिखाने के लिए इमेज के लिए, ऐप्लिकेशन को अपने मेनिफ़ेस्ट में एक फ़्लैग चालू करना होगा (हर गतिविधि के लिए) और एम्बेड किए गए वाइड कलर प्रोफ़ाइल (AdobeRGB, दोनों से) के साथ बिटमैप लोड करें. Pro Photo RGB, DCI-P3 वगैरह).
वेबव्यू एपीआई
Android 8.0 में कई एपीआई उपलब्ध हैं, जिनकी मदद से आपके ऐप्लिकेशन में वेब कॉन्टेंट दिखाने वाले WebView
ऑब्जेक्ट को मैनेज किया जा सकता है. ये एपीआई, आपके ऐप्लिकेशन की स्थिरता और सुरक्षा को बेहतर बनाते हैं. इनमें ये शामिल हैं:
- Version API
- Google SafeBrowsing API
- Termination Handle API
- Renderer Importance API
इन एपीआई का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, वेबव्यू मैनेज करना लेख पढ़ें.
WebView
क्लास में अब सुरक्षित ब्राउज़िंग एपीआई शामिल है, ताकि वेब ब्राउज़िंग की सुरक्षा को बेहतर बनाया जा सके. ज़्यादा जानकारी के लिए,
Google Safe Browsing API देखें.
शॉर्टकट और विजेट पिन करना
Android 8.0 (एपीआई लेवल 26) में, ऐप्लिकेशन में शॉर्टकट और विजेट पिन करने की सुविधा जोड़ी गई है. अपने ऐप्लिकेशन में, उपयोगकर्ता की अनुमति के आधार पर, इस्तेमाल किए जा सकने वाले लॉन्चर के लिए, पिन किए गए शॉर्टकट और विजेट बनाए जा सकते हैं.
ज़्यादा जानकारी के लिए, शॉर्टकट और विजेट पिन करने की सुविधा के बारे में गाइड देखें.
स्क्रीन का ज़्यादा से ज़्यादा आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात)
Android 8.0 (एपीआई लेवल 26) में, ऐप्लिकेशन के ज़्यादा से ज़्यादा आसपेक्ट रेशियो को कॉन्फ़िगर करने के तरीके में बदलाव किए गए हैं.
सबसे पहले, Android 8.0 में maxAspectRatio एट्रिब्यूट को जोड़ा गया है. इसका इस्तेमाल करके, अपने ऐप्लिकेशन का ज़्यादा से ज़्यादा आसपेक्ट रेशियो सेट किया जा सकता है. इसके अलावा, Android 8.0 और इसके बाद के वर्शन में, किसी ऐप्लिकेशन का डिफ़ॉल्ट ज़्यादा से ज़्यादा आसपेक्ट रेशियो, उस डिवाइस का नेटिव आसपेक्ट रेशियो होता है जिस पर ऐप्लिकेशन चल रहा है.
ज़्यादा से ज़्यादा आसपेक्ट रेशियो का एलान करने के बारे में ज़्यादा जानने के लिए, एक से ज़्यादा स्क्रीन पर काम करने की सुविधा देखें.
मल्टी-डिसप्ले की सुविधा
Android 8.0 (एपीआई लेवल 26) और इसके बाद के वर्शन में, यह प्लैटफ़ॉर्म बेहतर सुविधाएं देता है एक से ज़्यादा डिसप्ले पर काम करता है. अगर कोई गतिविधि मल्टी-विंडो मोड के साथ काम करती है और एक से ज़्यादा डिसप्ले वाले डिवाइस पर चल रही है, तो उपयोगकर्ता गतिविधि को एक डिसप्ले से दूसरे डिसप्ले पर ले जा सकते हैं. जब कोई ऐप्लिकेशन कोई गतिविधि लॉन्च करता है, तो ऐप्लिकेशन यह तय कर सकता है कि गतिविधि किस डिसप्ले पर चलना चाहिए.
ध्यान दें: अगर कोई गतिविधि, कई विंडो मोड के साथ काम करती है, तो Android 8.0 उस गतिविधि के लिए, कई डिसप्ले के साथ काम करने की सुविधा अपने-आप चालू कर देता है. आपको अपने ऐप्लिकेशन की जांच करनी चाहिए, ताकि यह पक्का किया जा सके कि वह कई डिसप्ले वाले एनवायरमेंट में ठीक से काम करता है.
एक समय में केवल एक गतिविधि फिर से शुरू की गई स्थिति में रह सकती है, भले ही ऐप्लिकेशन में कई डिसप्ले हैं. फ़ोकस वाली गतिविधि, 'फिर से शुरू करें' वाली स्थिति में होती है; दिख रही अन्य सभी गतिविधियां रोकी जाती हैं, लेकिन बंद नहीं होतीं. Reader Revenue Manager को सेट अप करने के बारे में गतिविधि की लाइफ़साइकल पर, जब कई गतिविधियां दिखती हों, Multi-Windows देखें लाइफ़साइकल.
जब कोई उपयोगकर्ता किसी गतिविधि को एक डिसप्ले से दूसरे डिसप्ले पर ले जाता है, तो सिस्टम गतिविधि का साइज़ बदलता है और ज़रूरत के हिसाब से रनटाइम के बदलावों को जारी करता है. आपकी गतिविधि कॉन्फ़िगरेशन में बदलाव को खुद मैनेज कर सकता है या सिस्टम को अपनी गतिविधि वाली प्रोसेस को बंद कर दें और उसे डाइमेंशन. ज़्यादा जानकारी के लिए, कॉन्फ़िगरेशन में हुए बदलावों को मैनेज करना लेख पढ़ें.
ActivityOptions
में एक से ज़्यादा डिसप्ले के साथ काम करने के लिए, दो नए तरीके दिए गए हैं:
setLaunchDisplayId()
- यह तय करता है कि गतिविधि लॉन्च होने पर उसे किस डिसप्ले पर दिखाया जाना चाहिए.
getLaunchDisplayId()
- गतिविधि के मौजूदा लॉन्च का डिसप्ले दिखाता है.
adb shell को कई डिसप्ले के साथ काम करने के लिए बनाया गया है.
shell start
कमांड का इस्तेमाल अब गतिविधि को लॉन्च करने के लिए किया जा सकता है. साथ ही, गतिविधि के टारगेट डिसप्ले की जानकारी देने के लिए भी किया जा सकता है:
adb shell start <activity_name> --display <display_id>
यूनिफ़ाइड लेआउट मार्जिन और पैडिंग
Android 8.0 (एपीआई लेवल 26) की मदद से, उन स्थितियों के बारे में आसानी से बताया जा सकता है जहां View
एलिमेंट के दोनों ओर एक ही मार्जिन या पैडिंग का इस्तेमाल किया जाता है.
खास तौर पर, अब अपनी लेआउट एक्सएमएल फ़ाइलों में इन एट्रिब्यूट का इस्तेमाल किया जा सकता है:
-
layout_marginVertical
, जोlayout_marginTop
औरlayout_marginBottom
साथ में. -
layout_marginHorizontal
, जोlayout_marginLeft
औरlayout_marginRight
साथ में. -
paddingVertical
, जोpaddingTop
औरpaddingBottom
साथ में. -
paddingHorizontal
, जो एक साथpaddingLeft
औरpaddingRight
को तय करता है.
ध्यान दें: अगर आपने अपने ऐप्लिकेशन के लॉजिक को अलग-अलग भाषाओं और संस्कृतियों के हिसाब से, टेक्स्ट की दिशा के साथ-साथ पसंद के मुताबिक बनाया है, तो ध्यान रखें कि इन एट्रिब्यूट से
layout_marginStart
,
layout_marginEnd
,
paddingStart
या
paddingEnd
की वैल्यू पर कोई असर नहीं पड़ता. आपके पास इन वैल्यू को खुद सेट करने के अलावा
लेआउट व्यवहार बनाने के लिए नए वर्टिकल और हॉरिज़ॉन्टल लेआउट एट्रिब्यूट
जो टेक्स्ट की दिशा पर निर्भर करता है.
पॉइंटर कैप्चर
गेम, रिमोट डेस्कटॉप, और वर्चुअलाइज़ेशन क्लाइंट जैसे कुछ ऐप्लिकेशन को माउस पॉइंटर को कंट्रोल करने से काफ़ी फ़ायदा होता है. पॉइंटर कैप्चर एक नया है Android 8.0 (एपीआई लेवल 26) की ऐसी सुविधा जो सभी माउस इवेंट को डिलीवर करके, ऐसा कंट्रोल देती है ऐप्लिकेशन को ध्यान में रखकर डिज़ाइन किया गया है.
Android 8.0 से, आपके ऐप्लिकेशन में मौजूद View
, पॉइंटर कैप्चर करने का अनुरोध कर सकता है. साथ ही, कैप्चर किए गए पॉइंटर इवेंट को प्रोसेस करने के लिए, एक लिसनर तय कर सकता है. कॉन्टेंट बनाने
इस मोड में होने पर माउस पॉइंटर छिपा हुआ रहता है. व्यू, पॉइंटर कैप्चर को रिलीज़ कर सकता है
तब उसे माउस जानकारी की आवश्यकता नहीं होती. जब व्यू पर फ़ोकस नहीं होता है, तब सिस्टम भी पॉइंटर कैप्चर को रिलीज़ कर सकता है. उदाहरण के लिए, जब उपयोगकर्ता कोई दूसरा ऐप्लिकेशन खोलता है.
अपने ऐप्लिकेशन में इस सुविधा का इस्तेमाल करने के बारे में जानने के लिए, यहां देखें पॉइंटर कैप्चर.
ऐप्लिकेशन कैटगरी
Android 8.0 (एपीआई लेवल 26) की मदद से, हर ऐप्लिकेशन के लिए यह तय किया जा सकता है कि वह किस कैटगरी में आता है. हालांकि, ऐसा तब ही किया जा सकता है, जब वह ऐप्लिकेशन उस कैटगरी में आता हो. इन कैटगरी का इस्तेमाल, उपयोगकर्ताओं को एक जैसे मकसद या फ़ंक्शन वाले ऐप्लिकेशन को एक साथ दिखाने के लिए किया जाता है. जैसे, डेटा खर्च, बैटरी खर्च या स्टोरेज खर्च. अपने ऐप्लिकेशन के लिए कैटगरी तय करने के लिए,
आपके <application>
में android:appCategory
एट्रिब्यूट
मेनिफ़ेस्ट टैग.
Android TV लॉन्चर
Android 8.0 (एपीआई लेवल 26) में, कॉन्टेंट पर आधारित एक नया वर्शन शामिल किया गया है, Android TV की होम स्क्रीन का अनुभव, जो कि Android 8.0 के लिए Android TV एम्युलेटर और Nexus Player डिवाइस की इमेज. नई होम स्क्रीन व्यवस्थित करती है चैनलों के हिसाब से पंक्तियों में वीडियो कॉन्टेंट होता है. हर एक में, ऐप्लिकेशन की मदद से प्रोग्राम की जानकारी अपने-आप भर जाती है शामिल हैं. ऐप्लिकेशन कई चैनल पब्लिश कर सकते हैं. साथ ही, उपयोगकर्ता यह कॉन्फ़िगर कर सकते हैं कि उन्हें होम स्क्रीन पर कौनसे चैनल देखने हैं. Android TV की होम स्क्रीन पर, 'अगला देखें' लाइन भी दिखती है. इसमें, उपयोगकर्ता की वीडियो देखने की आदतों के आधार पर, ऐप्लिकेशन के प्रोग्राम दिखते हैं. ऐप्लिकेशन, वीडियो की झलक भी दिखा सकते हैं. ये झलक, किसी प्रोग्राम पर उपयोगकर्ता का ध्यान जाने पर अपने-आप चलती हैं. के लिए API चैनल और प्रोग्राम अपने-आप भरने की सुविधा, TvProvider एपीआई का हिस्सा है. इसे Android Android 8.0 के साथ काम करने वाला लाइब्रेरी मॉड्यूल.
AnimatorSet
Android 8.0 (एपीआई लेवल 26) के बाद के वर्शन में, AnimatorSet
API अब वीडियो पर आगे/पीछे जाने और वीडियो चलाने की सुविधा देता है
करें. इसकी मदद से, ऐनिमेशन सेट की पोज़िशन को किसी खास समय पर सेट किया जा सकता है. अगर आपके ऐप्लिकेशन में ऐसी कार्रवाइयों के लिए ऐनिमेशन शामिल हैं जिन्हें पहले जैसा किया जा सकता है, तो वीडियो को पीछे चलाने की सुविधा का इस्तेमाल किया जा सकता है. दो अलग-अलग ऐनिमेशन परिभाषित करने के बजाय
सेट है, तो उसी को उलटा भी चलाया जा सकता है.
इनपुट और नेविगेशन
कीबोर्ड नेविगेशन क्लस्टर
अगर आपके ऐप्लिकेशन में कोई गतिविधि किसी जटिल व्यू हैरारकी का इस्तेमाल करती है, जैसे कि दूसरी इमेज, यूज़र इंटरफ़ेस (यूआई) एलिमेंट के ग्रुप को क्लस्टर में व्यवस्थित करना, ताकि उन्हें आसानी से व्यवस्थित किया जा सके कीबोर्ड नेविगेशन. उपयोगकर्ता, चालू करने के लिए Meta+Tab या Search+Tab दबा सकते हैं एक क्लस्टर से दूसरे क्लस्टर में जाने के लिए, Chromebook डिवाइस. इसके अच्छे उदाहरण क्लस्टर में ये शामिल हैं: साइड पैनल, नेविगेशन बार, मुख्य कॉन्टेंट एरिया, और एलिमेंट जिसमें कई चाइल्ड एलिमेंट शामिल हो सकते हैं.

View
या ViewGroup
एलिमेंट बनाने के लिए
के आधार पर,
android:keyboardNavigationCluster
एट्रिब्यूट
एलिमेंट के लेआउट की एक्सएमएल फ़ाइल में true
या true
पास करें
के यूज़र इंटरफ़ेस (यूआई) लॉजिक में setKeyboardNavigationCluster()
में.
ध्यान दें: क्लस्टर को नेस्ट नहीं किया जा सकता. हालांकि, नेस्ट नहीं किए गए क्लस्टर, हैरारकी के अलग-अलग लेवल पर दिख सकते हैं. अगर आपको
नेस्ट क्लस्टर है, तो फ़्रेमवर्क सिर्फ़ सबसे ऊपर के
क्लस्टर के रूप में ViewGroup
एलिमेंट.
टचस्क्रीन वाले डिवाइसों पर, क्लस्टर की कैटगरी के हिसाब से सेट किया जा सकता है
ViewGroup
ऑब्जेक्ट
android:touchscreenBlocksFocus
एलिमेंट को true
से
सिर्फ़ क्लस्टर के हिसाब से नेविगेशन की अनुमति देनी होगी. अगर किसी क्लस्टर पर यह कॉन्फ़िगरेशन लागू किया जाता है, तो उपयोगकर्ता क्लस्टर में जाने या उससे बाहर निकलने के लिए, Tab बटन या ऐरो बटन का इस्तेमाल नहीं कर सकते. इसके बजाय, उन्हें क्लस्टर नेविगेशन के लिए कीबोर्ड का कॉम्बिनेशन दबाना होगा.
डिफ़ॉल्ट फ़ोकस देखना
Android 8.0 (एपीआई लेवल 26) में, View
असाइन किया जा सकता है. यह तब फ़ोकस में आना चाहिए, जब (फिर से) बनाई गई ऐक्टिविटी फिर से शुरू हो जाए और उपयोगकर्ता, टैब बटन जैसे कीबोर्ड नेविगेशन बटन दबाए. "डिफ़ॉल्ट रूप से फ़ोकस किया गया" सेटिंग लागू करने के लिए, यूज़र इंटरफ़ेस (यूआई) एलिमेंट वाली लेआउट एक्सएमएल फ़ाइल में, View
एलिमेंट के android:focusedByDefault
एट्रिब्यूट को true
पर सेट करें या अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) लॉजिक में true
को setFocusedByDefault()
पर पास करें.
बोली आउटपुट
गतिविधियां और सेवाएं,
कॉन्टेंट को बोलकर सुनाने और उसका उच्चारण करने के लिए TextToSpeech
. Android 8.0 (एपीआई लेवल 26) के बाद, आपका ऐप्लिकेशन टेक्स्ट-टू-स्पीच इंजन के बोले गए हर शब्द के लिए, समय की ज़्यादा सटीक जानकारी पा सकता है. हालांकि, इसके लिए ज़रूरी है कि इंजन यह जानकारी उपलब्ध कराए. इस सुविधा का इस्तेमाल किया जा सकता है
टेक्स्ट-टू-स्पीच इंजन के बोलने के दौरान, खास शब्दों की तरफ़ लोगों का ध्यान खींचने के लिए
उन्हें.
अपने ऐप्लिकेशन में, लिखाई को बोली में बदलने वाले इंजन में किए गए इन सुधारों का इस्तेमाल करने के लिए, UtteranceProgressListener
का एक इंस्टेंस रजिस्टर करें. कानूनी समझौते के तहत
रजिस्ट्रेशन प्रक्रिया के दौरान,
onRangeStart()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
तरीका.
लिखाई को बोली में बदलने वाला इंजन, rangeStart()
को कॉल करता है, ताकि वह उस समय को रिकॉर्ड कर सके जब टेक्स्ट की किसी खास रेंज का ऑडियो चलाना शुरू करना है. जब उस टेक्स्ट रेंज का ऑडियो चलना शुरू होता है, तो आपके ऐप्लिकेशन का onRangeStart()
तरीका लागू होता है. इसके बाद, आपका ऐप्लिकेशन इस कॉलबैक का जवाब दे सकता है, जैसे कि
उच्चारण से जुड़ी टेक्स्ट रेंज को हाइलाइट करता है.
लिखाई को बोली में बदलने की प्रोसेस की प्रोग्रेस को ट्रैक करने के बारे में ज़्यादा जानकारी के लिए
इंजन, UtteranceProgressListener
क्लास देखें
संदर्भ.
सिस्टम
नए StrictMode डिटेक्टर
Android 8.0 (एपीआई लेवल 26) में, StrictMode के तीन नए डिटेक्टर जोड़े गए हैं. इनसे आपके ऐप्लिकेशन में संभावित गड़बड़ियों की पहचान करने में मदद मिलती है:
detectUnbufferedIo()
को पता चलेगा कि कब आपका ऐप्लिकेशन, बफ़रिंग की सुविधा के बिना डेटा को पढ़ या लिखता है. इससे बहुत ज़्यादा असर पड़ सकता है परफ़ॉर्मेंस.detectContentUriWithoutPermission()
, यह पता लगाएगा कि आपके ऐप्लिकेशन से बाहर कोई गतिविधि शुरू करते समय, आपका ऐप्लिकेशन किसी दूसरे ऐप्लिकेशन को अनुमतियां देने से गलती से चूक गया है या नहीं.detectUntaggedSockets()
को पता चलेगा कि कब तो आपका ऐप्लिकेशन, नेटवर्क ट्रैफ़िक का इस्तेमाल किए बिना करता है डीबग करने के लिए अपने ट्रैफ़िक को टैग करने के लिएsetThreadStatsTag(int)
के मकसद से बनाया गया है.
संग्रहित डेटा
Android 8.0 (एपीआई लेवल 26) की मदद से, कैश मेमोरी में सेव किए गए डेटा को इस्तेमाल करने के बारे में बेहतर तरीके से दिशा-निर्देश दिए जाते हैं. अब हर ऐप्लिकेशन को कैश मेमोरी में सेव किए गए डेटा के लिए, डिस्क स्पेस का कोटा दिया जाता है. यह कोटा, getCacheQuotaBytes(UUID)
से मिलता है.
जब सिस्टम को डिस्क का स्टोरेज खाली करना होगा, तो वह उन ऐप्लिकेशन से कैश मेमोरी में सेव की गई फ़ाइलों को मिटाना शुरू कर देगा जिनके लिए तय कोटा से ज़्यादा स्टोरेज इस्तेमाल किया जा रहा है. इस तरह, अगर आप कैश मेमोरी में सेव किए गए डेटा को तय कोटा के बाद, आपकी कैश मेमोरी में सेव की गई फ़ाइलें, सिस्टम की सबसे आखिरी फ़ाइलों में से कुछ तब होंगी, जब ज़रूरी है. जब सिस्टम यह तय कर रहा होगा कि आपके ऐप्लिकेशन में से कैश मेमोरी में सेव की गई कौनसी फ़ाइलें मिटानी हैं, तो वह सबसे पुरानी फ़ाइलों को प्राथमिकता देगा. यह फ़ाइलों में बदलाव होने के समय के हिसाब से तय किया जाता है.
इसके अलावा, दो नए तरीके भी हैं जिन्हें हर डायरेक्ट्री के हिसाब से चालू किया जा सकता है. इससे यह कंट्रोल किया जा सकता है कि सिस्टम, कैश मेमोरी में सेव किए गए आपके डेटा को कैसे खाली करता है:
StorageManager.setCacheBehaviorAtomic()
का इस्तेमाल यह बताने के लिए किया जा सकता है कि किसी डायरेक्ट्री और उसके सभी कॉन्टेंट को एक ही यूनिट के तौर पर मिटा दिया जाना चाहिए.setCacheBehaviorTombstone(File, boolean)
का इस्तेमाल करके, कि किसी डायरेक्ट्री में मौजूद फ़ाइलों को मिटाने के बजाय, उन्हें काटकर 0 बाइट तक छोटा किया जाना चाहिए लंबाई बनाए रखने के लिए खाली फ़ाइल को बरकरार रखें.
आखिर में, जब आपको बड़ी फ़ाइलों के लिए डिस्क स्टोरेज का बंटवारा करना हो, तो नए allocateBytes(FileDescriptor, long)
API का इस्तेमाल करें. यह आपके अनुरोध को पूरा करने के लिए, ज़रूरत के हिसाब से अन्य ऐप्लिकेशन की कैश मेमोरी में सेव की गई फ़ाइलों को अपने-आप मिटा देगा. यह तय करते समय कि डिवाइस में आपका नया डेटा सेव करने के लिए ज़रूरत के मुताबिक डिस्क स्पेस है या नहीं, getUsableSpace()
का इस्तेमाल करने के बजाय getAllocatableBytes(UUID)
को कॉल करें. ऐसा इसलिए, क्योंकि getAllocatableBytes(UUID)
, कैश मेमोरी में सेव किए गए उस डेटा को ध्यान में रखेगा जिसे सिस्टम आपकी ओर से मिटाने के लिए तैयार है.
कॉन्टेंट देने वाले के लिए पेजिंग
हमने बड़ी संख्या में लोड करने के लिए सहायता शामिल करने के लिए सामग्री देने वालों को अपडेट किया है डेटासेट को एक बार में एक पेज पर सेट करें. उदाहरण के लिए, कोई फ़ोटो ऐप्लिकेशन जिसमें हज़ारों इमेज किसी पेज पर मौजूद डेटा के किसी सबसेट के लिए क्वेरी कर सकती हैं. कॉन्टेंट उपलब्ध कराने वाली किसी कंपनी की तरफ़ से दिखाए गए नतीजों के हर पेज को एक कर्सर ऑब्जेक्ट से दिखाया जाता है. पेज व्यू का इस्तेमाल करने के लिए, क्लाइंट और सेवा देने वाली कंपनी, दोनों को यह सुविधा.
कॉन्टेंट उपलब्ध कराने वाली कंपनियों में हुए बदलावों के बारे में ज़्यादा जानने के लिए,
ContentProvider
और
ContentProviderClient
देखें.
कॉन्टेंट रीफ़्रेश करने के अनुरोध
ContentProvider
और
ContentResolver
क्लास में अब हर एक में एक
refresh()
तरीका शामिल है. इससे क्लाइंट यह आसानी से जान सकते हैं कि
उनकी मांग की गई जानकारी अप-टू-डेट है या नहीं.
अपनी रिपोर्ट को रीफ़्रेश करके, कस्टम कॉन्टेंट रीफ़्रेश करने वाला लॉजिक जोड़ा जा सकता है
ContentProvider
. पक्का करें कि आपने true
दिखाने के लिए, refresh()
के तरीके को बदल दिया हो. इससे, डेटा प्रोवाइडर के क्लाइंट को यह पता चलता है कि आपने डेटा को खुद रीफ़्रेश करने की कोशिश की है.
आपका क्लाइंट ऐप्लिकेशन, रीफ़्रेश किए गए कॉन्टेंट का अनुरोध करने के लिए, किसी दूसरे तरीके का इस्तेमाल कर सकता है. इसे refresh()
भी कहा जाता है. इस तरीका को कॉल करते समय, रीफ़्रेश किए जाने वाले डेटा का यूआरआई डालें.
ध्यान दें: हो सकता है कि आपने नेटवर्क से डेटा का अनुरोध किया हो. इसलिए, आपको क्लाइंट साइड से refresh()
को सिर्फ़ तब शुरू करना चाहिए, जब आपको पता हो कि कॉन्टेंट पुराना है.
आम तौर पर, कॉन्टेंट को इस तरह रीफ़्रेश करने की वजह यह होती है कि उपयोगकर्ता ने स्विप करके रीफ़्रेश करें जेस्चर का इस्तेमाल किया हो. इससे, मौजूदा यूज़र इंटरफ़ेस (यूआई) को अप-टू-डेट कॉन्टेंट दिखाने का अनुरोध किया जाता है.
JobScheduler में किए गए सुधार
Android 8.0 (एपीआई लेवल 26) में, JobScheduler
में कई सुधार किए गए हैं. इन सुधारों की मदद से, आपके ऐप्लिकेशन के लिए बैकग्राउंड में प्रोसेस करने की नई सीमाओं का पालन करना आसान हो जाता है. ऐसा इसलिए है, क्योंकि आम तौर पर शेड्यूल की गई जॉब का इस्तेमाल करके, अब पाबंदी वाली बैकग्राउंड सेवाओं या इंप्लिसिट ब्रॉडकास्ट रिसीवर को बदला जा सकता है.
JobScheduler
में किए गए अपडेट में ये शामिल हैं:
-
अब शेड्यूल की गई किसी जॉब के साथ, वर्क क्वे को जोड़ा जा सकता है. किसी जॉब की सूची में कोई वर्क आइटम जोड़ने के लिए,
JobScheduler.enqueue()
को कॉल करें. जब जॉब चल रहा हो, तो वह सूची में मौजूद बाकी कामों को प्रोसेस कर सकता है. यह सुविधा, ऐसे कई इस्तेमाल के उदाहरणों को मैनेज करती है जिनके लिए पहले बैकग्राउंड सेवा शुरू करनी पड़ती थी. खास तौर पर,IntentService
को लागू करने वाली सेवाओं के लिए. -
Android
Support Library 26.0.0 में एक नई
JobIntentService
क्लास जोड़ी गई है. यहIntentService
जैसी ही सुविधाएं उपलब्ध कराती है. हालांकि, Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन पर चलने के दौरान, यह सेवाओं के बजाय जॉब का इस्तेमाल करती है. -
अब किसी नौकरी से
ClipData
को जोड़ने के लिए,JobInfo.Builder.setClipData()
पर कॉल किया जा सकता है. इस विकल्प से ये सुविधाएं चालू होती हैं आप यूआरआई की अनुमतियों को किसी जॉब से जोड़ सकते हैं. यह ठीक वैसे ही होता है जैसे ये अनुमतियांContext.startService()
को दी जा सकती हैं. इंटेंट के साथ यूआरआई की अनुमतियों का भी इस्तेमाल किया जा सकता है काम की कतार में है. -
शेड्यूल की गई जॉब अब कई नई पाबंदियों के साथ काम करती हैं:
JobInfo.isRequireStorageNotLow()
- डिवाइस में उपलब्ध मेमोरी कम होने पर जॉब नहीं चलता.
JobInfo.isRequireBatteryNotLow()
- अगर बैटरी लेवल, क्रिटिकल थ्रेशोल्ड पर या उससे कम है, तो जॉब नहीं चलता. यह वह लेवल होता है जिस पर डिवाइस, बैटरी कम होने की चेतावनी वाला सिस्टम डायलॉग दिखाता है.
NETWORK_TYPE_METERED
- नौकरी के लिए सीमित डेटा वाले नेटवर्क कनेक्शन की ज़रूरत होती है, जैसे कि ज़्यादातर मोबाइल डेटा प्लान हैं.
कस्टम डेटा स्टोर
Android 8.0 (एपीआई लेवल 26) की मदद से, अपनी पसंद के मुताबिक कस्टम डेटा स्टोर उपलब्ध कराया जा सकता है. इससे ये काम किए जा सकते हैं तब काम आ सकता है, जब आपका ऐप्लिकेशन इन प्राथमिकताओं को क्लाउड या लोकल डेटाबेस में सेव करता है या अगर प्राथमिकताएं डिवाइस के हिसाब से हों. इसके बारे में ज़्यादा जानकारी पाने के लिए, डेटा स्टोर को लागू करना. इसे लागू करने के लिए, कस्टम डेटा स्टोर.
मीडिया को बेहतर बनाना
वॉल्यूम शेपर
VolumeShaper
क्लास की सुविधा जोड़ी गई है. इस्तेमाल की जाने वाली चीज़ें
इसे फ़ेड-इन, फ़ेड-आउट, और क्रॉस फ़ेड जैसे छोटे ऑटोमेटेड वॉल्यूम ट्रांज़िशन करने के लिए, इस्तेमाल किया जाता है.
ज़्यादा जानने के लिए, VolumeShaper की मदद से, ऐम्प्ल्यफ़िकेशन को कंट्रोल करना देखें.
ऑडियो फ़ोकस से जुड़ी सुविधाओं में सुधार
ऑडियो ऐप्लिकेशन, ऑडियो फ़ोकस का अनुरोध करके और उसे रद्द करके, डिवाइस पर ऑडियो आउटपुट शेयर करते हैं.
ऐप्लिकेशन, प्लेबैक को शुरू या बंद करके या वॉल्यूम को कम करके, फ़ोकस में होने वाले बदलावों को मैनेज करता है.
AudioFocusRequest
में एक नई क्लास है. इस क्लास को requestAudioFocus()
के पैरामीटर के तौर पर इस्तेमाल करने पर, ऐप्लिकेशन के पास ऑडियो फ़ोकस में होने वाले बदलावों को मैनेज करने के लिए नई सुविधाएं होती हैं:
ऑटोमैटिक डकिंग और
देर से फ़ोकस हासिल करना.
मीडिया मेट्रिक
नया getMetrics()
तरीका, एट्रिब्यूट और वैल्यू के मैप के तौर पर कॉन्फ़िगरेशन और परफ़ॉर्मेंस की जानकारी देने वाला PersistableBundle
ऑब्जेक्ट दिखाता है.
इन मीडिया क्लास के लिए, getMetrics()
तरीका तय किया गया है:
MediaPlayer.getMetrics()
MediaRecorder.getMetrics()
MediaCodec.getMetrics()
MediaExtractor.getMetrics()
मेट्रिक को हर इंस्टेंस के लिए अलग-अलग इकट्ठा किया जाता है और इंस्टेंस की लाइफ़टाइम वैल्यू. अगर कोई मेट्रिक उपलब्ध नहीं है, तो यह तरीका वैल्यू के तौर पर 'शून्य' दिखाता है. दिखाई गई असल मेट्रिक, क्लास पर निर्भर करती हैं.
MediaPlayer
Android 8.0 (एपीआई लेवल 26) से, MediaPlayer पर वीडियो चलाए जा सकते हैं डीआरएम से सुरक्षित कॉन्टेंट और एचएलएस सैंपल-लेवल का एन्क्रिप्ट (सुरक्षित) किया गया मीडिया.
Android 8.0 में पेश है नया ओवरलोडेड
seekTo()
निर्देश जो सटीक नतीजे देता है
कंट्रोल करें. इसमें एक दूसरा पैरामीटर शामिल होता है, जो सीक मोड तय करता है:
SEEK_PREVIOUS_SYNC
, मीडिया की पोज़िशन को किसी डेटा सोर्स से जुड़े सिंक (या कुंजी) फ़्रेम पर ले जाता है. यह डेटा सोर्स, दिए गए समय से ठीक पहले या उसी समय पर मौजूद होता है.SEEK_NEXT_SYNC
, मीडिया पोज़िशन को उससे जुड़े सिंक (या कुंजी) फ़्रेम में ले जाता है होना चाहिए, जो दिए गए समय के ठीक बाद में या तय समय पर मौजूद हो.SEEK_CLOSEST_SYNC
, मीडिया पोज़िशन को सिंक (या कुंजी) फ़्रेम में ले जाता है यह ऐसे डेटा सोर्स से जुड़ा होता है जो दिए गए समय के पास या उसके पास मौजूद होता है.SEEK_CLOSEST
मीडिया की स्थिति को फ़्रेम में ले जाता है (ज़रूरी नहीं है कि सिंक हो या की फ़्रेम) ऐसे डेटा सोर्स से जुड़ा होता है जो तय करें.
वीडियो को लगातार खोजने के लिए, ऐप्लिकेशन को SEEK_CLOSEST
के बजाय SEEK_
मोड का इस्तेमाल करना चाहिए. इस मोड की स्पीड धीमी होती है, लेकिन हो सकता है कि यह ज़्यादा सटीक हो.
मीडिया रिकॉर्डर
- MediaRecorder अब MPEG2_TS फ़ॉर्मैट के साथ काम करता है, जो
स्ट्रीमिंग:
Kotlin
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)
Java
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
MediaMuxer
अब किसी भी संख्या में ऑडियो और वीडियो स्ट्रीम को हैंडल कर सकता है. अब आपके पास सीमित ऐक्सेस नहीं है एक ऑडियो ट्रैक और/या एक वीडियो ट्रैक का इस्तेमाल कर सकते हैं. जितने चाहें उतने ट्रैक मिक्स करने के लिए,addTrack()
का इस्तेमाल करें.MediaMuxer
में एक या उससे ज़्यादा ऐसे मेटाडेटा ट्रैक भी जोड़े जा सकते हैं जिनमें हर फ़्रेम के लिए, उपयोगकर्ता ने तय किया हो जानकारी. मेटाडेटा का फ़ॉर्मैट, आपके ऐप्लिकेशन से तय होता है. कॉन्टेंट बनाने मेटाडेटा ट्रैक, सिर्फ़ MP4 कंटेनर के लिए काम करता है.
मेटाडेटा, ऑफ़लाइन प्रोसेसिंग के लिए काम का हो सकता है. उदाहरण के लिए, वीडियो स्टेबलाइज़ेशन के लिए सेंसर का इस्तेमाल किया जा सकता है.
मेटाडेटा ट्रैक जोड़ते समय, ट्रैक का MIME फ़ॉर्मैट प्रीफ़िक्स से शुरू होना चाहिए
"application/". मेटाडेटा लिखना, वीडियो/ऑडियो डेटा लिखने जैसा ही है. हालांकि, यह डेटा MediaCodec
से नहीं आता. इसके बजाय, ऐप्लिकेशन
ByteBuffer
writeSampleData()
तरीका.
यह टाइमस्टैंप, वीडियो और ऑडियो ट्रैक के टाइम बेस में होना चाहिए.
जनरेट की गई MP4 फ़ाइल, मेटाडेटा के MIME फ़ॉर्मैट का सिग्नल देने के लिए, ISOBMFF के सेक्शन 12.3.3.2 में बताए गए TextMetaDataSampleEntry
का इस्तेमाल करती है. मेटाडेटा ट्रैक वाली फ़ाइल एक्सट्रैक्ट करने के लिए, MediaExtractor
का इस्तेमाल करते समय, माइम
मेटाडेटा के फ़ॉर्मैट को MediaFormat
में एक्सट्रैक्ट किया जाएगा.
मीडिया फ़ाइल का बेहतर ऐक्सेस
कॉन्टेंट बनाने
स्टोरेज ऐक्सेस फ़्रेमवर्क (SAF), ऐप्लिकेशन को
DocumentsProvider
, जिससे फ़ाइलों का ऐक्सेस मिल सकता है
अन्य ऐप्लिकेशन के डेटा सोर्स में शामिल करता है. असल में, दस्तावेज़ों की सेवा देने वाली कंपनी, नेटवर्क स्टोरेज में मौजूद फ़ाइलों या मीडिया ट्रांसफ़र प्रोटोकॉल (एमटीपी) जैसे प्रोटोकॉल का इस्तेमाल करने वाली फ़ाइलों का ऐक्सेस भी दे सकती है.
हालांकि, रिमोट डेटा सोर्स से बड़ी मीडिया फ़ाइलें ऐक्सेस करने में कुछ चुनौतियां आती हैं:
- मीडिया प्लेयर को, दस्तावेज़ों की सेवा देने वाली कंपनी से फ़ाइल का ऐक्सेस चाहिए, ताकि उसमें आगे-पीछे जाया जा सके. अगर कोई बड़ी मीडिया फ़ाइल किसी रिमोट डेटा सोर्स पर मौजूद है, तो दस्तावेज़ उपलब्ध कराने वाली कंपनी को पहले से सारा डेटा फ़ेच करना होगा और फ़ाइल के ब्यौरे का स्नैपशॉट बनाना होगा. मीडिया प्लेयर, फ़ाइल के बिना फ़ाइल नहीं चला सकता डिस्क्रिप्टर का इस्तेमाल करते हैं, इसलिए दस्तावेज़ बनाने की प्रक्रिया पूरी होने तक प्लेबैक शुरू नहीं हो सकता फ़ाइल डाउनलोड हो रही है.
- फ़ोटो ऐप्लिकेशन जैसे मीडिया कलेक्शन मैनेजर को, स्कोप वाले फ़ोल्डर के ज़रिए बाहरी एसडी कार्ड में सेव किए गए मीडिया तक पहुंचने के लिए, ऐक्सेस यूआरआई की एक सीरीज़ को पार करना होगा. यह ऐक्सेस पैटर्न, मीडिया पर बड़े पैमाने पर कार्रवाइयां करता है—जैसे ले जाना, कॉपी करना, और मिटाना—बहुत धीमा है.
- मीडिया कलेक्शन मैनेजर, किसी दस्तावेज़ के यूआरआई से उसकी जगह का पता नहीं लगा सकते. इस वजह से, इस तरह के ऐप्लिकेशन के लिए, उपयोगकर्ताओं को यह चुनना मुश्किल हो जाता है कि मीडिया फ़ाइल को कहां सेव करना है.
Android 8.0 के साथ, स्टोरेज के ऐक्सेस को बेहतर बनाकर, इस तरह की हर चुनौती का सामना किया जा सकता है फ़्रेमवर्क.
कस्टम दस्तावेज़ उपलब्ध कराने वाली कंपनियां
Android 8.0 से, स्टोरेज ऐक्सेस फ़्रेमवर्क की मदद से, कस्टम दस्तावेज़ उपलब्ध कराने वाली कंपनियां, रिमोट डेटा सोर्स में मौजूद फ़ाइलों के लिए, फ़ाइल डिस्क्रिप्टर बना सकती हैं. एसएएफ़ किसी फ़ाइल को खोल सकता है, ताकि उसे नेटिव खोजने लायक फ़ाइल मिल सके डिस्क्रिप्टर का इस्तेमाल करें. इसके बाद, SAF दस्तावेज़ों के प्रोवाइडर को अलग-अलग बाइट के अनुरोध भेजता है. इस सुविधा की मदद से, दस्तावेज़ उपलब्ध कराने वाले संगठन को, दस्तावेज़ की सटीक रेंज दिख सकती है पूरी बाइट को कैश मेमोरी में सेव करने के बजाय, मीडिया प्लेयर ऐप्लिकेशन ने जिन बाइट का अनुरोध किया है पहले से फ़ाइल करना होगा.
इस सुविधा का इस्तेमाल करने के लिए, आपको नए
StorageManager.openProxyFileDescriptor()
तरीका. कॉन्टेंट बनाने
openProxyFileDescriptor()
वाला तरीका, ProxyFileDescriptorCallback
ऑब्जेक्ट को कॉलबैक के तौर पर स्वीकार करता है. SAF शुरू करता है
जब भी कोई क्लाइंट ऐप्लिकेशन,
दस्तावेज़ देने वाले से मिला फ़ाइल डिस्क्रिप्टर.
दस्तावेज़ का सीधा ऐक्सेस
Android 8.0 (एपीआई लेवल 26) के बाद के वर्शन के लिए,
getDocumentUri()
तरीका
एक यूआरआई पाएं जो उसी दस्तावेज़ का रेफ़रंस देता है जिसका रेफ़रंस दिए गए mediaUri
में दिया गया है.
हालांकि, क्योंकि लौटाया गया यूआरआई एक
DocumentsProvider
, मीडिया कलेक्शन मैनेजर ऐक्सेस कर सकते हैं
दस्तावेज़ को सीधे तौर पर, स्कोप वाली डायरेक्ट्री के ट्री को देखे बिना.
इस वजह से, मीडिया मैनेजर दस्तावेज़ पर फ़ाइल से जुड़ी कार्रवाइयां कर सकते हैं
तेज़ी से काम करता है.
चेतावनी: getDocumentUri()
तरीका सिर्फ़ मीडिया फ़ाइलों का पता लगाता है. इससे ऐप्लिकेशन को उन फ़ाइलों को ऐक्सेस करने की अनुमति नहीं मिलती. ऐक्सेस पाने के तरीके के बारे में ज़्यादा जानने के लिए
मीडिया फ़ाइलों की अनुमति है, तो संदर्भ दस्तावेज़ देखें.
दस्तावेज़ों तक पहुंचने के लिए पाथ
Android 8.0 (एपीआई लेवल 26) में Storage Access Framework का इस्तेमाल करते समय, findDocumentPath()
तरीके का इस्तेमाल किया जा सकता है. यह तरीका, DocumentsContract
और DocumentsProvider
दोनों क्लास में उपलब्ध है. इसकी मदद से, किसी दस्तावेज़ के आईडी के हिसाब से फ़ाइल सिस्टम के रूट से पाथ तय किया जा सकता है. यह तरीका इस पाथ को
DocumentsContract.Path
ऑब्जेक्ट. ऐसे मामलों में जहां फ़ाइल
सिस्टम में एक ही दस्तावेज़ के लिए कई निर्धारित पथ हैं, तो यह विधि
दिए गए आईडी के साथ दस्तावेज़ तक पहुंचने के लिए अक्सर इस्तेमाल किया जाने वाला पाथ.
यह सुविधा खास तौर पर इन स्थितियों में मददगार होती है:
- आपका ऐप्लिकेशन "इस नाम से सेव करें" डायलॉग का इस्तेमाल करता है. इसमें किसी खास दस्तावेज़ की जगह की जानकारी दिखती है.
- आपका ऐप्लिकेशन, खोज के नतीजों के सेक्शन में फ़ोल्डर दिखाता है. साथ ही, अगर उपयोगकर्ता किसी फ़ोल्डर को चुनता है, तो उसमें मौजूद बच्चे के दस्तावेज़ लोड होने चाहिए.
ध्यान दें: अगर आपके ऐप्लिकेशन को सिर्फ़ कुछ दस्तावेज़ों को ऐक्सेस करने की अनुमति है
पाथ में, findDocumentPath()
की रिटर्न वैल्यू में सिर्फ़
उन फ़ोल्डर और दस्तावेज़ों को ऐक्सेस किया जा सकता है जिन्हें आपका ऐप्लिकेशन ऐक्सेस कर सकता है.
ऑडियो प्लेबैक को मॉनिटर करना
सिस्टम सेवा AudioManager
AudioPlaybackConfiguration
ऑब्जेक्ट चालू हैं. इनमें से हर ऑब्जेक्ट
इसमें किसी खास ऑडियो प्लेबैक सेशन के बारे में जानकारी होती है. आपका ऐप्लिकेशन ये काम कर सकता है
कॉल करके वर्तमान में सक्रिय कॉन्फ़िगरेशन का सेट पुनर्प्राप्त करें
getActivePlaybackConfigurations()
.
Android 8.0 (एपीआई लेवल 26) के बाद से, आप एक कॉलबैक रजिस्टर कर सकते हैं जो
आपका ऐप्लिकेशन जब एक या एक से ज़्यादा
AudioPlaybackConfiguration
ऑब्जेक्ट बदल गया है. ऐसा करने के लिए, registerAudioPlaybackCallback()
को कॉल करें और AudioManager.AudioPlaybackCallback
का एक इंस्टेंस पास करें. AudioManager.AudioPlaybackCallback
क्लास में onPlaybackConfigChanged()
तरीका होता है. ऑडियो चलाने के कॉन्फ़िगरेशन में बदलाव होने पर, सिस्टम इस तरीके को कॉल करता है.
कनेक्टिविटी
वाई-फ़ाई अवेयर
Android 8.0 (एपीआई लेवल 26) में, वाई-फ़ाई अवेयर की सुविधा जोड़ी गई है, जो 'पड़ोसी' पर आधारित है अवेयरनेस नेटवर्किंग (एनएएन) के बारे में खास जानकारी. उन डिवाइसों पर वाई-फ़ाई अवेयर हार्डवेयर, ऐप्लिकेशन, और आस-पास मौजूद डिवाइस खोज और कनेक्ट कर सकते हैं पर जाएं. हम अपने हार्डवेयर के साथ काम कर रहे हैं पार्टनर, डिवाइसों पर वाई-फ़ाई अवेयर टेक्नोलॉजी को जल्द से जल्द उपलब्ध कराएंगे. इसके लिए अपने ऐप्लिकेशन में वाई-फ़ाई अवेयर को इंटिग्रेट करने के तरीके के बारे में ज़्यादा जानकारी के लिए, वाई-फ़ाई अवेयर देखें.
ब्लूटूथ
Android 8.0 (एपीआई लेवल 26) में ये सुविधाएं जोड़ी गई हैं, ताकि प्लैटफ़ॉर्म पर ब्लूटूथ की सुविधा बेहतर तरीके से काम कर सके:
- एवीआरसीपी 1.4 स्टैंडर्ड के साथ काम करने की सुविधा, जो गाने की लाइब्रेरी में ब्राउज़िंग की सुविधा देती है.
- ब्लूटूथ स्मार्ट (बीएलई) 5.0 स्टैंडर्ड के साथ काम करना.
- ब्लूटूथ स्टैक में Sony LDAC कोडेक का इंटिग्रेशन.
साथी डिवाइस से जोड़ें
Android 8.0 (एपीआई लेवल 26) ऐसे एपीआई उपलब्ध कराता है जो आपको इसके बाद के वर्शन वाले डिवाइसों से जोड़ते समय, दूसरे डिवाइस से जोड़ने के अनुरोध वाला डायलॉग बॉक्स ब्लूटूथ, BLE, और वाई-फ़ाई. ज़्यादा जानकारी के लिए, यह देखें कंपैनियन डिवाइस दूसरे डिवाइस से जोड़ना.
Android पर ब्लूटूथ का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, ब्लूटूथ गाइड देखें. इसके लिए Android 8.0 (एपीआई लेवल 26) के लिए खास तौर पर ब्लूटूथ में होने वाले बदलावों के बारे में जानने के लिए, ब्लूटूथ सेक्शन Android 8.0 व्यवहार में बदलाव पेज.
शेयर करें
स्मार्ट शेयरिंग
Android 8.0 (एपीआई लेवल 26), उपयोगकर्ताओं की शेयर करने की दिलचस्पी के मुताबिक बनी प्राथमिकताओं के बारे में जानता है. साथ ही, यह हर तरह के कॉन्टेंट के लिए यह बेहतर तरीके से समझता है कि उसे किन ऐप्लिकेशन के साथ शेयर करना चाहिए. उदाहरण के लिए, अगर कोई उपयोगकर्ता रसीद की फ़ोटो लेता है, तो Android पर 8.0 खर्च ट्रैक करने वाले ऐप्लिकेशन का सुझाव दे सकता है; अगर उपयोगकर्ता सेल्फ़ी लेता है, तो ऐप्लिकेशन, इमेज को बेहतर तरीके से हैंडल कर सकता है. Android 8.0 अपने आप ही ये सभी चीज़ें सीख लेता है उपयोगकर्ताओं के पैटर्न आपकी पसंद के हिसाब से.
स्मार्ट शेयरिंग की सुविधा, image
के अलावा audio
, video
, text
, URL
वगैरह जैसे कॉन्टेंट के लिए भी काम करती है.
स्मार्ट शेयरिंग की सुविधा चालू करने के लिए, कॉन्टेंट शेयर करने वाले इंटेंट में ज़्यादा से ज़्यादा तीन स्ट्रिंग एनोटेशन का ArrayList
जोड़ें. एनोटेशन में, कॉन्टेंट के मुख्य कॉम्पोनेंट या विषयों के बारे में बताया जाना चाहिए. यहां दिए गए कोड के उदाहरण में, इंटेंट में एनोटेशन जोड़ने का तरीका बताया गया है:
Kotlin
val annotations: ArrayList<String> = arrayListOf( "topic1", "topic2", "topic3" ) intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations )
Java
ArrayList<String> annotations = new ArrayList<>(); annotations.add("topic1"); annotations.add("topic2"); annotations.add("topic3"); intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations );
स्मार्ट तरीके से शेयर करने की सुविधा वाले एनोटेशन के बारे में ज़्यादा जानने के लिए, देखें
EXTRA_CONTENT_ANNOTATIONS
.
टेक्स्ट की श्रेणी तय करने वाला
साथ काम करने वाले डिवाइसों पर, ऐप्लिकेशन नए टेक्स्ट क्लासिफ़ायर का इस्तेमाल करके यह जांच सकते हैं कि कोई स्ट्रिंग, क्लासिफ़ायर की किसी इकाई के टाइप से मेल खाती है या नहीं. साथ ही, उन्हें चुनने के लिए वैकल्पिक सुझाव भी मिल सकते हैं. सिस्टम से पहचानी गई इकाइयों में पते, यूआरएल,
टेलीफ़ोन नंबर, और ईमेल पते. ज़्यादा जानकारी के लिए, यह देखें
TextClassifier
.
सुलभता
Android 8.0 (एपीआई लेवल 26), सुलभता से जुड़ी कई नई सुविधाओं के साथ काम करता है. ये सुविधाएं, उन डेवलपर के लिए उपलब्ध हैं जो सुलभता से जुड़ी अपनी सेवाएं बनाते हैं:
- अडजस्ट करने के लिए, आवाज़ की एक नई कैटगरी सुलभता वॉल्यूम.
- इनपुट के तरीके के तौर पर फ़िंगरप्रिंट जेस्चर.
- एक से ज़्यादा भाषाओं में लिखाई को बोली में बदलने की सुविधा.
- हार्डवेयर-आधारित सुलभता शॉर्टकट का इस्तेमाल करके, अपनी पसंदीदा सुलभता सेवा को फटाफट ऐक्सेस करें.
- लगातार किए जाने वाले जेस्चर या स्ट्रोक के प्रोग्राम के क्रम के लिए सहायता.
- अगर आप सुलभता बटन. यह सुविधा सिर्फ़ उन डिवाइसों पर उपलब्ध है जो सॉफ़्टवेयर की मदद से रेंडर किए गए नेविगेशन एरिया का इस्तेमाल करते हैं.
- मानक एकतरफ़ा रेंज की वैल्यू.
- टेक्स्ट को आसानी से प्रोसेस करने के लिए कई सुविधाएं. इनमें, स्क्रीन पर मौजूद टेक्स्ट वर्णों की जगहों और टेक्स्ट के लिए हिंट की जानकारी शामिल है.
सुरक्षा और निजता
अनुमतियां
Android 8.0 (एपीआई लेवल 26) में, टेलीफ़ोनी से जुड़ी कई नई अनुमतियां दी गई हैं:
-
ANSWER_PHONE_CALLS
अनुमति से, आपके ऐप्लिकेशन को प्रोग्राम के हिसाब से, इनकमिंग फ़ोन कॉल का जवाब देने की अनुमति मिलती है. आने वाले फ़ोन कॉल को इतने समय में हैंडल करने के लिए तो आप इसका इस्तेमाल कर सकते हैंacceptRingingCall()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका. -
READ_PHONE_NUMBERS
अनुमति से, आपके ऐप्लिकेशन को डिवाइस में सेव किए गए फ़ोन नंबर को पढ़ने का ऐक्सेस मिलता है.
इन दोनों को
खतरनाक
और वे दोनों इसका हिस्सा हैं
PHONE
अनुमतियों का ग्रुप.
खाते का ऐक्सेस और डिस्कवरी एपीआई के लिए नए वर्शन
Android 8.0 (एपीआई लेवल 26) की मदद से, कई सुधार किए गए हैं ऐप्लिकेशन को उपयोगकर्ता खातों का ऐक्सेस मिल जाता है. जिन खातों को वे मैनेज करते हैं उनके लिए, पुष्टि करने वाले लोग अपनी नीति के आधार पर यह तय कर सकते हैं कि किसी व्यक्ति के खातों को छिपाना है या नहीं, या किसी ऐप्लिकेशन पर खाते दिखाने का विकल्प होता है. Android सिस्टम ऐसे ऐप्लिकेशन ट्रैक करता है जो किसी खाते को ऐक्सेस करने के लिए प्रोत्साहित करें.
Android के पिछले वर्शन में, वे ऐप्लिकेशन जो
उपयोगकर्ता खातों को सभी खातों के बारे में अपडेट पाने थे, जिनमें वे खाते भी शामिल हैं
अलग-अलग तरह के होते हैं. Android 8.0 में addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
तरीका जोड़ा गया है. इससे ऐप्लिकेशन उन खाता टाइप की सूची तय कर सकते हैं जिनमें खाते में हुए बदलावों की सूचना मिलनी चाहिए.
एपीआई में हुए बदलाव
खाता मैनेजर छह नए तरीके मुहैया कराता है, ताकि पुष्टि करने वाले लोग यह मैनेज कर सकें कि ऐप्लिकेशन, खाते को देख सकते हैं:
setAccountVisibility(android.accounts.Account, java.lang.String, int)
: यह नीति किसी उपयोगकर्ता खाते और पैकेज के दिखने का लेवल सेट करती है संयोजन.-
getAccountVisibility(android.accounts.Account, java.lang.String)
: किसी खास उपयोगकर्ता खाते और पैकेज के लिए विज़िबिलिटी का लेवल मिलता है संयोजन. -
getAccountsAndVisibilityForPackage(java.lang.String, java.lang.String)
: पुष्टि करने वाले टूल को किसी पैकेज के लिए, खाते और 'किसको दिखे' के लेवल की जानकारी पाने की अनुमति देता है. -
getPackagesAndVisibilityForAccount(android.accounts.Account)
: पुष्टि करने वालों को, दिए गए खाते के स्टोर किए गए 'किसे दिखे' वैल्यू पाने की अनुमति देता है. -
addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle, java.util.Map<java.lang.String, java.lang.Integer>)
: यह पुष्टि करने वाले एजेंट को, किसी खाते की दिखने की वैल्यू को शुरू करने की अनुमति देता है. -
addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
: इससेOnAccountsUpdateListener
लिसनर जुड़ जाता हैAccountManager
ऑब्जेक्ट. सिस्टम इस लिसनर को कॉल करता है जब भी डिवाइस पर खातों की सूची बदलती है.
Android 8.0 (एपीआई लेवल 26) में, पैकेज के नाम की दो खास वैल्यू उपलब्ध कराई गई हैं. इनकी मदद से, यह तय किया जा सकता है कि पैकेज किसको दिखे
उन एप्लिकेशन के लिए स्तर जिन्हें
setAccountVisibility(android.accounts.Account, java.lang.String, int)
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
तरीका. PACKAGE_NAME_KEY_LEGACY_VISIBLE
दिखने की वैल्यू, उन ऐप्लिकेशन पर लागू होती है जिनके पास GET_ACCOUNTS
अनुमति है और जो Android 8.0 से पहले के वर्शन को टारगेट करते हैं. इसके अलावा, यह वैल्यू उन ऐप्लिकेशन पर भी लागू होती है जिनके हस्ताक्षर, किसी भी Android वर्शन को टारगेट करने वाले ऑथेंटिकेटर से मेल खाते हैं.
PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE
, उन ऐप्लिकेशन के लिए डिफ़ॉल्ट तौर पर दिखने की वैल्यू देता है जिन्हें पहले सेट नहीं किया गया था और जिन पर PACKAGE_NAME_KEY_LEGACY_VISIBLE
लागू नहीं होता.
खाते के ऐक्सेस और डिस्कवरी एपीआई के नए वर्शन के बारे में ज़्यादा जानकारी के लिए, AccountManager
और OnAccountsUpdateListener
के लिए रेफ़रंस देखें.
टेस्ट करना
इंस्ट्रूमेंटेशन टेस्टिंग
Android 8.0 (एपीआई लेवल 26), आपके ऐप्लिकेशन के इंस्ट्रूमेंटेशन टेस्ट के लिए, यहां दी गई अतिरिक्त सहायता उपलब्ध कराता है.
डिफ़ॉल्ट ऐप्लिकेशन प्रोसेस के बजाय, अन्य प्रोसेस के लिए चलाना
अब यह तय किया जा सकता है कि कोई खास इंस्ट्रूमेंटेशन टेस्ट, आपके ऐप्लिकेशन की डिफ़ॉल्ट प्रोसेस के बाहर की किसी प्रोसेस के लिए चलाया जाए. यह कॉन्फ़िगरेशन तब काम आता है, जब आपके ऐप्लिकेशन में अलग-अलग प्रोसेस में चलने वाली कई गतिविधियां हों.
डिफ़ॉल्ट प्रोसेस इंस्ट्रूमेंटेशन को तय करने के लिए, अपनी मेनिफ़ेस्ट फ़ाइल पर जाएं. इसके बाद, अपनी पसंद के
<instrumentation>
एलिमेंट पर जाएं. android:targetProcess
एट्रिब्यूट जोड़ें और इसकी वैल्यू को इनमें से किसी एक पर सेट करें:
- किसी खास प्रोसेस का नाम.
- प्रोसेस के नामों की कॉमा-सेपरेटेड लिस्ट.
- वाइल्डकार्ड (
"*"
), जिससे इंस्ट्रूमेंटेशन कोandroid:targetPackage
एट्रिब्यूट में बताए गए पैकेज में कोड को चलाने वाली किसी भी लॉन्च की गई प्रोसेस के लिए चलाया जा सकता है.
इंस्ट्रुमेंटेशन टेस्ट करते समय, यह देखा जा सकता है कि कौनसी प्रोसेस
इसे getProcessName()
पर कॉल करके टेस्ट किया जा रहा है.
टेस्ट के दौरान नतीजों की शिकायत करना
अब इंस्ट्रुमेंटेशन टेस्ट पूरा होने के दौरान भी नतीजों की रिपोर्ट की जा सकती है,
बाद में कॉल करने के बजाय, addResults()
पर कॉल करें.
टेस्ट के लिए मॉक इंटेंट
Android 8.0 (एपीआई लेवल 26) में onStartActivity()
तरीका जोड़ा गया है. इससे, आपके ऐप्लिकेशन की गतिविधियों के लिए, अलग-अलग और स्वतंत्र यूज़र इंटरफ़ेस (यूआई) टेस्ट बनाना आसान हो जाता है. आप इस विधि को
किसी खास इवेंट को मैनेज करने के लिए, Instrumentation.ActivityMonitor
क्लास
इंटेंट, जिसे आपकी टेस्ट क्लास शुरू करती है.
जब आपकी टेस्ट क्लास इंटेंट को कॉल करती है, तो यह तरीका इंटेंट को खुद से लागू करने के बजाय, स्टबInstrumentation.ActivityResult
ऑब्जेक्ट दिखाता है. अपने टेस्ट में इस मॉक इंटेंट लॉजिक का इस्तेमाल करके, इस बात पर फ़ोकस किया जा सकता है कि आपकी ऐक्टिविटी, किसी दूसरी ऐक्टिविटी या किसी पूरी तरह से अलग ऐप्लिकेशन को पास किए गए इंटेंट को कैसे तैयार और मैनेज करती है.
रनटाइम और टूल
प्लैटफ़ॉर्म ऑप्टिमाइज़ेशन
Android 8.0 (एपीआई लेवल 26) में, प्लैटफ़ॉर्म के लिए रनटाइम और अन्य ऑप्टिमाइज़ेशन की सुविधाएं जोड़ी गई हैं. इनकी वजह से, परफ़ॉर्मेंस में कई सुधार हुए हैं. इन ऑप्टिमाइज़ेशन में, एक साथ कई आइटम को कम जगह में रखने की सुविधा, मेमोरी का ज़्यादा बेहतर तरीके से इस्तेमाल करना, और कोड लोकलिटी शामिल है.
इन ऑप्टिमाइज़ेशन से बूट करने में कम समय लगता है. साथ ही, दोनों में बेहतर परफ़ॉर्मेंस मिलती है ओएस और ऐप्लिकेशन.
अपडेट की गई Java भाषा समर्थन
Android 8.0 (एपीआई लेवल 26) में, कई अन्य OpenJDK Java API के लिए सहायता जोड़ी गई है:
- OpenJDK 8 से
java.time
. - OpenJDK 7 में
java.nio.file
औरjava.lang.invoke
.
जोड़े गए इन नए पैकेज में मौजूद क्लास और तरीकों के बारे में ज़्यादा जानने के लिए, एपीआई रेफ़रंस दस्तावेज़ देखें.
अगर आपको Android Studio में Java 8 की सुविधाओं का इस्तेमाल करना है, तो आपको नया झलक वाला वर्शन डाउनलोड करना चाहिए.
ICU4J Android Framework के अपडेट किए गए एपीआई
Android 8.0 (एपीआई लेवल 26)
ICU4J Android फ़्रेमवर्क
एपीआई—जो ऐप्लिकेशन डेवलपर के लिए ICU4J एपीआई का सबसेट है
android.icu
पैकेज के तहत इस्तेमाल करें. ये एपीआई, स्थानीय भाषा के अनुसार डेटा इस्तेमाल करते हैं
डिवाइस पर मौजूद है, ताकि आप कंपाइल न करके अपने APK फ़ुटप्रिंट को कम कर सकें
आपके APK में ICU4J लाइब्रेरी मौजूद हैं.
टेबल 1. Android में इस्तेमाल किए गए ICU, CLDR, और यूनिकोड के वर्शन.
Android एपीआई लेवल | ICU का वर्शन | CLDR का वर्शन | यूनिकोड वर्शन |
---|---|---|---|
Android 7.0 (एपीआई लेवल 24), Android 7.1 (एपीआई लेवल 25) | 56 | 28 | 8.0 |
Android 8.0 (एपीआई लेवल 26) | 58.2 | 30.0.3 | 9.0 |
Android पर अंतर्राष्ट्रीयकरण करने के बारे में ज़्यादा जानकारी के लिए, जिसमें ICU4J समर्थन, देखें Android पर अंतरराष्ट्रीय मानकों का पालन करना.
Android एंटरप्राइज़
चल रहे डिवाइसों के लिए, एंटरप्राइज़ से जुड़ी नई सुविधाएं और एपीआई लॉन्च किए गए हैं Android 8.0 (एपीआई लेवल 26). हाइलाइट में ये शामिल हैं:
- पूरी तरह से मैनेज किए जा रहे डिवाइसों पर वर्क प्रोफ़ाइल का इस्तेमाल करके, एंटरप्राइज़ अलग-अलग डिवाइसों पर काम कर सकते हैं मैनेज किया जा सकता है.
- एपीआई का ऐक्सेस देने की सुविधा की मदद से, डिवाइस के मालिक और प्रोफ़ाइल के मालिक, ऐप्लिकेशन मैनेज करने की अनुमति दूसरे ऐप्लिकेशन को असाइन कर सकते हैं.
- प्रावधान करने के फ़्लो में उपयोगकर्ता अनुभव में किए गए सुधार (इनमें नए बदलाव भी शामिल हैं कस्टमाइज़ करने के विकल्प) से सेटअप समय कम हो जाता है.
- एंटरप्राइज़ को ब्लूटूथ, वाई-फ़ाई, बैकअप, और सुरक्षा के लिए नए कंट्रोल दें डिवाइस की ज़्यादा से ज़्यादा जानकारी मैनेज करने में मदद मिलती है. नेटवर्क पर की गई गतिविधि लॉग करने से एंटरप्राइज़ को ट्रैक करने में मदद मिलती है की समस्याओं को हल करना.
इन और Android Enterprise के अन्य नए एपीआई और सुविधाओं के बारे में ज़्यादा जानने के लिए, Android in the Enterprise देखें.