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

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

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

वाई-फ़ाई आरटीटी की सुविधा के साथ घर के अंदर की पोज़िशन तय करना

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

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

हार्डवेयर की सुविधा वाले Android 9 वर्शन वाले डिवाइसों पर, आपके ऐप्लिकेशन RTT API: आस-पास के आरटीटी की सुविधा वाले वाई-फ़ाई ऐक्सेस पॉइंट (एपी) से दूरी. डिवाइस में जगह की जानकारी की सेटिंग चालू हो गई हों और वाई-फ़ाई स्कैनिंग की सुविधा चालू हो (इसके तहत सेटिंग > जगह की जानकारी), और आपके ऐप्लिकेशन में ACCESS_FINE_LOCATION अनुमति. आरटीटी की सुविधा का इस्तेमाल करने के लिए, डिवाइस को ऐक्सेस पॉइंट से कनेक्ट करने की ज़रूरत नहीं है. निजता बनाए रखने के लिए, सिर्फ़ फ़ोन ऐक्सेस पॉइंट; ऐक्सेस पॉइंट में यह जानकारी नहीं है.

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

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

इसमें इस्तेमाल हो रहा WiFi RTT API देखें: Android WifiRttScan का डेमो ऐप्लिकेशन.

ज़्यादा जानकारी के लिए, यह देखें वाई-फ़ाई की जगह: आरटीटी की सुविधा.

डिसप्ले कटआउट सपोर्ट

'डेवलपर के लिए सेटिंग और टूल' की स्क्रीन, जिसमें अलग-अलग कटआउट साइज़ दिखाए गए हैं

एम्युलेटर का इस्तेमाल करके, डिसप्ले कटआउट की जांच करना

Android 9 पर, नए और एज-टू-एज स्क्रीन काम करते हैं जिनमें कैमरों और स्पीकर के लिए डिसप्ले कटआउट हों. कॉन्टेंट बनाने DisplayCutout क्लास की मदद से, काम न करने वाले उन इलाकों की जगह और आकार का पता लगाया जा सकता है जहां सामग्री प्रदर्शित नहीं की जानी चाहिए. कॉन्टेंट की मौजूदगी और प्लेसमेंट तय करने के लिए इन कटआउट एरिया का इस्तेमाल करके, getDisplayCutout() तरीका.

नया विंडो लेआउट एट्रिब्यूट, layoutInDisplayCutoutMode, इससे ऐप्लिकेशन, डिवाइस के कटआउट के आस-पास अपना कॉन्टेंट दिखा पाता है. आप सेट कर सकते हैं इस एट्रिब्यूट की वैल्यू को इनमें से किसी एक वैल्यू पर सेट करें:

Android 9 वर्शन पर चलने वाले किसी भी डिवाइस या एम्युलेटर पर, स्क्रीन कटआउट को सिम्युलेट किया जा सकता है इस तरह से:

  1. डेवलपर के लिए सेटिंग और टूल को चालू करना.
  2. डेवलपर के लिए सेटिंग और टूल की स्क्रीन पर, नीचे की ओर स्क्रोल करके ड्रॉइंग सेक्शन पर जाएं और कटआउट वाले डिसप्ले को सिम्युलेट करें को चुनें.
  3. कटआउट का साइज़ चुनें.

सूचनाएं

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

मैसेज सेवा की सूचनाएं

फ़ोटो अटैच की गई मैसेजिंग स्टाइल.

मैसेज सेवा की सूचना

जवाबों और बातचीत के साथ मैसेज करने की स्टाइल.

Android 9 की सुविधाओं के साथ-साथ सूचनाओं का इस्तेमाल करने वाले सैंपल कोड के लिए, देखें लोग सैंपल.

मैसेज की बेहतर सुविधा

Android 7.0 (एपीआई लेवल 24) में, जवाब देने के लिए कोई कार्रवाई जोड़ी जा सकती है या सीधे नोटिफ़िकेशन से अन्य लेख दर्ज करें. Android 9 बेहतर बनाता है इस सुविधा में ये सुधार किए गए हैं:

  • बातचीत में हिस्सा लेने वालों के लिए आसान सहायता: Person क्लास का इस्तेमाल बातचीत में शामिल लोगों की पहचान करने के लिए किया जाता है. जैसे: अवतार और यूआरआई. कई अन्य एपीआई, जैसे addMessage(), अब CharSequence के बजाय Person क्लास का इस्तेमाल करें. Person क्लास बिल्डर डिज़ाइन पैटर्न का भी इस्तेमाल किया जा सकता है.

  • इमेज के लिए सहायता: Android 9 अब मैसेज सेवा की सूचनाओं में इमेज दिखाता है फ़ोन पर. इस्तेमाल करने के लिए setData() क्लिक करें. नीचे दिया गया कोड स्निपेट बताता है कि Person और इमेज वाला मैसेज बनाने के लिए.

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • जवाबों को ड्राफ़्ट के तौर पर सेव करें: आपका ऐप्लिकेशन EXTRA_REMOTE_INPUT_DRAFT जब कोई उपयोगकर्ता अनजाने में किसी मैसेज सेवा की सूचना को बंद कर देता है, तो सिस्टम यह सूचना भेजता है. इस अतिरिक्त सुविधा का इस्तेमाल, ऐप्लिकेशन में टेक्स्ट फ़ील्ड को अपने-आप भरने के लिए किया जा सकता है. इससे उपयोगकर्ता इन कामों को कर पाएंगे पूरा जवाब दें.

  • यह पहचानें कि क्या कोई बातचीत एक सामूहिक बातचीत है: आप setGroupConversation() जान-बूझकर किसी बातचीत को ग्रुप या बिना ग्रुप वाली बातचीत के तौर पर पहचाना जाता है.

  • किसी इंटेंट के लिए सिमैंटिक कार्रवाई सेट करें: setSemanticAction() तरीके की मदद से किसी कार्रवाई का मतलब वाला मतलब दिया जा सकता है, जैसे “पढ़ा गया का निशान लगाएं” "मिटाओ," "जवाब दो," वगैरह.

  • Smartजवाब: Android 9 पर, वही सुझाए गए जवाब काम करते हैं जो मैसेजिंग ऐप्लिकेशन. इस्तेमाल की जाने वाली चीज़ें RemoteInput.setChoices() का इस्तेमाल करें.

चैनल की सेटिंग, ब्रॉडकास्ट, और 'परेशान न करें' सुविधा

Android 8.0 में सूचना चैनल लॉन्च किए गए, जिसकी मदद से आप आपको जिस भी तरह की सूचना को दिखाना है उसके लिए, उपयोगकर्ता के पसंद के मुताबिक बनाया जा सकने वाला चैनल. Android 9, सूचना चैनल की सेटिंग को इन बदलावों के साथ आसान बनाता है:

  • चैनल ग्रुप ब्लॉक करना: लोग अब सभी चैनलों को ब्लॉक कर सकते हैं सूचना सेटिंग में जाकर उन्हें चालू करें. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए isBlocked() एक तरीका है, जिसकी मदद से पता लगाया जा सकता है कि किसी ग्रुप को कब ब्लॉक किया गया. इस वजह से, सूचनाएं पाने की सुविधा चालू की है.

    इसके अलावा, आपका ऐप्लिकेशन इसका इस्तेमाल करके चैनल ग्रुप की मौजूदा सेटिंग के बारे में क्वेरी कर सकता है नया getNotificationChannelGroup() तरीका.

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

  • NotificationManager.Policy ऐप्लिकेशन में, 'परेशान न करें' सुविधा की तीन नई प्राथमिकता कैटगरी मौजूद हैं:

    • PRIORITY_CATEGORY_ALARMS अलार्म को प्राथमिकता देता है.
    • PRIORITY_CATEGORY_MEDIA मीडिया और वॉइस नेविगेशन जैसे मीडिया स्रोतों की आवाज़ों को प्राथमिकता देता है.
    • PRIORITY_CATEGORY_SYSTEM सिस्टम की आवाज़ों को प्राथमिकता देता है.
  • NotificationManager.Policy में 'परेशान न करें' सुविधा के सात नए कंस्टेंट भी हैं विज़ुअल रुकावट को कम करने के लिए इसका इस्तेमाल कर सकते हैं:

    • SUPPRESSED_EFFECT_FULL_SCREEN_INTENT नोटिफ़िकेशन को फ़ुल-स्क्रीन गतिविधि लॉन्च करने से रोकता है.
    • SUPPRESSED_EFFECT_LIGHTS सूचना लाइट को ब्लॉक करती है.
    • SUPPRESSED_EFFECT_PEEK नोटिफ़िकेशन को कुछ समय के लिए व्यू में स्लाइड होने ("तांकने" से रोकने) से रोकता है.
    • SUPPRESSED_EFFECT_STATUS_BAR स्टेटस बार को सपोर्ट करने वाले डिवाइसों पर, सूचनाओं को स्टेटस बार में दिखने से रोकता है.
    • SUPPRESSED_EFFECT_BADGE उन डिवाइसों पर बैज ब्लॉक करती है जिन पर बैज काम करता है. ज़्यादा जानकारी के लिए, इसे देखें सूचना वाले बैज में बदलाव करना.
    • SUPPRESSED_EFFECT_AMBIENT यह सुविधा, ऐंबियंट डिसप्ले के साथ काम करने वाले डिवाइसों पर सूचनाओं को ब्लॉक कर देती है.
    • SUPPRESSED_EFFECT_NOTIFICATION_LIST सूचनाओं को सूची की तरह उन डिवाइसों पर दिखने से रोकता है जिन पर सूची की तरह दिखता है, जैसे कि नोटिफ़िकेशन शेड या लॉकस्क्रीन.

मल्टी-कैमरा सपोर्ट और कैमरे के अपडेट

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

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

Android 9 में मल्टी-कैमरा एपीआई उन डिवाइसों के लिए मोनोक्रोम कैमरों का इस्तेमाल करता है जिनमें FULL या LIMITED की क्षमता. मोनोक्रोम आउटपुट YUV_420_888 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़ॉर्मैट में Y का मतलब ग्रेस्केल, U (Cb) का 128, और V (Cr) का 128 है.

Android 9, बाहरी यूएसबी/यूवीसी मोड पर भी काम करता है कैमरे चालू हैं इस्तेमाल किए जा सकते हैं.

ड्रॉएबल और बिटमैप के लिए ImageDecoder

Android 9, ImageDecoder क्लास में शामिल होती हैं. यह इमेज को डिकोड करने का आधुनिक तरीका उपलब्ध कराती है. इस क्लास का इस्तेमाल करें BitmapFactory के बजाय और BitmapFactory.Options एपीआई.

ImageDecoder से आपको यह बनाने की सुविधा मिलती है Drawable या किसी बाइट बफ़र से, Bitmap फ़ाइल, या यूआरआई. इमेज को डिकोड करने के लिए, पहले कॉल करें createSource() कोड में बदली गई इमेज के सोर्स के साथ लिखें. इसके बाद, कॉल करें decodeDrawable() या decodeBitmap() ImageDecoder.Source को पास करके एक Drawable बनाने के लिए ऑब्जेक्ट दें या Bitmap. इसे बदलने के लिए डिफ़ॉल्ट सेटिंग, OnHeaderDecodedListener को decodeDrawable() या decodeBitmap(). ImageDecoder कॉल onHeaderDecoded() डिफ़ॉल्ट रूप से सेट किए गए साइज़ और चौड़ाई के हिसाब से तय करें. अगर कोड में बदली गई इमेज कोई ऐनिमेटेड GIF या WebP है, तो decodeDrawable() यह दिखाता है कि Drawable जो AnimatedImageDrawable क्लास.

इमेज प्रॉपर्टी सेट करने के लिए, अलग-अलग तरीकों का इस्तेमाल किया जा सकता है:

  • डिकोड की गई इमेज को सटीक साइज़ में बदलने के लिए, टारगेट डाइमेंशन को setTargetSize(). सैंपल साइज़ का इस्तेमाल करके भी, इमेज को स्केल किया जा सकता है. सैंपल साइज़ को सीधे इस पर पास करें setTargetSampleSize().
  • स्केल की गई इमेज की रेंज के अंदर की इमेज काटने के लिए, कॉल करें setCrop().
  • बदला जा सकने वाला बिट मैप बनाने के लिए, true को setMutableRequired().

ImageDecoder की मदद से, किसी इमेज में पसंद के मुताबिक और मुश्किल इफ़ेक्ट भी जोड़े जा सकते हैं जैसे कि गोल कोने या सर्कल मास्क. इस्तेमाल की जाने वाली चीज़ें setPostProcessor() के इंस्टेंस के साथ PostProcessor क्लास का इस्तेमाल करें.

ऐनिमेशन

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

AnimatedImageDrawable को डिकोड करने के लिए, ImageDecoder. नीचे दिए गए कोड स्निपेट दिखाता है कि कैसे ImageDecoder का उपयोग करके AnimatedImageDrawable:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

ImageDecoder में कई तरीके हैं, जिनकी मदद से इमेज में और बदलाव किया जा सकता है. उदाहरण के लिए, आप setPostProcessor() इमेज के रंग-रूप को बदलने का तरीका बताया गया है, जैसे कि सर्कल मास्क लगाना या गोलाकार कोने.

HDR VP9 वीडियो, HEIF इमेज कंप्रेशन, और Media API

Android 9, पहले से मौजूद हाई डाइनैमिक रेंज (एचडीआर) VP9 Profile 2 के साथ काम करता है, ताकि आप अपने उपयोगकर्ताओं को YouTube, Play Movies, एचडीआर की सुविधा वाले डिवाइसों पर, अन्य सोर्स के लिए उपलब्ध वीडियो वगैरह.

Android 9 में, बेहतर परफ़ॉर्मेंस वाली इमेज का इस्तेमाल करके, इमेज को कोड में बदलने की सुविधा भी जोड़ी गई है फ़ाइल फ़ॉर्मैट (HEIF या HEIC), जो कंप्रेशन को बेहतर बनाता है और स्टोरेज की जगह और नेटवर्क डेटा को कम करता है इस्तेमाल. HEIF स्टिल इमेज के सैंपल इसमें काम करते हैं: MediaMuxer और MediaExtractor क्लास. Android 9 डिवाइसों पर प्लैटफ़ॉर्म की सुविधा वाली सहायता से, मैसेज भेजने और पाने में आसानी अपने बैकएंड सर्वर से HEIF इमेज का इस्तेमाल करें. पक्का करें कि ऐप, शेयर करने और दिखाने के लिए इस डेटा फ़ॉर्मैट के साथ काम करता है. HEIF का इस्तेमाल करें को इमेज स्टोरेज फ़ॉर्मैट के तौर पर सेव करना होगा. इमेज को jpeg फ़ॉर्मैट में बदला जा सकता है ImageDecoder का इस्तेमाल करके या BitmapFactory (जिससे JPEG फ़ाइल से बिट मैप) कॉपी करें. इसके बाद, इनका इस्तेमाल किया जा सकता है: HEIF लिखने के लिए HeifWriter YUV बाइट बफ़र्स, या इन्सटेंस से स्टिल इमेज Surface या Bitmap.

मीडिया मेट्रिक यहां से भी उपलब्ध हैं AudioTrack, AudioRecord और MediaDrm क्लास के साथ.

Android 9, मेट्रिक पाने के लिए MediaDRM क्लास, एचडीसीपी लेवल, सुरक्षा के लेवल, और सेशन की संख्या बढ़ाने के लिए किया जा सकता है. और सुरक्षित स्टॉप की सुविधा मिलती है. एपीआई में अंतर देखें रिपोर्ट देखें.

Android 9 में, AAudio API, कई अतिरिक्त AAudioStream एट्रिब्यूट, जैसे कि इस्तेमाल, कॉन्टेंट वगैरह के लिए भी सहायता मिलती है टाइप और इनपुट प्रीसेट को. इन एट्रिब्यूट का इस्तेमाल करके, ऐसी स्ट्रीम बनाई जा सकती हैं जिन्हें VoIP या कैमकॉर्डर ऐप्लिकेशन के लिए ट्यून किए गए. सेशन आईडी को किसी ऑडियो स्ट्रीम को ऐसे सबमिक्स के साथ जोड़ें जिसमें इफ़ेक्ट शामिल हो सकते हैं. इसका इस्तेमाल करें AudioEffect एपीआई इफ़ेक्ट.

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

JobScheduler में डेटा की लागत की संवेदनशीलता

Android 9 और JobScheduler में नया वर्शन हैंडलिंग में सुधार के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनियों के नेटवर्क स्टेटस सिग्नल का इस्तेमाल कर सकता है के अवसर मिलते हैं.

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

नौकरियां जोड़ते समय, setEstimatedNetworkBytes(), setPrefetch() और setRequiredNetwork() जब ज़रूरत हो JobScheduler यह काम सही तरीके से करें. जब आपका काम लागू हो जाता है, Network ऑब्जेक्ट का इस्तेमाल ज़रूर करें इन्होंने वापस किया JobParameters.getNetwork(). अगर ऐसा नहीं किया जाता है, तो आपको डिवाइस के डिफ़ॉल्ट नेटवर्क का इस्तेमाल करना होगा शायद आपकी ज़रूरी शर्तों को पूरा न कर पाए. इसकी वजह से, अनचाहे डेटा का इस्तेमाल हो रहा है.

न्यूरल नेटवर्क एपीआई 1.1

Neural Networks API को पेश किया गया था Android 8.1 (एपीआई लेवल 27) में, सभी ऐप्लिकेशन पर डिवाइस पर मशीन लर्निंग को Android. Android 9, एपीआई को बड़ा और बेहतर बनाता है. नौ नए ऑपरेशन के लिए सहायता:

आम समस्या: पास करते समय ANEURALNETWORKS_TENSOR_QUANT8_ASYMM टेंसर से ANEURALNETWORKS_PAD जो Android 9 और इसके बाद वाले वर्शन पर उपलब्ध है. ऐसा हो सकता है कि NNAPI से मिला आउटपुट, हाई-लेवल मशीन के आउटपुट से मैच न करे लर्निंग फ़्रेमवर्क, जैसे कि TensorFlow Lite. आपने लोगों तक पहुंचाया मुफ़्त में को इसके बजाय केवल ANEURALNETWORKS_TENSOR_FLOAT32 समस्या हल होने तक.

इसके अलावा, यह एपीआई एक नया फ़ंक्शन, ANeuralNetworksModel_relaxComputationFloat32toFloat16(), जो आपको यह तय करने की अनुमति देता है कि ANEURALNETWORKS_TENSOR_FLOAT32 आईईईई 754 16-बिट फ़्लोटिंग-पॉइंट की तरह सटीक रूप से फ़ॉर्मैट.

अपने-आप भरने वाला फ़्रेमवर्क

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

बेहतर सुरक्षा

Android 9 में सुरक्षा से जुड़ी कई सुविधाएं मिलती हैं. जैसे, नीचे दिए सेक्शन में, इनके बारे में खास जानकारी दी गई है:

Android की ओर से सुरक्षा की पुष्टि

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

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

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

Android की सुरक्षा की पुष्टि के लिए सहायता जोड़ने से जुड़े दिशा-निर्देशों के बारे में जानने के लिए, यहां देखें: Android की ओर से सुरक्षित पुष्टि करना पढ़ें.

यूनिफ़ाइड बायोमेट्रिक ऑथेंटिकेशन डायलॉग

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

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

हार्डवेयर सुरक्षा मॉड्यूल

Android 9 या इसके बाद वाले वर्शन पर काम करने वाले डिवाइस पर ये काम किए जा सकते हैं एक StrongBox KeyMaster होना चाहिए, जो KeyMaster HAL को लागू करने की वजह से हो हार्डवेयर सुरक्षा मॉड्यूल में मौजूद होता है. इस मॉड्यूल में ये चीज़ें शामिल हैं:

  • इसका खुद का सीपीयू है.
  • स्टोरेज को सुरक्षित रखें.
  • एक सही रैंडम-नंबर जनरेटर.
  • पैकेज से छेड़छाड़ न करने और बिना अनुमति के अलग से लोड करने से रोकने के लिए अतिरिक्त तरीके के विकल्प मिलते हैं.

StrongBox KeyMaster में संग्रहित कुंजियों की जांच करते समय, सिस्टम ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (TEE) की मदद से पासकोड की सुरक्षा करना.

Strongbox KeyMaster का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए हार्डवेयर सुरक्षा मॉड्यूल.

कीस्टोर में सुरक्षित कुंजी आयात

Android 9, डिजिटल बटन को डिक्रिप्ट करने के लिए अतिरिक्त सुरक्षा उपलब्ध कराता है का उपयोग करके एन्क्रिप्टेड की को सुरक्षित रूप से कीस्टोर में आयात करने की क्षमता ASN.1-कोड में बदला गया कुंजी फ़ॉर्मैट. इसके बाद, KeyMaster कुंजी को डिक्रिप्ट करता है और कीस्टोर में सेव किया जाता है, ताकि कुंजी का कॉन्टेंट डिवाइस की होस्ट मेमोरी में कभी भी सादे टेक्स्ट के तौर पर न दिखे.

एन्क्रिप्ट की गई कुंजियां इंपोर्ट करने के तरीके के बारे में ज़्यादा जानें सुरक्षित रूप से.

'की रोटेशन' के साथ APK सिग्नेचर स्कीम

Android 9 में, 'APK सिग्नेचर स्कीम v3' का इस्तेमाल किया जा सकता है. इस स्कीम में प्रत्येक साइनिंग के लिए अपने साइनिंग ब्लॉक में पुरानी और नई, दोनों कुंजियों के मालिकाना हक का प्रमाण शामिल करने के लिए प्रमाणपत्र. यह सुविधा, आपके ऐप्लिकेशन को नए साइनिंग से साइन करने में मदद करती है APK फ़ाइल के पिछले साइनिंग सर्टिफ़िकेट को, जिस पर अब हस्ताक्षर कर दिया गया है.

इसका इस्तेमाल करके बटन को घुमाने के तरीके के बारे में ज़्यादा जानें apksigner.

सिर्फ़ अनलॉक किए गए डिवाइसों पर कुंजी को डिक्रिप्ट करने की सुविधा

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

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

लेगसी एन्क्रिप्शन की सुविधा

कीमास्टर 4 के साथ आने वाले Android 9 डिवाइस, ट्रिपल डेटा के साथ काम करते हैं एन्क्रिप्ट (सुरक्षित) करने का एल्गोरिदम या ट्रिपल डीईएस. अगर आपका ऐप्लिकेशन लेगसी वर्शन के साथ काम करता है जिन सिस्टम को ट्रिपल DES की आवश्यकता होती है, उन्हें एन्क्रिप्ट करते समय इस प्रकार के साइफ़र का उपयोग करें संवेदनशील क्रेडेंशियल.

अपने ऐप्लिकेशन को ज़्यादा सुरक्षित बनाने के तरीके के बारे में ज़्यादा जानने के लिए, Android के लिए सुरक्षा से जुड़ी जानकारी देखें डेवलपर.

WPS का बंद होना

सुरक्षा के लिहाज़ से, वाई-फ़ाई सुरक्षित सेटअप (डब्ल्यूपीएस) अब काम नहीं करता.

Android बैकअप

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

क्लाइंट-साइड एन्क्रिप्शन के बैकअप

Android 9, Android बैकअप को एन्क्रिप्ट (सुरक्षित) करने की सुविधा देता है. क्लाइंट-साइड सीक्रेट. नीचे दी गई चीज़ों के आधार पर, यह सहायता अपने-आप चालू हो जाती है शर्तें पूरी होती हैं:

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

बैकअप लेने के लिए डिवाइस से जुड़ी ज़रूरी शर्तें तय करें

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

Android डिवाइसों पर डेटा का बैक अप लेने के बारे में ज़्यादा जानने के लिए, डेटा बैकअप की खास जानकारी.

सुलभता

Android 9 में, सुलभता सुविधाओं को बेहतर बनाया गया है ऐसा फ़्रेमवर्क जो इसके उपयोगकर्ताओं को और भी बेहतर अनुभव देना आसान बनाता है आपका ऐप्लिकेशन.

नेविगेशन सिमेंटिक्स

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

उदाहरण के लिए, शॉपिंग ऐप्लिकेशन में स्क्रीन रीडर की मदद से, उपयोगकर्ता नेविगेट कर सकते हैं एक से दूसरी कैटगरी के ऑफ़र तक, सीधे तौर पर साइन इन नहीं किया जा सकता. अगले आइटम पर जाने से पहले किसी कैटगरी के सभी आइटम पढ़ने की ज़रूरत पड़ती है.

सुलभता पैनल के टाइटल

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

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

पैनल का शीर्षक बताने के लिए, android:accessibilityPaneTitle एट्रिब्यूट की वैल्यू सबमिट करें. आप ऐसे यूज़र इंटरफ़ेस (यूआई) पैनल का टाइटल भी अपडेट कर सकते हैं जिसे इससे बदला गया है setAccessibilityPaneTitle() का इस्तेमाल करके, रनटाइम. उदाहरण के लिए, आप किसी Fragment ऑब्जेक्ट.

टाइटल पर आधारित नेविगेशन

अगर आपका ऐप्लिकेशन, टेक्स्ट वाला ऐसा कॉन्टेंट दिखाता है जिसमें लॉजिकल हेडिंग शामिल हैं, तो android:accessibilityHeading इन इंस्टेंस के लिए true को एट्रिब्यूट करें View जो उन हेडिंग को दिखाते हैं. इन्होंने बदलाव किया है इन टाइटल को जोड़कर, सुलभता सेवाओं को टाइटल से अगले पेज पर जाने में मदद मिलती है. कोई भी सुलभता सेवा इसका इस्तेमाल कर सकती है आसान और सुरक्षित यूज़र इंटरफ़ेस (यूआई) नेविगेशन का अनुभव.

ग्रुप नेविगेशन और आउटपुट

स्क्रीन रीडर ने पारंपरिक रूप से android:focusable एट्रिब्यूट तय करते हैं कि उन्हें कब पढ़ना चाहिए ViewGroup या इनका संग्रह View ऑब्जेक्ट, एक यूनिट के तौर पर. इस तरह, उपयोगकर्ता समझ सकें कि व्यू एक-दूसरे से जुड़े हैं.

Android 8.1 और उससे पहले के वर्शन में, आपको हर View ऑब्जेक्ट को ViewGroup का फ़ोकस 'फ़ोकस नहीं किया जा सकता' और ViewGroup 'फ़ोकस करने लायक' के तौर पर दिया गया है. यह बदलाव की वजह से, View के कुछ इंस्टेंस को फ़ोकस करने लायक के तौर पर मार्क किया गया जिससे कीबोर्ड मार्गदर्शक और जटिल हो गया.

Android 9 से, Google Tag Manager android:screenReaderFocusable एट्रिब्यूट की वैल्यू के तौर पर android:focusable एट्रिब्यूट का इस्तेमाल करें. ऐसा तब करें, जब View ऑब्जेक्ट को फ़ोकस करने लायक बनाने से कुछ अनचाहे नतीजे मिल सकते हैं. स्क्रीन रीडर उन सभी एलिमेंट पर फ़ोकस रखें जिनमें या तो android:screenReaderFocusable या android:focusable से true तक.

सुविधा से जुड़ी कार्रवाइयां

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

टूलटिप के साथ इंटरैक्शन
सुलभता फ़्रेमवर्क में जोड़ी गई सुविधाओं से आपको इनका ऐक्सेस मिलता है किसी ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में टूलटिप. इस्तेमाल की जाने वाली चीज़ें getTooltipText() टूलटिप का टेक्स्ट पढ़ने के लिए, और ACTION_SHOW_TOOLTIP और ACTION_HIDE_TOOLTIP को दिखाने के लिए View के इंस्टेंस का निर्देश दें या उनके टूलटिप को छिपाओ.
जोड़ी गई ग्लोबल कार्रवाइयां
Android 9, Google Play की ओर से AccessibilityService क्लास. आपकी सेवा, लोगों को अपने डिवाइस लॉक करने और स्क्रीनशॉट लेने में मदद कर सकती है इसका इस्तेमाल करके GLOBAL_ACTION_LOCK_SCREEN और GLOBAL_ACTION_TAKE_SCREENSHOT कार्रवाइयां.

विंडो में किए गए बदलाव की जानकारी

Android 9 की मदद से, किसी ऐप्लिकेशन के लिए विंडो के अपडेट को आसानी से ट्रैक किया जा सकता है एक साथ कई विंडो फिर से ड्रॉ करता है. जब TYPE_WINDOWS_CHANGED घटना होती है, तो इसका उपयोग करें getWindowChanges() एपीआई का इस्तेमाल करके पता लगाया जा सकता है कि विंडो कैसे बदल गई हैं. मल्टीविंडो अपडेट के दौरान, हर एक विंडो, इवेंट का अपना सेट बनाती है. getSource() तरीका, हर इवेंट से जुड़ी विंडो का रूट व्यू दिखाता है.

अगर किसी ऐप्लिकेशन ने उसके लिए सुलभता पैनल के टाइटल तय किए हों View ऑब्जेक्ट हैं, तो आपकी सेवा इन्हें पहचान सकती है जब ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) अपडेट किया जाता है. जब TYPE_WINDOW_STATE_CHANGED इवेंट होता है, तो इसके ज़रिए लौटाए गए टाइप का इस्तेमाल करें getContentChangeTypes() ताकि यह पता लगाया जा सके कि विंडो कैसे बदल गई है. उदाहरण के लिए, फ़्रेमवर्क ये काम कर सकता है: यह पता लगाने के लिए कि किसी पैनल का नया टाइटल है या किसी पैनल के गायब हो जाने पर.

रोटेशन

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

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

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

रोटेटिंग मोबाइल में नया रोटेशन मोड दिखाया जा रहा है, जिससे उपयोगकर्ता मैन्युअल रूप से रोटेशन को ट्रिगर कर सकते हैं

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

टेक्स्ट

Android 9, Google News पर टेक्स्ट से जुड़ी ये सुविधाएं देता है प्लैटफ़ॉर्म:

  • प्रीकंप्यूट किया गया टेक्स्ट: The PrecomputedText क्लास में सुधार होता है कंप्यूट और कैश मेमोरी में सेव करने में मदद करके, टेक्स्ट-रेंडरिंग परफ़ॉर्मेंस समय से पहले जानकारी हासिल कर लें. इससे आपका ऐप्लिकेशन, टेक्स्ट लेआउट को बंद भी कर सकता है मुख्य थ्रेड.

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

  • Smart Linkify: Android 9, TextClassifier क्लास, जो मशीन लर्निंग की मदद से चुने गए टेक्स्ट में मौजूद कुछ इकाइयों की पहचान करता है और कार्रवाइयों के सुझाव दें. उदाहरण के लिए, TextClassifier आपके ऐप्लिकेशन को यह पता लगाने की अनुमति दे सकता है यह तय करता है कि उपयोगकर्ता ने फ़ोन नंबर चुना है. इसके बाद, आपका ऐप्लिकेशन सुझाव दे सकता है कि कोई उपयोगकर्ता उस नंबर का इस्तेमाल करके फ़ोन कॉल करता है. TextClassifier में मिलने वाली सुविधाएं Linkify क्लास की सुविधाओं को बदलें.

  • टेक्स्ट का लेआउट: सुविधा के कई तरीकों और एट्रिब्यूट की मदद से, अपना यूज़र इंटरफ़ेस (यूआई) डिज़ाइन लागू करें. ज़्यादा जानकारी के लिए, रेफ़रंस दस्तावेज़ देखें TextView.

DEX फ़ाइलों का ART, समय से पहले रूपांतरण

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

इस सुधार से खास तौर पर उन कम कीमत वाले डिवाइसों को फ़ायदा मिलता है जिनमें धीमी डिस्क I/O होती है गति.

डिवाइस पर मौजूद सिस्टम ट्रेस करने की सुविधा

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

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

इस टूल के बारे में ज़्यादा जानने के लिए, उपयोगकर्ता के डिवाइस पर मौजूद सिस्टम का इस्तेमाल करें ट्रेसिंग.