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
को `true` पर तब, जब आपकी गतिविधि अन्य
मल्टी-विंडो मोड.)
Android 8.0 (एपीआई लेवल 26) में एक नया ऑब्जेक्ट, PictureInPictureParams
,
इसे पीआईपी (पिक्चर में पिक्चर) तरीकों में पास किया जाता है, ताकि यह बताया जा सके कि किसी गतिविधि को कैसे काम करना चाहिए
जब यह पीआईपी मोड में होता है. यह ऑब्जेक्ट, इस तरह की प्रॉपर्टी के बारे में बताता है
गतिविधि का पसंदीदा आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) चुनें.
इसमें बताई गई मौजूदा पीआईपी तरीकों की जानकारी जोड़ना पिक्चर में पिक्चर मोड को अब Android TV पर ही नहीं, बल्कि सभी Android डिवाइसों पर इस्तेमाल किया जाता है. इसके अलावा, Android 8.0, Android 8.0 इस्तेमाल करने के लिए ये तरीके उपलब्ध कराता है पीआईपी मोड:
Activity.enterPictureInPictureMode(PictureInPictureParams args)
: गतिविधि को 'पिक्चर में पिक्चर' मोड में रखता है. गतिविधि का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) और अन्य कॉन्फ़िगरेशन सेटिंग, args तय करता है. अगर कोई फ़ील्ड args में खाली हैं, तो सिस्टम उन वैल्यू का इस्तेमाल करता है जो आपने पिछली बार सेट किए थेActivity.setPictureInPictureParams()
नाम का इस्तेमाल करें.बताई गई गतिविधि को स्क्रीन के कोने में रखा गया है; बाकी स्क्रीन पर, स्क्रीन पर की गई पिछली गतिविधि की जानकारी मौजूद होगी. पीआईपी मोड में जाने वाली गतिविधि 'रुका हुआ' मोड में चली जाती है. हालांकि, यह रुकी रहती है शुरू किया गया. अगर उपयोगकर्ता पीआईपी गतिविधि पर टैप करता है, तो सिस्टम उपयोगकर्ता, जिससे इंटरैक्ट करना है; गतिविधि होने पर, कोई भी टच इवेंट उस तक नहीं पहुंचता PIP स्थिति में.
-
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 (एपीआई लेवल 26) में, सूचना के तौर पर मेन्यू को देर तक दबाकर रखें.](https://developer.android.google.cn/static/images/about/versions/oreo/notification-long-press.png?authuser=0000&hl=hi)
उपयोगकर्ता, ऐप्लिकेशन लॉन्चर आइकॉन को देखने के लिए उन्हें दबाकर रख सकते हैं सूचनाएं पाने की सुविधा चालू की है.
अपने-आप भरने वाला फ़्रेमवर्क
खाता बनाने, लॉगिन करने, और क्रेडिट कार्ड से लेन-देन करने में समय लगता है. साथ ही, इनके ज़रिए गड़बड़ियां हैं. उपयोगकर्ता ऐसे ऐप्लिकेशन से परेशान हो सकते हैं जिनके लिए इस तरह के ऐप्लिकेशन की ज़रूरत होती है बार-बार किए जाने वाले टास्क पर निर्भर करता है.
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
ऑब्जेक्ट जो आपके ऐप्लिकेशन में वेब कॉन्टेंट दिखाते हैं.
इन एपीआई से, आपके ऐप्लिकेशन की स्थिरता और सुरक्षा को बेहतर बनाने में मदद मिलती है. इनमें ये एपीआई शामिल हैं
फ़ॉलो किया जा रहा है:
- वर्शन एपीआई
- Google सुरक्षित ब्राउज़िंग एपीआई
- खत्म करने का हैंडल एपीआई
- रेंडरर इंपोर्टेंस एपीआई
इन API का उपयोग करने के तरीके के बारे में ज़्यादा जानने के लिए, यहां देखें वेबव्यू मैनेज करना.
बेहतर सुरक्षा के लिए, WebView
क्लास में अब सुरक्षित ब्राउज़िंग एपीआई शामिल किया गया है
वेब ब्राउज़िंग के दौरान करते हैं. ज़्यादा जानकारी के लिए, यह देखें
Google सुरक्षित ब्राउज़िंग एपीआई.
शॉर्टकट और विजेट पिन करना
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 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 के साथ काम करने वाला लाइब्रेरी मॉड्यूल.
ऐनिमेटरसेट
Android 8.0 (एपीआई लेवल 26) के बाद के वर्शन में, AnimatorSet
API अब वीडियो पर आगे/पीछे जाने और वीडियो चलाने की सुविधा देता है
करें. खोजने की सुविधा की मदद से, ऐनिमेशन सेट की पोज़िशन खास पर सेट की जा सकती है
पॉइंट. अगर आपके ऐप्लिकेशन में ऐनिमेशन शामिल हैं, तो रिवर्स में चलाना फ़ायदेमंद होता है
का इस्तेमाल करें. दो अलग-अलग ऐनिमेशन परिभाषित करने के बजाय
सेट है, तो उसी को उलटा भी चलाया जा सकता है.
इनपुट और नेविगेशन
कीबोर्ड नेविगेशन क्लस्टर
अगर आपके ऐप्लिकेशन में कोई गतिविधि किसी जटिल व्यू हैरारकी का इस्तेमाल करती है, जैसे कि दूसरी इमेज, यूज़र इंटरफ़ेस (यूआई) एलिमेंट के ग्रुप को क्लस्टर में व्यवस्थित करना, ताकि उन्हें आसानी से व्यवस्थित किया जा सके कीबोर्ड नेविगेशन. उपयोगकर्ता, चालू करने के लिए Meta+Tab या Search+Tab दबा सकते हैं एक क्लस्टर से दूसरे क्लस्टर में जाने के लिए, Chromebook डिवाइस. इसके अच्छे उदाहरण क्लस्टर में ये शामिल हैं: साइड पैनल, नेविगेशन बार, मुख्य कॉन्टेंट एरिया, और एलिमेंट जिसमें कई चाइल्ड एलिमेंट शामिल हो सकते हैं.
![किसी गतिविधि के उदाहरण में, पांच नेविगेशन क्लस्टर शामिल होते हैं. इन क्लस्टर को उपयोगकर्ता
नेविगेट करने के लिए, कीबोर्ड नेविगेशन क्लस्टर का शॉर्टकट इस्तेमाल कर सकता है. क्लस्टर
ये क्रम में दिखते हैं: सबसे ऊपर मौजूद पैनल, बाईं ओर मौजूद साइड पैनल, मुख्य कॉन्टेंट
क्षेत्र, बॉटम पैनल, और फ़्लोट करने वाला ऐक्शन बटन.](https://developer.android.google.cn/static/images/about/versions/oreo/keyboard-navigation-clusters.png?authuser=0000&hl=hi)
View
या ViewGroup
एलिमेंट बनाने के लिए
के आधार पर,
android:keyboardNavigationCluster
एट्रिब्यूट
एलिमेंट के लेआउट की एक्सएमएल फ़ाइल में true
या true
पास करें
के यूज़र इंटरफ़ेस (यूआई) लॉजिक में setKeyboardNavigationCluster()
में.
ध्यान दें: क्लस्टर को नेस्ट नहीं किया जा सकता, भले ही वे नेस्ट न किए गए हों
क्लस्टर, क्रम के अलग-अलग लेवल पर दिख सकते हैं. अगर आपको
नेस्ट क्लस्टर है, तो फ़्रेमवर्क सिर्फ़ सबसे ऊपर के
क्लस्टर के रूप में ViewGroup
एलिमेंट.
टचस्क्रीन वाले डिवाइसों पर, क्लस्टर की कैटगरी के हिसाब से सेट किया जा सकता है
ViewGroup
ऑब्जेक्ट
android:touchscreenBlocksFocus
एलिमेंट को true
से
सिर्फ़ क्लस्टर के हिसाब से नेविगेशन की अनुमति देनी होगी. अगर आप इसे लागू करते हैं, तो
किसी क्लस्टर को कॉन्फ़िगर नहीं किया है, तो उपयोगकर्ता नीचे दिए गए काम करने के लिए, Tab बटन या ऐरो बटन का इस्तेमाल नहीं कर सकते
क्लस्टर में या उससे बाहर जाने के लिए; उन्हें क्लस्टर नेविगेशन दबाना होगा
कीबोर्ड कॉम्बिनेशन का इस्तेमाल करें.
डिफ़ॉल्ट फ़ोकस देखें
Android 8.0 (एपीआई लेवल 26) में, आपके पास यह असाइन करने का View
विकल्प होता है
(फिर से बनाई गई गतिविधि फिर से शुरू होने और उपयोगकर्ता द्वारा
कीबोर्ड नेविगेशन कुंजी, जैसे कि Tab बटन. "डिफ़ॉल्ट रूप से फ़ोकस किया गया" वाली इस सुविधा को लागू करने के लिए
सेटिंग है, तो 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)
एपीआई, जो अपने-आप हट जाएगा
आपके अनुरोध को पूरा करने के लिए, कैश मेमोरी में सेव की गई अन्य ऐप्लिकेशन (ज़रूरत के हिसाब से) फ़ाइलें. यह तय करते समय कि
डिवाइस में नया डेटा सेव करने के लिए, डिस्क में ज़रूरत के मुताबिक स्टोरेज बचा है.
इस्तेमाल करने के बजाय getAllocatableBytes(UUID)
getUsableSpace()
, क्योंकि पूर्व कुंजी कैश मेमोरी में सेव की गई किसी भी वैल्यू को
वह डेटा जिसे सिस्टम आपकी ओर से हटाना चाहता है.
कॉन्टेंट देने वालों के लिए पेजिंग
हमने बड़ी संख्या में लोड करने के लिए सहायता शामिल करने के लिए सामग्री देने वालों को अपडेट किया है डेटासेट को एक बार में एक पेज पर सेट करें. उदाहरण के लिए, कोई ऐसा फ़ोटो ऐप्लिकेशन जिसमें हज़ारों इमेज किसी पेज पर मौजूद डेटा के किसी सबसेट के लिए क्वेरी कर सकती हैं. हर पेज ऐसे परिणाम जो कॉन्टेंट उपलब्ध कराने वाले किसी व्यक्ति ने लौटाए हैं, उन्हें एक कर्सर से दिखाया जाता है ऑब्जेक्ट है. पेज व्यू का इस्तेमाल करने के लिए, क्लाइंट और सेवा देने वाली कंपनी, दोनों को यह सुविधा.
कॉन्टेंट देने वालों के लिए किए गए बदलावों से जुड़ी ज़्यादा जानकारी के लिए, देखें
ContentProvider
और
ContentProviderClient
.
कॉन्टेंट को अपडेट कराने के अनुरोध
ContentProvider
और
ContentResolver
क्लास में अब हर क्लास में
refresh()
तरीके का इस्तेमाल करके, क्लाइंट आसानी से यह जान सकते हैं कि क्या
वे जो जानकारी मांगते हैं वह अप-टू-डेट है.
अपनी रिपोर्ट को रीफ़्रेश करके, कस्टम कॉन्टेंट रीफ़्रेश करने वाला लॉजिक जोड़ा जा सकता है
ContentProvider
. पक्का करें कि आपने
सामान लौटाने का refresh()
तरीका
true
से कंपनी के क्लाइंट को पता चलता है कि आपने
का इस्तेमाल करें.
आपका क्लाइंट ऐप्लिकेशन
भिन्न विधि, जिसे यह भी कहा जाता है
refresh()
. इसे कॉल करते समय
तरीका है, तो रीफ़्रेश करने के लिए डेटा के यूआरआई को पास करें.
ध्यान दें: शायद आपने नेटवर्क से डेटा पाने का अनुरोध किया है,
आपको refresh()
यहां से शुरू करना चाहिए
तब ही क्लाइंट-साइड को शामिल करना होगा, जब इस बात का पुख्ता संकेत हो कि कॉन्टेंट पुराना है.
इस तरह का कॉन्टेंट रीफ़्रेश करने की सबसे आम वजह यह है कि
रीफ़्रेश करने के लिए स्वाइप करें
जेस्चर, साफ़ तौर पर मौजूदा यूज़र इंटरफ़ेस (यूआई) से अप-टू-डेट कॉन्टेंट दिखाने का अनुरोध करना.
JobScheduler में सुधार
Android 8.0 (एपीआई लेवल 26) की मदद से, JobScheduler
में कई सुधार किए गए हैं. इन सुधारों से, आपके ऐप्लिकेशन को बेहतर बनाना आसान हो जाता है
नई बैकग्राउंड की सेटिंग का पालन करने के लिए
लागू करने की सीमा होती है, क्योंकि आम तौर पर आप
बैकग्राउंड में चलने वाली सेवाओं या इंप्लिसिट ब्रॉडकास्ट रिसीवर.
JobScheduler
के अपडेट में ये शामिल हैं:
-
अब आप शेड्यूल किए गए जॉब के साथ काम की सूची जोड़ सकते हैं. इसमें वर्क आइटम जोड़ने के लिए
काम की सूची, कॉल
JobScheduler.enqueue()
. काम के दौरान, यह बचे हुए काम को सूची से हटाकर प्रोसेस कर सकता है. यह सुविधा, इस्तेमाल के ऐसे कई मामलों को हैंडल करती है जो पहले होते उन सेवाओं को शुरू करने के लिए कहा जाता है जो बैकग्राउंड में चलने वाली सेवाIntentService
. -
Android
सहायता लाइब्रेरी 26.0.0 में एक नई
JobIntentService
क्लास जोड़ी गई है. यह क्लास भी उपलब्ध हैIntentService
के तौर पर काम करता है, लेकिन इसके बजाय जॉब का इस्तेमाल करता है सेवाएं, जो Android 8.0 (एपीआई लेवल 26) या उसके बाद वाले वर्शन पर काम करती हों. -
अब आपके पास कॉल करने का विकल्प है
JobInfo.Builder.setClipData()
ClipData
को नौकरी के साथ जोड़ने के लिए. यह विकल्प चालू करने पर, आप यूआरआई की अनुमतियों को किसी जॉब से जोड़ सकते हैं. यह ठीक वैसे ही होता है जैसे ये अनुमतियांContext.startService()
को दी जा सकती हैं. इंटेंट के साथ यूआरआई की अनुमतियों का भी इस्तेमाल किया जा सकता है काम की कतार में है. -
शेड्यूल की गई जॉब अब कई नई पाबंदियों के साथ काम करती हैं:
JobInfo.isRequireStorageNotLow()
- डिवाइस में उपलब्ध मेमोरी कम होने पर जॉब नहीं चलता.
JobInfo.isRequireBatteryNotLow()
- अगर बैटरी का लेवल ज़रूरी लेवल पर या उससे कम है, तो जॉब नहीं चलता थ्रेशोल्ड; यह वह लेवल है जिस पर डिवाइस कम बैटरी दिखाता है चेतावनी सिस्टम डायलॉग.
NETWORK_TYPE_METERED
- नौकरी के लिए सीमित डेटा वाले नेटवर्क कनेक्शन की ज़रूरत होती है, जैसे कि ज़्यादातर मोबाइल डेटा प्लान हैं.
कस्टम डेटा स्टोर
Android 8.0 (एपीआई लेवल 26) की मदद से, अपनी पसंद के मुताबिक कस्टम डेटा स्टोर उपलब्ध कराया जा सकता है. इससे ये काम किए जा सकते हैं तब काम आ सकता है, जब आपका ऐप्लिकेशन इन प्राथमिकताओं को क्लाउड या लोकल डेटाबेस में सेव करता है या अगर प्राथमिकताएं डिवाइस के हिसाब से हों. इसके बारे में ज़्यादा जानकारी पाने के लिए, डेटा स्टोर को लागू करना. इसे लागू करने के लिए, कस्टम डेटा स्टोर.
मीडिया को बेहतर बनाने की सुविधा
वॉल्यूम शेपर
VolumeShaper
में एक नई क्लास है. इस्तेमाल की जाने वाली चीज़ें
इसे फ़ेड-इन, फ़ेड-आउट, और क्रॉस फ़ेड जैसे छोटे ऑटोमेटेड वॉल्यूम ट्रांज़िशन करने के लिए, इस्तेमाल किया जाता है.
वॉल्यूम शेपर की मदद से ऐंप्लीट्यूड को कंट्रोल करना लेख पढ़ें
ज़्यादा जानने के लिए.
ऑडियो फ़ोकस को बेहतर बनाने की सुविधा
ऑडियो ऐप्लिकेशन, ऑडियो फ़ोकस का अनुरोध करके और उसे रद्द करके, डिवाइस पर ऑडियो आउटपुट शेयर करते हैं.
ऐप्लिकेशन, प्लेबैक को शुरू या बंद करके या वॉल्यूम को कम करके, फ़ोकस में होने वाले बदलावों को मैनेज करता है.
AudioFocusRequest
में एक नई क्लास है. इस क्लास का इस्तेमाल इसके पैरामीटर के तौर पर करना
requestAudioFocus()
,
ऑडियो फ़ोकस में बदलावों को मैनेज करते समय, ऐप्लिकेशन में नई सुविधाएं उपलब्ध हैं:
ऑटोमैटिक डकिंग और
देर से फ़ोकस गेन करने की सुविधा मिलती है.
मीडिया मेट्रिक
getMetrics()
का नया तरीका इस्तेमाल करने से PersistableBundle
मिलता है
ऑब्जेक्ट में कॉन्फ़िगरेशन है
और परफ़ॉर्मेंस की जानकारी, जिसे एट्रिब्यूट और वैल्यू को मैप करके दिखाया जाता है.
इन मीडिया क्लास के लिए, getMetrics()
तरीका तय किया गया है:
MediaPlayer.getMetrics()
MediaRecorder.getMetrics()
MediaCodec.getMetrics()
MediaExtractor.getMetrics()
मेट्रिक को हर इंस्टेंस के लिए अलग-अलग इकट्ठा किया जाता है और ये इंस्टेंस की लाइफ़टाइम वैल्यू. अगर कोई मेट्रिक उपलब्ध नहीं है, तो तरीका वापस करने का तरीका शून्य. दिखाई जाने वाली असल मेट्रिक क्लास पर निर्भर करती हैं.
मीडिया प्लेयर
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 फ़ाइल, सेक्शन में बताए गए TextMetaDataSampleEntry
का इस्तेमाल करती है
12.3.3.2 के तहत, मेटाडेटा के माइम फ़ॉर्मैट का संकेत देने के लिए ISOBMFF का 12.3.3.2. मेटाडेटा ट्रैक वाली फ़ाइल एक्सट्रैक्ट करने के लिए, 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) में, स्टोरेज ऐक्सेस फ़्रेमवर्क का इस्तेमाल करते समय
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 स्टैंडर्ड के साथ काम करने की सुविधा, जो गाने की लाइब्रेरी में ब्राउज़िंग की सुविधा देती है.
- ब्लूटूथ लो-एनर्जी (BLE) 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 वर्शन हो या जिसके लिए
हस्ताक्षर, 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 एपीआई इस्तेमाल किए जा सकते हैं:
- OpenJDK 8 से
java.time
दूर. - OpenJDK 7 से
java.nio.file
औरjava.lang.invoke
.
इन नए जोड़े गए क्लास और तरीकों के बारे में ज़्यादा जानने के लिए के पैकेज में शामिल हैं, तो API संदर्भ दस्तावेज़ देखें.
यदि आपको Android Studio में Java 8 की भाषा की सुविधाओं का इस्तेमाल करना चाहिए, तो आपको नए वर्शन की झलक डाउनलोड करें.
अपडेट किए गए ICU4J Android Framework API
Android 8.0 (एपीआई लेवल 26)
ICU4J Android फ़्रेमवर्क
एपीआई—जो ऐप्लिकेशन डेवलपर के लिए ICU4J एपीआई का सबसेट है
android.icu
पैकेज के तहत इस्तेमाल करें. ये एपीआई, स्थानीय भाषा के अनुसार डेटा इस्तेमाल करते हैं
डिवाइस पर मौजूद है, ताकि आप कंपाइल न करके अपने APK फ़ुटप्रिंट को कम कर सकें
आपके APK में ICU4J लाइब्रेरी मौजूद हैं.
टेबल 1. ICU, CLDR, और यूनिकोड वर्शन का इस्तेमाल किया गया Android में.
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 API और सुविधाओं के बारे में ज़्यादा जानने के लिए, Enterprise में Android देखें.