Android 5.0 API

एपीआई लेवल: 21

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

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

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

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

Android 5.0 के लिए ऐप्लिकेशन बनाना शुरू करने के लिए, आपको पहले Android SDK टूल का इस्तेमाल करें. इसके बाद, SDK Manager का इस्तेमाल करें Android 5.0 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 क्लास की मदद से.

कोई लॉजिकल ब्रेक डालने के लिए, ताकि सिस्टम आपकी गतिविधि को नया मान सके टास्क है, तो FLAG_ACTIVITY_NEW_DOCUMENT का इस्तेमाल तब करें, जब startActivity() के साथ गतिविधि लॉन्च की जा रही है. इस तरह की सेटिंग देखने के लिए, <गतिविधि> एलिमेंट का 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 क्लास, इससे आपका ऐप्लिकेशन, WebView को अनुमति दे पाएगा वेब एपीआई की मदद से, कैमरा और माइक्रोफ़ोन जैसे सुरक्षित संसाधनों को ऐक्सेस करने की सुविधा जैसे कि getUserMedia(). आपके ऐप्लिकेशन में, Google Workspace for Education Plus इन संसाधनों के लिए Android की अनुमतियां, ताकि WebView.

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

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

स्क्रीन कैप्चर करना और उसे शेयर करना

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

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

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

सूचनाएं

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

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

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

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

जब विज़िबिलिटी का लेवल VISIBILITY_PRIVATE हो, तो आपके पास सूचना का बदला हुआ वर्शन भी देने का विकल्प होता है निजी जानकारी छिपाने वाला कॉन्टेंट. उदाहरण के लिए, कोई मैसेज (एसएमएस) ऐप्लिकेशन "आपके पास 3 नए मैसेज हैं" वाली सूचना लेकिन मैसेज को छिपा देता है कॉन्टेंट और उसे भेजने वाले लोग. यह वैकल्पिक सूचना देने के लिए, पहले 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 वर्शन के बारे में जानने के लिए, OpenGL ES API की गाइड.

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 सुनने वाले व्यक्ति को onCaptureCompleted(), इससे आपको इमेज कैप्चर मेटाडेटा के साथ CaptureResult.

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

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

अपडेट किए गए वर्शन को इस्तेमाल करने का तरीका जानने के लिए कैमरा एपीआई, Camera2Basic और Camera2Video को लागू करने का तरीका देखें सैंपल.

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

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

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

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

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

नई MediaSession क्लास को बदल दिया जाता है काम नहीं करने वाली RemoteControlClient क्लास का इस्तेमाल करती है और इसमें ट्रांसपोर्ट कंट्रोल और मीडिया बटन को हैंडल करने के लिए कॉलबैक तरीकों का एक सेट होता है. अगर आपका ऐप्लिकेशन मीडिया प्लेबैक उपलब्ध कराता है और Android पर चलता है टीवी या 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 इंस्टेंस, जिनमें सबट्री को चुना जा सकता है, इससे उपयोगकर्ता को डायरेक्ट्री ब्राउज़ करने और चुनने की अनुमति मिलती है. लौटाए गए यूआरआई से यह पता चलता है चुने गए सबट्री को ऐक्सेस करना. इसके बाद, buildChildDocumentsUriUsingTree() का इस्तेमाल किया जा सकता है और buildDocumentUriUsingTree() इसके साथ query() को भी देखा जा सकता है.

नए 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.Builder क्लास का इस्तेमाल करें NetworkRequest ऑब्जेक्ट बनाएं और नेटवर्क की सुविधाएं बताएं और ट्रांसपोर्ट का वह टाइप चुनें जिसमें आपके ऐप्लिकेशन की दिलचस्पी है.
  3. सही नेटवर्क स्कैन करने के लिए, requestNetwork() पर कॉल करें या registerNetworkCallback() और पास NetworkRequest ऑब्जेक्ट और लागू करने की प्रक्रिया ConnectivityManager.NetworkCallback. इसका इस्तेमाल करें अगर आपको किसी सही नेटवर्क का पता चलने पर उस पर स्विच करना है, तो requestNetwork() तरीका; रिसीव करने के लिए सक्रिय रूप से स्विच किए बिना, केवल स्कैन किए गए नेटवर्क के लिए सूचनाओं के लिए, registerNetworkCallback() तरीका इस्तेमाल करें.

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

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

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

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

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

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

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

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

  • 'Android बीम' अब शेयर करें मेन्यू में उपलब्ध है.
  • आपका ऐप्लिकेशन उपयोगकर्ता के डिवाइस पर Android बीम की मदद से, इस तरह से डेटा शेयर कर सकता है: invokeBeam() पर कॉल किया जा रहा है. इससे उपयोगकर्ता को मैन्युअल रूप से डिवाइस को दूसरे डिवाइस के ख़िलाफ़ टैप करने की ज़रूरत नहीं पड़ती. डेटा ट्रांसफ़र को पूरा करने के लिए एनएफ़सी की सुविधा वाला डिवाइस.
  • UTF-8 टेक्स्ट डेटा वाला NDEF रिकॉर्ड बनाने के लिए, 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>

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

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.
  • Accessibility API का इस्तेमाल करने वाली सुलभता सेवाएं और जांच टूल (जैसे कि UiAutomator) अब आप विंडो के गुणों के बारे में विस्तृत जानकारी स्क्रीन है, जिससे देख सकने वाले उपयोगकर्ता इंटरैक्ट कर सकते हैं. इसकी सूची को फिर से पाने के लिए AccessibilityWindowInfo ऑब्जेक्ट, नए को कॉल करें getWindows() तरीका.
  • नया AccessibilityNodeInfo.AccessibilityAction क्लास की मदद से, स्टैंडर्ड या कस्टमाइज़ की गई कार्रवाइयां AccessibilityNodeInfo. नया AccessibilityNodeInfo.AccessibilityAction क्लास, कार्रवाई से जुड़े एपीआई को उन एपीआई की जगह लेती है जो पहले AccessibilityNodeInfo.
  • Android 5.0, लिखाई को बोली में बदलने की सुविधा पर बेहतर कंट्रोल देता है आपका ऐप्लिकेशन. नई Voice क्लास आपके ऐप्लिकेशन को ये काम करने की अनुमति देती है विशिष्ट स्थान-भाषाओं, क्वालिटी, और इंतज़ार के समय से जुड़ी वॉइस प्रोफ़ाइल का इस्तेमाल किया जा सकता है रेटिंग, और लिखाई को बोली में बदलने वाले इंजन के लिए खास पैरामीटर हैं.

IME

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

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

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

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

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

एलान करने लायक ज़रूरी सुविधाएं

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

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

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

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