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

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

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

वाई-फ़ाई आरटीटी की मदद से, इनडोर पोज़िशनिंग

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

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

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

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

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

Android WifiRttScan डेमो ऐप्लिकेशन में, इस्तेमाल में मौजूद WiFi RTT API देखें.

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

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

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

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

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

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

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

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

सूचनाएं

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

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

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

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

जवाबों और बातचीत के साथ MessagingStyle.

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() तरीक़े से, किसी ऐक्शन को सेमैंटिक मतलब दिया जा सकता है. जैसे, "पढ़ा गया के तौर पर मार्क करें," "मिटाएँ," "जवाब दें" वगैरह.

  • स्मार्ट रिप्लाई: 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 वाले डिवाइसों पर, दो या उससे ज़्यादा फ़िज़िकल कैमरों से एक साथ स्ट्रीम ऐक्सेस की जा सकती हैं. ड्यूअल-फ़्रंट या ड्यूअल-बैक कैमरे वाले डिवाइसों पर, नई सुविधाएं जो सिर्फ़ एक कैमरे के साथ संभव नहीं हैं, जैसे कि ज़ूम, बोकेह, और स्टीरियो विज़न. यह एपीआई आपको लॉजिकल या फ़्यूज़्ड कॉल करने की सुविधा भी देता है ऐसी कैमरा स्ट्रीम जो दो या उससे ज़्यादा कैमरों के बीच अपने-आप स्विच होती है.

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

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

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 में, GIF और WebP ऐनिमेशन वाली इमेज को ड्रॉ करने और दिखाने के लिए, AnimatedImageDrawable क्लास को शामिल किया गया है. 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 प्रोफ़ाइल 2 के लिए पहले से ही सहायता उपलब्ध है. इसलिए, एचडीआर की सुविधा वाले डिवाइसों पर, YouTube, Play Movies, और दूसरे सोर्स से अपने उपयोगकर्ताओं को एचडीआर वाली फ़िल्में डिलीवर की जा सकती हैं.

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

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

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

Android 9 में, AAudio API कई अन्य AAudioStream एट्रिब्यूट के लिए काम करता है. इनमें इस्तेमाल, कॉन्टेंट टाइप, और इनपुट प्रीसेट शामिल हैं. इन एट्रिब्यूट का इस्तेमाल करके, ऐसी स्ट्रीम बनाई जा सकती हैं जिन्हें VoIP या कैमकॉर्डर ऐप्लिकेशन के लिए ट्यून किए गए. सेशन आईडी को सेट करके, AAudio स्ट्रीम को किसी ऐसे सबमिक्स से जोड़ा जा सकता है जिसमें इफ़ेक्ट शामिल हो सकते हैं. इसका इस्तेमाल करें 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 में एपीआई को बेहतर बनाया गया है और इसमें नौ नए ऑपरेशन जोड़े गए हैं:

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

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

ऑटोफ़िल फ़्रेमवर्क

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

सुरक्षा से जुड़े सुधार

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

अपने ऐप्लिकेशन को ज़्यादा सुरक्षित बनाने के तरीके के बारे में ज़्यादा जानने के लिए, 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 ऑब्जेक्ट के कॉन्टेंट एरिया के लिए टाइटल दिया जा सकता है.

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

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

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

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

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

Android 9 से, android:focusable एट्रिब्यूट के बजाय android:screenReaderFocusable एट्रिब्यूट का इस्तेमाल किया जा सकता है. ऐसा तब करना चाहिए, जब View ऑब्जेक्ट को फ़ोकस करने पर कोई गड़बड़ी हो. स्क्रीन रीडर, उन सभी एलिमेंट पर फ़ोकस करते हैं जिन्होंने android:screenReaderFocusable या android:focusable को true पर सेट किया है.

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

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

टूलटिप के साथ इंटरैक्शन
सुलभता फ़्रेमवर्क में जोड़ी गई सुविधाओं से आपको इनका ऐक्सेस मिलता है किसी ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में टूलटिप. टूलटिप का टेक्स्ट पढ़ने के लिए, getTooltipText() का इस्तेमाल करें. साथ ही, View के इंस्टेंस को टूलटिप दिखाने या छिपाने के लिए, ACTION_SHOW_TOOLTIP और ACTION_HIDE_TOOLTIP का इस्तेमाल करें.
जोड़ी गई ग्लोबल कार्रवाइयां
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 में टेक्स्ट से जुड़ी ये सुविधाएं उपलब्ध हैं:

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

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

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

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

DEX फ़ाइलों को पहले से ART में बदलना

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

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

डिवाइस पर सिस्टम ट्रेसिंग

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

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

इस टूल के बारे में ज़्यादा जानने के लिए, डिवाइस पर सिस्टम ट्रैकिंग करना लेख पढ़ें.