Android 5.0 के लिए API

एपीआई लेवल: 21

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

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

प्लैटफ़ॉर्म की नई सुविधाओं के बारे में अच्छी तरह जानने के लिए, देखें Android Lollipop हाइलाइट.

डेवलप करना शुरू करें

Android 5.0 के लिए ऐप्लिकेशन बनाना शुरू करने के लिए, आपको पहले Android SDK टूल का इस्तेमाल करें. इसके बाद, Android 5.0 SDK प्लैटफ़ॉर्म और सिस्टम इमेज डाउनलोड करने के लिए, SDK मैनेजर का इस्तेमाल करें.

टारगेट एपीआई लेवल को अपडेट करना

Android 5.0 पर चलने वाले डिवाइसों के लिए, अपने ऐप्लिकेशन को बेहतर तरीके से ऑप्टिमाइज़ करने के लिए, targetSdkVersion को "21" पर सेट करें. इसके बाद, अपने ऐप्लिकेशन को Android 5.0 सिस्टम इमेज पर इंस्टॉल करें और उसकी जांच करें. इसके बाद, इस बदलाव के साथ अपडेट किया गया ऐप्लिकेशन पब्लिश करें.

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

एपीआई लेवल कैसे काम करते हैं, इस बारे में ज़्यादा जानने के लिए एपीआई क्या है, यह पढ़ें लेवल?

व्यवहार में अहम बदलाव

अगर आपने पहले Android के लिए कोई ऐप्लिकेशन पब्लिश किया है, तो ध्यान रखें कि Android 5.0 में किए गए बदलावों का आपके ऐप्लिकेशन पर असर पड़ सकता है.

पूरी जानकारी के लिए, कृपया Android 5.0 के बदलाव देखें.

यूज़र इंटरफ़ेस

मटीरियल डिज़ाइन सपोर्ट

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

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

अपने ऐप्लिकेशन में मटीरियल डिज़ाइन फ़ंक्शन जोड़ने के बारे में ज़्यादा जानने के लिए, यहां देखें मटीरियल डिज़ाइन.

हाल ही में देखी गई स्क्रीन में, एक साथ चल रहे दस्तावेज़ और गतिविधियां

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

सिस्टम आपकी गतिविधि को नए टास्क के तौर पर ले, इसके लिए लॉजिकल ब्रेक डालें. इसके लिए, startActivity() के साथ गतिविधि शुरू करते समय FLAG_ACTIVITY_NEW_DOCUMENT का इस्तेमाल करें. इस तरह की सेटिंग देखने के लिए, <गतिविधि> एलिमेंट का documentLaunchMode एट्रिब्यूट "intoExisting" या आपके मेनिफ़ेस्ट में "always" मौजूद है.

हाल ही की स्क्रीन को व्यवस्थित करने के लिए, आप आपके ऐप्लिकेशन के टास्क भी उस स्क्रीन पर दिख सकते हैं. ऐसा करने के लिए, <ऐप्लिकेशन> एट्रिब्यूट android:maxRecents. फ़िलहाल, हर उपयोगकर्ता के लिए ज़्यादा से ज़्यादा 50 टास्क सेट किए जा सकते हैं. कम रैम वाले डिवाइसों के लिए, यह संख्या 25 है.

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

वेबव्यू से जुड़े अपडेट

Android 5.0 में, WebView को लागू करने के लिए Chromium M37 का इस्तेमाल किया गया है. इससे सुरक्षा और स्थिरता को बेहतर बनाने के साथ-साथ गड़बड़ियों को ठीक करने में भी मदद मिलती है. Android 5.0 पर चल रहे WebView के लिए, डिफ़ॉल्ट उपयोगकर्ता-एजेंट स्ट्रिंग को अपडेट किया गया है, ताकि वर्शन नंबर के तौर पर 37.0.0.0 शामिल किया जा सके.

इस रिलीज़ में PermissionRequest क्लास को शामिल किया गया है. इससे आपके ऐप्लिकेशन को, getUserMedia() जैसे वेब एपीआई के ज़रिए, कैमरा और माइक्रोफ़ोन जैसे सुरक्षित संसाधनों को ऐक्सेस करने के लिए, WebView को अनुमति देने की सुविधा मिलती है. WebView को अनुमतियां देने के लिए, आपके ऐप्लिकेशन के पास इन संसाधनों के लिए सही Android अनुमतियां होनी चाहिए.

onShowFileChooser() वाले नए तरीके से, अब आपके पास WebView में इनपुट फ़ॉर्म फ़ील्ड का इस्तेमाल करने का विकल्प है, और Android डिवाइस से इमेज और फ़ाइलें चुनने के लिए फ़ाइल चुनने का विकल्प लॉन्च करें.

इसके अलावा, इस रिलीज़ में WebAudio, WebGL, और WebRTC ओपन स्टैंडर्ड के लिए भी सहायता मिलती है. इस रिलीज़ में शामिल की गई नई सुविधाओं के बारे में ज़्यादा जानने के लिए, देखें Android के लिए वेबव्यू.

स्क्रीन कैप्चर करने और उसे शेयर करने की सुविधा

Android 5.0 में, नए android.media.projection एपीआई की मदद से, अपने ऐप्लिकेशन में स्क्रीन कैप्चर करने और स्क्रीन शेयर करने की सुविधाएं जोड़ी जा सकती हैं. उदाहरण के लिए, अगर आपको वीडियो कॉन्फ़्रेंसिंग ऐप्लिकेशन में स्क्रीन शेयर करने की सुविधा चालू करनी है, तो यह सुविधा काम की है.

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

नए एपीआई इस्तेमाल करने का उदाहरण देखने के लिए, सैंपल प्रोजेक्ट में MediaProjectionDemo क्लास देखें.

सूचनाएं

लॉक स्क्रीन पर मिलने वाली सूचनाएं

Android 5.0 की लॉक स्क्रीन पर सूचनाएं दिख सकती हैं. उपयोगकर्ता सेटिंग में जाकर यह चुन सकते हैं कि संवेदनशील सूचना का कॉन्टेंट, सुरक्षित लॉक स्क्रीन पर दिखाया जाए या नहीं.

आपका ऐप्लिकेशन, सुरक्षित लॉक स्क्रीन पर सूचनाएं दिखाते समय, जानकारी के दिखने के लेवल को कंट्रोल कर सकता है. दृश्यता स्तर को नियंत्रित करने के लिए, कॉल करें setVisibility() और इनमें से कोई एक मान दर्ज करें:

  • VISIBILITY_PRIVATE: बुनियादी जानकारी दिखाता है, जैसे कि सूचना का आइकॉन, लेकिन पूरा कॉन्टेंट पब्लिश कर देते हैं.
  • VISIBILITY_PUBLIC: सूचना का पूरा कॉन्टेंट दिखाता है.
  • VISIBILITY_SECRET: सूचना का आइकॉन भी नहीं दिखाता.

अगर सूचना दिखने का लेवल VISIBILITY_PRIVATE है, तो सूचना के कॉन्टेंट का ऐसा वर्शन भी दिया जा सकता है जिसमें निजी जानकारी छिपी हो. उदाहरण के लिए, एसएमएस ऐप्लिकेशन में "आपके पास तीन नए मैसेज हैं" वाली सूचना दिख सकती है. हालांकि, इसमें मैसेज का कॉन्टेंट और मैसेज भेजने वाले लोगों की जानकारी नहीं दिखती. यह वैकल्पिक सूचना देने के लिए, पहले Notification.Builder का इस्तेमाल करके बदले जाने की सूचना. टास्क कब शुरू होगा निजी सूचना ऑब्जेक्ट बनाया जाता है, तो बदली जाने वाली सूचना अटैच की जाती है तक पहुंच सकते हैं setPublicVersion() तरीका.

सूचनाओं का मेटाडेटा

Android 5.0 आपके ऐप्लिकेशन की सूचनाओं से जुड़े मेटाडेटा का इस्तेमाल करता है ताकि सूचनाओं को बेहतर तरीके से क्रम से लगाया जा सके. मेटाडेटा सेट करने के लिए, सूचना बनाते समय Notification.Builder में इन तरीकों को कॉल करें:

  • setCategory(): इससे सिस्टम को पता चलता है कि डिवाइस प्राथमिकता मोड में होने पर, आपके ऐप्लिकेशन की सूचनाओं को कैसे मैनेज करना है. उदाहरण के लिए, अगर कोई सूचना इनकमिंग कॉल, इंस्टैंट मैसेज या अलार्म के बारे में है.
  • setPriority(): सूचना को सामान्य सूचनाओं से ज़्यादा या कम ज़रूरी के तौर पर मार्क करता है. अगर सूचना के साथ आवाज़ या वाइब्रेशन की सुविधा भी चालू है, तो प्राथमिकता फ़ील्ड को PRIORITY_MAX या PRIORITY_HIGH पर सेट करने पर, सूचनाएं एक छोटी फ़्लोटिंग विंडो में दिखती हैं.
  • addPerson(): इसकी मदद से, सूचना से जुड़े एक या उससे ज़्यादा लोगों को जोड़ा जा सकता है. आपका ऐप्लिकेशन इस जानकारी का इस्तेमाल करके, सिस्टम को यह सिग्नल दे सकता है कि उसे चुनिंदा लोगों की सूचनाओं को एक साथ ग्रुप करना चाहिए या इन लोगों की सूचनाओं को ज़्यादा अहम के तौर पर रैंक करना चाहिए.

ग्राफ़िक्स

OpenGL ES 3.1 के साथ काम करने की सुविधा

Android 5.0 में OpenGL के लिए Java इंटरफ़ेस और नेटिव सपोर्ट शामिल हैं स्पैनिश 3.1. OpenGL ES 3.1 में दी गई मुख्य नई सुविधाओं में ये शामिल हैं:

  • कंप्यूट शेडर
  • अलग-अलग शेडर ऑब्जेक्ट
  • इनडायरेक्ट ड्रॉ कमांड
  • मल्टीसैंपल और स्टेंसिल टेक्स्चर
  • शेडिंग की भाषा में सुधार
  • बेहतर ब्लेंड मोड और डीबग करने के लिए एक्सटेंशन
  • OpenGL ES 2.0 और 3.0 के साथ पुराने वर्शन के साथ काम करने की सुविधा

Android पर OpenGL ES 3.1 के लिए Java इंटरफ़ेस, GLES31 के साथ दिया जाता है. OpenGL ES 3.1 का इस्तेमाल करते समय, पक्का करें कि आपने अपनी मेनिफ़ेस्ट फ़ाइल में, <uses-feature> टैग और android:glEsVersion एट्रिब्यूट के साथ इसकी जानकारी दी हो. उदाहरण के लिए:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

OpenGL ES का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, OpenGL ES API गाइड देखें. इसमें, डिवाइस पर रनटाइम के दौरान काम करने वाले OpenGL ES वर्शन की जांच करने का तरीका भी बताया गया है.

Android एक्सटेंशन पैक

इस रिलीज़ में, OpenGL ES 3.1 के साथ-साथ, बेहतर ग्राफ़िक्स फ़ंक्शन के लिए, Java इंटरफ़ेस और नेटिव सपोर्ट वाला एक्सटेंशन पैक भी उपलब्ध है. ये Android, एक्सटेंशन को एक पैकेज के तौर पर देखता है. (अगर ANDROID_extension_pack_es31a एक्सटेंशन मौजूद है, आपका ऐप्लिकेशन ये काम कर सकता है यह मान लीजिए कि पैकेज में सभी एक्सटेंशन मौजूद हैं और शेडिंग लैंग्वेज को चालू करते हैं एक #extension स्टेटमेंट से जुड़ी सुविधाएं.)

एक्सटेंशन पैक में ये सुविधाएं काम करती हैं:

  • शेडर स्टोरेज बफ़र, इमेज, और ऐटॉमिक के लिए फ़्रैगमेंट शेडर की सुविधा उपलब्ध है (OpenGL ES 3.1 में फ़्रैगमेंट शेडर की सुविधा का इस्तेमाल करना ज़रूरी नहीं है.)
  • टेसेलेशन और ज्यामिति शेडर
  • ASTC (LDR) टेक्सचर कंप्रेशन फ़ॉर्मैट
  • हर सैंपल के लिए इंटरपोलेशन और शेडिंग
  • फ़्रेम बफ़र में हर रंग के अटैचमेंट के लिए, अलग-अलग ब्लेंड मोड

एक्सटेंशन पैक के लिए Java इंटरफ़ेस दिया गया है GLES31Ext. अपने ऐप्लिकेशन मेनिफ़ेस्ट में, आप यह एलान कर सकते हैं कि आपका ऐप्लिकेशन सिर्फ़ उन डिवाइसों पर इंस्टॉल होना चाहिए जो एक्सटेंशन पैक के साथ काम करते हैं. उदाहरण के लिए:

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

मीडिया

कैमरे की बेहतर सुविधाओं के लिए Camera API

Android 5.0 में, android.hardware.camera2 एपीआई की नई सुविधा जोड़ी गई है. इससे, बेहतर क्वालिटी में फ़ोटो लेने और इमेज प्रोसेस करने में मदद मिलती है. अब getCameraIdList() की मदद से, प्रोग्राम के ज़रिए सिस्टम में उपलब्ध कैमरा डिवाइसों को ऐक्सेस किया जा सकता है. साथ ही, openCamera() की मदद से किसी खास डिवाइस से कनेक्ट किया जा सकता है. इमेज कैप्चर करने के लिए, कोई CameraCaptureSession बनाएं और कैप्चर की गई इमेज भेजने के लिए Surface ऑब्जेक्ट तय करें. CameraCaptureSession को इन पर कॉन्फ़िगर किया जा सकता है एक ही बर्स्ट में एक शॉट या कई इमेज ले सकती है.

नई इमेज कैप्चर होने पर सूचना पाने के लिए, CameraCaptureSession.CaptureCallback लिसनर और उसे अपने कैप्चर रिक्वेस्ट में सेट करें. अब जब सिस्टम इमेज कैप्चर करने का अनुरोध पूरा कर लेता है, तो आपके CameraCaptureSession.CaptureCallback listener को onCaptureCompleted() से कॉल मिलता है. इस कॉल में, आपको CaptureResult में इमेज कैप्चर करने का मेटाडेटा मिलता है.

CameraCharacteristics क्लास की मदद से, आपके ऐप्लिकेशन को यह पता चलता है कि किसी डिवाइस पर कैमरे की कौनसी सुविधाएं उपलब्ध हैं. ऑब्जेक्ट की INFO_SUPPORTED_HARDWARE_LEVEL प्रॉपर्टी, कैमरे के फ़ंक्शन के लेवल को दिखाती है.

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

अपडेट किए गए Camera एपीआई का इस्तेमाल करने का तरीका जानने के लिए, इस रिलीज़ में Camera2Basic और Camera2Video के लागू करने के उदाहरण देखें.

ऑडियो प्लेबैक

इस रिलीज़ में, AudioTrack में ये बदलाव किए गए हैं:

  • अब आपका ऐप्लिकेशन फ़्लोटिंग-पॉइंट फ़ॉर्मैट में ऑडियो डेटा उपलब्ध करा सकता है (ENCODING_PCM_FLOAT). यह इसकी मदद से ज़्यादा डाइनैमिक रेंज, ज़्यादा एक जैसी सटीक, और ज़्यादा हेडरूम की सुविधा मिलती है. फ़्लोटिंग-पॉइंट अंकगणित, इंटरमीडिएट कैलकुलेशन के दौरान खास तौर पर मददगार होता है. प्लेलबैक एंडपॉइंट, ऑडियो डेटा के लिए इंटीजर फ़ॉर्मैट का इस्तेमाल करते हैं. साथ ही, इनमें बिट डेप्थ कम होती है. (Android 5.0 में, इंटरनल पाइपलाइन के कुछ हिस्से अब भी फ़्लोटिंग पॉइंट नहीं हैं.)
  • आपका ऐप्लिकेशन अब ऑडियो डेटा को ByteBuffer के तौर पर, उसी फ़ॉर्मैट में दे सकता है जिसमें MediaCodec से डेटा मिलता है.
  • WRITE_NON_BLOCKING विकल्प की मदद से, कुछ ऐप्लिकेशन के लिए बफ़रिंग और मल्टीथ्रेडिंग को आसान बनाया जा सकता है.

मीडिया प्लेबैक कंट्रोल

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

नई MediaSession क्लास को बदल दिया जाता है काम नहीं करने वाली RemoteControlClient क्लास का इस्तेमाल करती है और इसमें ट्रांसपोर्ट कंट्रोल और मीडिया बटन को हैंडल करने के लिए कॉलबैक तरीकों का एक सेट होता है. अगर आपका ऐप्लिकेशन मीडिया चलाने की सुविधा देता है और Android TV या Wear प्लैटफ़ॉर्म पर चलता है, तो ट्रांसपोर्ट कंट्रोल को मैनेज करने के लिए MediaSession क्लास का इस्तेमाल करें. इसके लिए, वही कॉलबैक तरीके इस्तेमाल करें जो ऊपर बताए गए हैं.

अब आपके पास नई MediaController क्लास की मदद से, अपना मीडिया कंट्रोलर ऐप्लिकेशन बनाने का विकल्प है. यह क्लास, आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) प्रोसेस से मीडिया चलाने की निगरानी करने और उसे कंट्रोल करने के लिए, थ्रेड-सेफ़ तरीका उपलब्ध कराती है. कंट्रोलर बनाते समय, कोई MediaSession.Token ऑब्जेक्ट तय करें, ताकि आपका ऐप्लिकेशन दिए गए MediaSession के साथ इंटरैक्ट कर सके. MediaController.TransportControls तरीके का इस्तेमाल करके, आपके पास निर्देश भेजने का विकल्प है. जैसे, play(), stop(), skipToNext(), और setRating() का इस्तेमाल करके, किसी भी सेशन में मीडिया चलाने को कंट्रोल किया जा सकता है. कंट्रोलर की मदद से, यह भी किया जा सकता है MediaController.Callback ऑब्जेक्ट को रजिस्टर करें सेशन के दौरान मेटाडेटा और स्थिति में हुए बदलावों को सुनें.

इसके अलावा, Notification.MediaStyle क्लास की मदद से, मीडिया सेशन से जुड़े वीडियो चलाने की सुविधा देने वाली रिच सूचनाएं भी बनाई जा सकती हैं.

मीडिया ब्राउज़िंग

Android 5.0 में, ऐप्लिकेशन को किसी दूसरे ऐप्लिकेशन की मीडिया कॉन्टेंट लाइब्रेरी को ब्राउज़ करने की सुविधा दी गई है. इसके लिए, ऐप्लिकेशन को android.media.browse एपीआई का इस्तेमाल करना होगा. अपने ऐप्लिकेशन में मीडिया कॉन्टेंट दिखाने के लिए, MediaBrowserService क्लास को बड़ा करें. को लागू करना MediaBrowserService को इसकी ऐक्सेस देनी चाहिए MediaSession.Token ताकि ऐप्लिकेशन, मीडिया कॉन्टेंट चला सकें आपकी सेवा के ज़रिए उपलब्ध कराया गया है.

मीडिया ब्राउज़र सेवा के साथ इंटरैक्ट करने के लिए, MediaBrowser क्लास का इस्तेमाल करें. कॉम्पोनेंट के बारे में बताएं जब आप कोई MediaSession बनाते हैं, तो MediaBrowser इंस्टेंस. उस ब्राउज़र इंस्टेंस का इस्तेमाल करके, आपका ऐप्लिकेशन उससे जुड़ी सेवा से कनेक्ट हो सकता है और उस सेवा के ज़रिए दिखाए गए कॉन्टेंट को चलाने के लिए, MediaSession.Token ऑब्जेक्ट हासिल कर सकता है.

डिवाइस का स्टोरेज

डायरेक्ट्री चुनें

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

डायरेक्ट्री सबट्री चुनने के लिए, OPEN_DOCUMENT_TREE अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इंटेंट. सिस्टम सभी नतीजे दिखाता है DocumentsProvider इंस्टेंस, जिनमें सबट्री को चुना जा सकता है, इससे उपयोगकर्ता को डायरेक्ट्री ब्राउज़ करने और चुनने की अनुमति मिलती है. दिखाया गया यूआरआई, चुने गए सबट्री के ऐक्सेस को दिखाता है. इसके बाद, सबट्री को एक्सप्लोर करने के लिए, query() के साथ-साथ buildChildDocumentsUriUsingTree() और buildDocumentUriUsingTree() का इस्तेमाल किया जा सकता है.

createDocument() के नए तरीके से, सबट्री के तहत कहीं भी नए दस्तावेज़ या डायरेक्ट्री बनाई जा सकती हैं. मौजूदा दस्तावेज़ों को मैनेज करने के लिए, renameDocument() और deleteDocument() का इस्तेमाल करें. इन कॉल को जारी करने से पहले, COLUMN_FLAGS पर जाकर देखें कि सेवा देने वाली कंपनी की सहायता टीम उपलब्ध है या नहीं.

अगर आप DocumentsProvider लागू कर रहे हैं और आपको सबट्री चुनने की सुविधा के लिए, isChildDocument() को लागू करें. साथ ही, FLAG_SUPPORTS_IS_CHILD को शामिल करें आपके COLUMN_FLAGS में.

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

वायरलेस और कनेक्टिविटी

एक से ज़्यादा इंटरनेट कनेक्शन

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

अपने ऐप्लिकेशन से डाइनैमिक रूप से किसी नेटवर्क को चुनने और उससे कनेक्ट करने के लिए, इन निर्देशों का पालन करें कदम:

  1. ConnectivityManager बनाएं.
  2. NetworkRequest ऑब्जेक्ट बनाने के लिए, NetworkRequest.Builder क्लास का इस्तेमाल करें. साथ ही, नेटवर्क की उन सुविधाओं और ट्रांसपोर्ट के उस टाइप की जानकारी दें जिसमें आपके ऐप्लिकेशन की दिलचस्पी है.
  3. काम के नेटवर्क स्कैन करने के लिए, requestNetwork() या registerNetworkCallback() को कॉल करें. साथ ही, NetworkRequest ऑब्जेक्ट और ConnectivityManager.NetworkCallback को लागू करें. अगर आपको किसी नेटवर्क का पता चलने के बाद, उस पर स्विच करना है, तो requestNetwork() तरीके का इस्तेमाल करें. अगर आपको सिर्फ़ स्कैन किए गए नेटवर्क की सूचनाएं चाहिए, तो registerNetworkCallback() तरीके का इस्तेमाल करें.

जब सिस्टम को कोई सही नेटवर्क मिलता है, तो वह उससे कनेक्ट हो जाता है और onAvailable() कॉलबैक को ट्रिगर करता है. नेटवर्क के बारे में ज़्यादा जानकारी पाने या चुने गए नेटवर्क का इस्तेमाल करने के लिए, कॉलबैक से Network ऑब्जेक्ट का इस्तेमाल किया जा सकता है.

ब्लूटूथ कम ऊर्जा

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

नए android.bluetooth.le एपीआई की मदद से, आपके ऐप्लिकेशन विज्ञापन ब्रॉडकास्ट कर सकते हैं, जवाबों को स्कैन कर सकते हैं, और आस-पास मौजूद ब्लूटूथ एलई डिवाइसों से कनेक्ट कर सकते हैं. नई विज्ञापन और स्कैनिंग सुविधाओं का इस्तेमाल करने के लिए, BLUETOOTH_ADMIN अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है की अनुमति है. जब उपयोगकर्ता Play Store से आपका ऐप्लिकेशन अपडेट करते हैं या डाउनलोड करते हैं, तो उनसे आपके ऐप्लिकेशन को यह अनुमति देने के लिए कहा जाता है: "ब्लूटूथ कनेक्शन की जानकारी: इससे ऐप्लिकेशन को ब्लूटूथ को कंट्रोल करने की अनुमति मिलती है. इसमें, आस-पास के ब्लूटूथ डिवाइसों के बारे में जानकारी पाने या उन्हें ब्रॉडकास्ट करने की सुविधा भी शामिल है."

ब्लूटूथ LE विज्ञापन दिखाना, ताकि दूसरे डिवाइस उन्हें खोज सकें आपका ऐप्लिकेशन, कॉल startAdvertising() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और लागू किया गया है, AdvertiseCallback क्लास. कॉलबैक ऑब्जेक्ट को, विज्ञापन ऑपरेशन के पूरे होने या न होने की रिपोर्ट मिलती है.

Android 5.0 में ScanFilter क्लास को शामिल किया गया है, ताकि आपका ऐप्लिकेशन सिर्फ़ उन डिवाइसों को स्कैन कर सके जिनमें उसकी दिलचस्पी है. ब्लूटूथ के लिए स्कैन करना शुरू करने के लिए LE डिवाइस, startScan() पर कॉल करें और फ़िल्टर की सूची को पास करें. जब कोई ब्लूटूथ एलई विज्ञापन मिलता है, तो आपको इसकी रिपोर्ट करने के लिए, ScanCallback को लागू करने का तरीका भी बताना होगा.

एनएफ़सी को बेहतर बनाने की सुविधा

Android 5.0 में इन सुधारों को जोड़कर, ज़्यादा और ज़्यादा सुविधाओं को चालू किया जा सकता है एनएफ़सी का आसान इस्तेमाल:

  • 'Android बीम' अब शेयर करें मेन्यू में उपलब्ध है.
  • आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइस पर Android बीम की मदद से, इस तरह से डेटा शेयर कर सकता है: invokeBeam() पर कॉल किया जा रहा है. इससे, डेटा ट्रांसफ़र करने के लिए, उपयोगकर्ता को अपने डिवाइस को मैन्युअल तरीके से किसी दूसरे एनएफ़सी डिवाइस पर टैप करने की ज़रूरत नहीं पड़ती.
  • UTF-8 टेक्स्ट डेटा वाला एनडीएफ़ रिकॉर्ड बनाने के लिए, नए createTextRecord() तरीके का इस्तेमाल किया जा सकता है.
  • अगर आपको पेमेंट ऐप्लिकेशन डेवलप करना है, तो अब आपके पास ये काम करने की सुविधा है कॉल करके एनएफ़सी ऐप्लिकेशन आईडी (एआईडी) को डाइनैमिक तौर पर रजिस्टर करें registerAidsForService(). कार्ड एम्युलेशन की सेवा को सेट करने के लिए, setPreferredService() का इस्तेमाल भी किया जा सकता है. जब कोई खास गतिविधि फ़ोरग्राउंड में हो, तब इस्तेमाल किया जा सकता है.

प्रोजेक्ट वोल्टा

नई सुविधाओं के साथ ही, Android 5.0 बैटरी में सुधार पर ज़ोर देता है ज़िंदगी. अपने ऐप्लिकेशन की क्षमता के बारे में जानने और उसे ऑप्टिमाइज़ करने के लिए, नए एपीआई और टूल का इस्तेमाल करें इस्तेमाल.

जॉब शेड्यूल करना

Android 5.0 एक नया JobScheduler देता है यह एपीआई आपको सिस्टम चलाने के लिए जॉब तय करके बैटरी लाइफ़ को ऑप्टिमाइज़ करने देता है बाद में या कुछ खास स्थितियों में एसिंक्रोनस रूप से (जैसे कि जब डिवाइस चार्ज हो रहा है). जॉब शेड्यूल करने की सुविधा इन स्थितियों में काम आती है:

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

यूनिट ऑफ़ वर्क को JobInfo ऑब्जेक्ट में शामिल किया जाता है. यह ऑब्जेक्ट, शेड्यूल करने की शर्तें तय करता है.

शेड्यूल किए गए टास्क को कैसे चलाना है, यह कॉन्फ़िगर करने के लिए JobInfo.Builder क्लास का इस्तेमाल करें. टास्क को किसी खास समय पर चलाने के लिए शेड्यूल किया जा सकता है. जैसे:

  • डिवाइस चार्ज होने पर शुरू करें
  • मीटर न किए गए नेटवर्क से डिवाइस के कनेक्ट होने पर शुरू हो
  • डिवाइस के कुछ समय से इस्तेमाल में न होने पर शुरू करना
  • किसी तय समयसीमा से पहले या कम से कम देरी से कार्रवाई पूरी करें

उदाहरण के लिए, आप किसी साइट पर अपना टास्क चलाने के लिए, इस तरह का कोड जोड़ सकते हैं मीटर न किया जाने वाला नेटवर्क:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

Java

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

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

JobScheduler API का इस्तेमाल करने का उदाहरण देखने के लिए, इस रिलीज़ में JobSchedulerSample को लागू करने का सैंपल देखें.

बैटरी खर्च के लिए डेवलपर टूल

नया dumpsys batterystats निर्देश दिलचस्प जनरेट करता है यूनीक यूज़र आईडी के हिसाब से व्यवस्थित किए गए, डिवाइस की बैटरी खर्च के आंकड़ों का डेटा (यूआईडी). आंकड़ों में ये शामिल हैं:

  • बैटरी से जुड़े इवेंट का इतिहास
  • डिवाइस के लिए वैश्विक आंकड़े
  • यूआईडी और सिस्टम कॉम्पोनेंट के हिसाब से, पावर की अनुमानित खपत
  • हर पैकेट के लिए, हर ऐप्लिकेशन के मोबाइल एमएस
  • सिस्टम यूआईडी एग्रीगेट किए गए आंकड़े
  • ऐप्लिकेशन के यूआईडी से जुड़े आंकड़े

इसके लिए उपलब्ध अलग-अलग विकल्पों के बारे में जानने के लिए, --help विकल्प का इस्तेमाल करें उस आउटपुट को तैयार करना. उदाहरण के लिए, बैटरी खर्च प्रिंट करने के लिए डिवाइस के पिछली बार चार्ज होने के बाद से, दिए गए ऐप्लिकेशन पैकेज के आंकड़े, इसे चलाएं आदेश:

$ adb shell dumpsys batterystats --charged <package-name>

dumpsys कमांड के आउटपुट पर, Battery Historian टूल का इस्तेमाल करके, लॉग से पावर से जुड़े इवेंट का एचटीएमएल विज़ुअलाइज़ेशन जनरेट किया जा सकता है. इस जानकारी की मदद से, बैटरी से जुड़ी किसी भी समस्या को आसानी से समझा और उसका पता लगाया जा सकता है.

Workspace और शिक्षा के क्षेत्र में Android का इस्तेमाल

प्रबंधित प्रावधानीकरण

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

मैनेज की जा रही डिवाइसों को कॉन्फ़िगर करने की प्रोसेस शुरू करने के लिए, Intent में ACTION_PROVISION_MANAGED_PROFILE भेजें. अगर कॉल पूरा हो जाता है, तो सिस्टम onProfileProvisioningComplete() कॉलबैक को ट्रिगर करता है. इसके बाद, setProfileEnabled() को कॉल किया जा सकता है इस मैनेज की जा रही प्रोफ़ाइल को चालू करें.

डिफ़ॉल्ट रूप से, मैनेज की जा रही प्रोफ़ाइल में ऐप्लिकेशन का सिर्फ़ एक छोटा सबसेट चालू होता है. मैनेज की जा रही प्रोफ़ाइल में ज़्यादा ऐप्लिकेशन इंस्टॉल करने के लिए, enableSystemApp() को कॉल करें.

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

नई सुविधा का इस्तेमाल करने का तरीका जानने के लिए, यहां जाएं: इस रिलीज़ में BasicManagedProfile लागू करने का सैंपल.

डिवाइस का मालिक

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

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

स्क्रीन पिन करना

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

स्क्रीन पिन करने की सुविधा को चालू करने के दो तरीके हैं:

  • मैन्युअल रूप से: उपयोगकर्ता स्क्रीन पिन करने की सुविधा चालू कर सकते हैं सेटिंग > सुरक्षा > स्क्रीन पिन करना और उन टास्क को चुनना जिन्हें वे पिन करना चाहते हैं हाल ही की स्क्रीन में हरे पिन आइकन को स्पर्श करके पिन करें.
  • प्रोग्राम के हिसाब से: प्रोग्राम के हिसाब से स्क्रीन पिन करने की सुविधा चालू करने के लिए, अपने ऐप्लिकेशन से startLockTask() को कॉल करें. अगर अनुरोध करने वाला ऐप्लिकेशन, डिवाइस का मालिक नहीं है, तो उपयोगकर्ता से पुष्टि करने के लिए कहा जाएगा. डिवाइस के मालिक का ऐप्लिकेशन, setLockTaskPackages() तरीका इस्तेमाल करके, ऐप्लिकेशन को पिन करने की सुविधा चालू कर सकता है. इसके लिए, उपयोगकर्ता की पुष्टि की ज़रूरत नहीं होती.

टास्क लॉक करने की सुविधा चालू होने पर, यह कार्रवाई होती है:

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

प्रिंटिंग फ़्रेमवर्क

PDF को बिट मैप के रूप में रेंडर करें

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

नए एपीआई इस्तेमाल करने का उदाहरण देखने के लिए, PdfRendererBasic देखें सैंपल.

सिस्टम

ऐप्‍स उपयोग के आंकड़ेatistics

अब किसी Android डिवाइस पर, ऐप्लिकेशन के इस्तेमाल का इतिहास ऐक्सेस किया जा सकता है. इसके लिए, नया android.app.usage एपीआई. यह एपीआई इस्तेमाल के बारे में ज़्यादा जानकारी देता है दी गई जानकारी के आधार पर, getRecentTasks() तरीका. इस एपीआई का इस्तेमाल करने के लिए, आपको पहले अपने मेनिफ़ेस्ट में "android.permission.PACKAGE_USAGE_STATS" अनुमति का एलान करना होगा. उपयोगकर्ता को सेटिंग > सुरक्षा > ऐप्लिकेशन में जाकर, इस ऐप्लिकेशन के लिए ऐक्सेस भी चालू करना होगा. इसके लिए, उसे ऐप्लिकेशन के इस्तेमाल से जुड़ी अनुमति देनी होगी.

सिस्टम हर ऐप्लिकेशन के हिसाब से इस्तेमाल का डेटा इकट्ठा करता है. हर दिन, हफ़्ते, महीने, और साल के हिसाब से डेटा उपलब्ध होता है. सिस्टम इस डेटा को ज़्यादा से ज़्यादा इतनी अवधि तक सेव रखता है:

  • रोज़ का डेटा: सात दिन
  • हर हफ़्ते का डेटा: चार हफ़्ते
  • हर महीने का डेटा: छह महीने
  • सालाना डेटा: 2 साल

हर ऐप्लिकेशन के लिए, सिस्टम नीचे दिया गया डेटा रिकॉर्ड करता है:

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

जांच करना और सुलभता

जांच और सुलभता से जुड़े सुधार

Android 5.0 में, जांच करने और ऐप्लिकेशन को सभी के लिए उपलब्ध कराने के लिए ये सुविधाएं जोड़ी गई हैं:

  • नया getWindowAnimationFrameStats() और getWindowContentFrameStats() तरीकों से विंडो ऐनिमेशन और कॉन्टेंट के लिए फ़्रेम के आंकड़े कैप्चर किए जाते हैं. इन तरीकों की मदद से, इंस्ट्रूमेंटेशन टेस्ट लिखे जा सकते हैं. इससे यह पता लगाया जा सकता है कि कोई ऐप्लिकेशन, उपयोगकर्ता को बेहतर अनुभव देने के लिए, रीफ़्रेश फ़्रीक्वेंसी के हिसाब से फ़्रेम रेंडर कर रहा है या नहीं.
  • executeShellCommand() नए तरीके की मदद से, अपने इंस्ट्रूमेंटेशन टेस्ट से शेल निर्देशों को चलाया जा सकता है. कॉन्टेंट बनाने कमांड को चलाना, किसी होस्ट से adb shell चलाने के जैसा ही है से कनेक्ट किया जा सकता है, जिससे आप शेल-आधारित टूल, जैसे कि dumpsys, am, content, और pm.
  • सुलभता एपीआई (जैसे, UiAutomator) का इस्तेमाल करने वाली सुलभता सेवाएं और टेस्ट टूल, अब स्क्रीन पर उन विंडो की प्रॉपर्टी के बारे में पूरी जानकारी हासिल कर सकते हैं जिनसे सामान्य उपयोगकर्ता इंटरैक्ट कर सकते हैं. AccessibilityWindowInfo ऑब्जेक्ट की सूची पाने के लिए, getWindows() के नए तरीके को कॉल करें.
  • नया AccessibilityNodeInfo.AccessibilityAction क्लास की मदद से, स्टैंडर्ड या कस्टमाइज़ की गई कार्रवाइयां AccessibilityNodeInfo. नया AccessibilityNodeInfo.AccessibilityAction क्लास, कार्रवाई से जुड़े एपीआई को उन एपीआई की जगह लेती है जो पहले AccessibilityNodeInfo.
  • Android 5.0, लिखाई को बोली में बदलने की सुविधा पर बेहतर कंट्रोल देता है आपका ऐप्लिकेशन. नई Voice क्लास आपके ऐप्लिकेशन को ये काम करने की अनुमति देती है विशिष्ट स्थान-भाषाओं, क्वालिटी, और इंतज़ार के समय से जुड़ी वॉइस प्रोफ़ाइल का इस्तेमाल किया जा सकता है रेटिंग, और लिखाई को बोली में बदलने वाले इंजन के लिए खास पैरामीटर हैं.

IME

इनपुट भाषाओं के बीच आसानी से स्विच किया जा सकता है

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

इसके अलावा, फ़्रेमवर्क अब यह जांच करता है कि अगले IME में स्विच करने का कोई तरीका है या नहीं. साथ ही, यह भी जांचता है कि वह IME, अगले IME पर स्विच करने की सुविधा देता है या नहीं. स्विच करने की सुविधा वाले IME, बिना स्विच करने की सुविधा वाले IME पर स्विच नहीं करेंगे. व्यवहार में यह बदलाव, switchToNextInputMethod() तरीके से लागू किया जाता है.

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

मेनिफ़ेस्ट फ़ाइल

ज़रूरी सुविधाएं, जिनके बारे में एलान करना ज़रूरी है

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

उपयोगकर्ता की अनुमतियां

यह अनुमति अब इसमें काम करती है: <uses-permission> एलिमेंट का इस्तेमाल करके, उन अनुमतियों के बारे में बताया है जो आपके ऐप्लिकेशन को कुछ एपीआई ऐक्सेस करने के लिए ज़रूरी हैं.

  • BIND_DREAM_SERVICE: एपीआई को टारगेट करते समय लेवल 21 और उससे ऊपर का लेवल 21 और उससे ऊपर के लेवल के लिए, यह अनुमति Daydream सेवा, ताकि यह पक्का किया जा सके कि सिर्फ़ सिस्टम उससे जुड़ सके.