Android 6.0 API

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

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

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

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

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

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

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

फ़िंगरप्रिंट से पुष्टि

इस रिलीज़ में नए एपीआई उपलब्ध कराए गए हैं. इनकी मदद से, उपयोगकर्ताओं की पुष्टि करने के लिए, उन डिवाइसों पर फ़िंगरप्रिंट स्कैन का इस्तेमाल किया जा सकता है जिन पर यह सुविधा काम करती है. इन एपीआई का इस्तेमाल, Android Keystore सिस्टम के साथ करें.

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

अपने ऐप्लिकेशन में इस सुविधा का इस्तेमाल करने के लिए, पहले अपने मेनिफ़ेस्ट में USE_FINGERPRINT अनुमति जोड़ें.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
फ़िंगरप्रिंट की मदद से पुष्टि करने की सुविधा दिखाने वाला मोबाइल

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

अगर इस सुविधा को टेस्ट किया जा रहा है, तो यह तरीका अपनाएं:

  1. अगर आपने अभी तक Android SDK टूल का 24.3 वर्शन इंस्टॉल नहीं किया है, तो उसे इंस्टॉल करें.
  2. एम्युलेटर में, नया फ़िंगरप्रिंट रजिस्टर करने के लिए, सेटिंग > सुरक्षा > फ़िंगरप्रिंट पर जाएं. इसके बाद, रजिस्टर करने से जुड़े निर्देशों का पालन करें.
  3. फ़िंगरप्रिंट टच इवेंट को एम्युलेट करने के लिए, एमुलेटर का इस्तेमाल करें. इसके लिए, यह कमांड इस्तेमाल करें. लॉकस्क्रीन या अपने ऐप्लिकेशन में फ़िंगरप्रिंट टच इवेंट को एम्युलेट करने के लिए, उसी निर्देश का इस्तेमाल करें.
    adb -e emu finger touch <finger_id>
    

    Windows पर, आपको telnet 127.0.0.1 <emulator-id> के बाद finger touch <finger_id> चलाना पड़ सकता है.

क्रेडेंशियल की पुष्टि करना

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

टाइम आउट की वह अवधि सेट करने के लिए जिसमें उपयोगकर्ता की पुष्टि होने के बाद एक ही कुंजी को फिर से इस्तेमाल किया जा सकता है, KeyGenerator या KeyPairGenerator सेट अप करते समय setUserAuthenticationValidityDurationSeconds() वाले नए तरीके पर कॉल करें.

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

ऐप्लिकेशन जोड़ना

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

ऐप्लिकेशन के लिए ऑटो बैकअप

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

डायरेक्ट शेयर

मोबाइल के सबसे नीचे मौजूद, डायरेक्ट शेयर करने की सुविधा

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

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

यहां दिए गए उदाहरण में, अपने मेनिफ़ेस्ट में ChooserTargetService का एलान करने का तरीका बताया गया है.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

हर उस गतिविधि के लिए जिसे आपको ChooserTargetService के बारे में बताना है, अपने ऐप्लिकेशन मेनिफ़ेस्ट में "android.service.chooser.chooser_target_service" नाम के साथ <meta-data> एलिमेंट जोड़ें.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

वॉइस इंटरैक्शन

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

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

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

Assist API

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

आपका ऐप्लिकेशन, FLAG_SECURE फ़्लैग सेट करके, Assistant के साथ मौजूदा कॉन्टेक्स्ट शेयर नहीं कर सकता. प्लैटफ़ॉर्म, Assistant को सामान्य तौर पर जो जानकारी देता है उसके अलावा, आपका ऐप्लिकेशन नई AssistContent क्लास का इस्तेमाल करके अन्य जानकारी शेयर कर सकता है.

अपने ऐप्लिकेशन से असिस्टेंट को ज़्यादा जानकारी देने के लिए, यह तरीका अपनाएं:

  1. Application.OnProvideAssistDataListener इंटरफ़ेस लागू करें.
  2. registerOnProvideAssistDataListener() का इस्तेमाल करके, इस लिसनर को रजिस्टर करें.
  3. गतिविधि के हिसाब से काम की जानकारी देने के लिए, onProvideAssistData() callback और ज़रूरत पड़ने पर, नए onProvideAssistContent() callback को बदलें.

एडॉप्टेबल स्टोरेज डिवाइस

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

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

इस सुविधा को डीबग करने के लिए, यूएसबी ड्राइव को इस्तेमाल करने की सुविधा चालू की जा सकती है. यह ड्राइव, यूएसबी ऑन-द-गो (OTG) केबल की मदद से Android डिवाइस से कनेक्ट होनी चाहिए. इसके लिए, यह निर्देश चलाएं:

$ adb shell sm set-force-adoptable true

सूचनाएं

इस रिलीज़ में, सूचनाओं के लिए एपीआई में ये बदलाव किए गए हैं:

  • नया INTERRUPTION_FILTER_ALARMS फ़िल्टर लेवल, जो सिर्फ़ अलार्म वाले नए 'परेशान न करें' मोड से जुड़ा है.
  • CATEGORY_REMINDER की नई कैटगरी वैल्यू, जिसका इस्तेमाल उपयोगकर्ता के शेड्यूल किए गए रिमाइंडर को अन्य इवेंट (CATEGORY_EVENT) और अलार्म (CATEGORY_ALARM) से अलग करने के लिए किया जाता है.
  • नई Icon क्लास, जिसे setSmallIcon() और setLargeIcon() तरीकों से अपनी सूचनाओं से अटैच किया जा सकता है. इसी तरह, addAction() तरीका अब drawable रिसॉर्स आईडी के बजाय, Icon ऑब्जेक्ट स्वीकार करता है.
  • getActiveNotifications() का नया तरीका, जिसकी मदद से आपके ऐप्लिकेशन यह पता लगा सकते हैं कि फ़िलहाल कौनसी सूचनाएं चालू हैं.

ब्लूटूथ स्टाइलस की सुविधा

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

स्टाइलस बटन के इंटरैक्शन का पता लगाने के लिए, MotionEvent तरीकों और कॉन्स्टेंट का इस्तेमाल करें:

  • अगर उपयोगकर्ता आपके ऐप्लिकेशन की स्क्रीन पर मौजूद बटन से स्टाइलस को छूता है, तो getTooltype() तरीका TOOL_TYPE_STYLUS दिखाता है.
  • Android 6.0 (एपीआई लेवल 23) को टारगेट करने वाले ऐप्लिकेशन के लिए, जब उपयोगकर्ता स्टाइलस के मुख्य बटन को दबाता है, तो getButtonState() मैथड BUTTON_STYLUS_PRIMARY दिखाता है. अगर स्टाइलस में दूसरा बटन है, तो उपयोगकर्ता के उस बटन को दबाने पर भी वही तरीका BUTTON_STYLUS_SECONDARY दिखाता है. अगर उपयोगकर्ता एक साथ दोनों बटन दबाता है, तो यह तरीका दोनों वैल्यू को या एक साथ दिखाता है (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • कम वर्शन वाले प्लैटफ़ॉर्म को टारगेट करने वाले ऐप्लिकेशन के लिए, getButtonState() तरीका BUTTON_SECONDARY (स्टाइलस के मुख्य बटन को दबाने के लिए), BUTTON_TERTIARY (स्टाइलस के दूसरे बटन को दबाने के लिए) या दोनों वैल्यू दिखाता है.

ब्लूटूथ स्मार्ट (बीएलई) स्कैनिंग की सुविधा को बेहतर बनाया गया

अगर आपका ऐप्लिकेशन ब्लूटूथ स्मार्ट स्कैन करता है, तो नए setCallbackType() तरीके का इस्तेमाल करके बताएं कि आपको सिस्टम को कॉलबैक की सूचना तब देनी है, जब वह पहली बार या लंबे समय के बाद, सेट ScanFilter से मैच करने वाला विज्ञापन पैकेट ढूंढता है या देखता है. स्कैन करने का यह तरीका, प्लैटफ़ॉर्म के पिछले वर्शन में दिए गए तरीके के मुकाबले ज़्यादा बेहतर है.

हॉटस्पॉट 2.0 रिलीज़ 1 सहायता

इस रिलीज़ में, Nexus 6 और Nexus 9 डिवाइसों पर Hotspot 2.0 रिलीज़ 1 स्पेसिफ़िकेशन के लिए सहायता जोड़ी गई है. अपने ऐप्लिकेशन में Hotspot 2.0 क्रेडेंशियल उपलब्ध कराने के लिए, WifiEnterpriseConfig क्लास के नए तरीकों का इस्तेमाल करें. जैसे, setPlmn() और setRealm(). WifiConfiguration ऑब्जेक्ट में, FQDN और providerFriendlyName फ़ील्ड सेट किए जा सकते हैं. isPasspointNetwork() वाले नए तरीके से पता चलता है कि पता चल रहा कोई नेटवर्क, हॉटस्पॉट 2.0 ऐक्सेस पॉइंट को दिखाता है या नहीं.

4K डिसप्ले मोड

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

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

थीम के हिसाब से बदलने वाली ColorStateList

Android 6.0 (एपीआई लेवल 23) पर चलने वाले डिवाइसों के लिए, अब ColorStateList में थीम एट्रिब्यूट का इस्तेमाल किया जा सकता है. Resources.getColorStateList() और Resources.getColor() तरीके इस्तेमाल नहीं किए जा रहे हैं. अगर इन एपीआई को कॉल किया जा रहा है, तो इसके बजाय नए Context.getColorStateList() या Context.getColor() तरीके कॉल करें. ये तरीके, ContextCompat के ज़रिए v4 appcompat लाइब्रेरी में भी उपलब्ध हैं.

ऑडियो से जुड़ी सुविधाएं

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

  • नए android.media.midi एपीआई की मदद से, MIDI प्रोटोकॉल के लिए सहायता. MIDI इवेंट भेजने और पाने के लिए, इन एपीआई का इस्तेमाल करें.
  • डिजिटल ऑडियो कैप्चर और प्लेबैक ऑब्जेक्ट बनाने के लिए, नई AudioRecord.Builder और AudioTrack.Builder क्लास. साथ ही, सिस्टम के डिफ़ॉल्ट ऑडियो सोर्स और सिंक प्रॉपर्टी को बदलने के लिए, उन्हें कॉन्फ़िगर करें.
  • ऑडियो और इनपुट डिवाइसों को जोड़ने के लिए एपीआई हुक. यह खास तौर पर तब फ़ायदेमंद होता है, जब आपका ऐप्लिकेशन उपयोगकर्ताओं को Android TV से कनेक्ट किए गए गेम कंट्रोलर या रिमोट कंट्रोल से वॉइस सर्च की सुविधा देता हो. जब कोई उपयोगकर्ता खोज शुरू करता है, तो सिस्टम नए onSearchRequested() कॉलबैक को ट्रिगर करता है. उपयोगकर्ता के इनपुट डिवाइस में पहले से माइक्रोफ़ोन मौजूद है या नहीं, यह पता करने के लिए उस कॉलबैक से InputDevice ऑब्जेक्ट पाएं. इसके बाद, hasMicrophone() का नया तरीका इस्तेमाल करें.
  • getDevices() का नया तरीका, जिसकी मदद से सिस्टम से कनेक्ट किए गए सभी ऑडियो डिवाइसों की सूची देखी जा सकती है. किसी ऑडियो डिवाइस के कनेक्ट या डिसकनेक्ट होने पर, सिस्टम आपके ऐप्लिकेशन को इसकी सूचना दे, इसके लिए AudioDeviceCallback ऑब्जेक्ट को भी रजिस्टर किया जा सकता है.

वीडियो की सुविधाएं

इस रिलीज़ में वीडियो प्रोसेसिंग एपीआई में नई सुविधाएं जोड़ी गई हैं. इनमें ये सुविधाएं शामिल हैं:

  • नई MediaSync क्लास, जो ऐप्लिकेशन को ऑडियो और वीडियो स्ट्रीम को सिंक्रोनस रूप से रेंडर करने में मदद करती है. ऑडियो बफ़र, बिना ब्लॉक किए सबमिट किए जाते हैं और कॉलबैक के ज़रिए वापस भेजे जाते हैं. इसमें वीडियो चलाने की डाइनैमिक दर की सुविधा भी काम करती है.
  • नया EVENT_SESSION_RECLAIMED इवेंट, जो बताता है कि ऐप्लिकेशन से खोले गए किसी सेशन को रिसॉर्स मैनेजर ने फिर से हासिल कर लिया है. अगर आपका ऐप्लिकेशन डीआरएम सेशन का इस्तेमाल करता है, तो आपको इस इवेंट को मैनेज करना चाहिए. साथ ही, यह पक्का करना चाहिए कि आपने फिर से हासिल किए गए सेशन का इस्तेमाल न किया हो.
  • नया ERROR_RECLAIMED गड़बड़ी कोड, जो बताता है कि रिसॉर्स मैनेजर ने कोडेक के इस्तेमाल किए गए मीडिया रिसॉर्स पर फिर से दावा किया है. इस अपवाद के साथ, कोडेक को रिलीज़ किया जाना चाहिए, क्योंकि यह टर्मिनल स्टेटस में चला गया है.
  • एक साथ काम करने वाले कोडेक इंस्टेंस की ज़्यादा से ज़्यादा संख्या के बारे में जानकारी पाने के लिए, नया getMaxSupportedInstances() इंटरफ़ेस.
  • तेज़ या स्लो मोशन वाले वीडियो चलाने के लिए, मीडिया प्लेबैक रेट सेट करने का नया setPlaybackParams() तरीका. यह वीडियो के साथ ऑडियो चलाने की स्पीड को अपने-आप बढ़ा या घटा भी सकता है.

कैमरे की सुविधाएं

इस रिलीज़ में कैमरे की फ़्लैशलाइट ऐक्सेस करने और कैमरे को इमेज को दोबारा प्रोसेस करने के लिए, नीचे दिए गए नए एपीआई शामिल हैं:

Flashlight API

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

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

Reprocessing API

Camera2 एपीआई को YUV और निजी तौर पर इस्तेमाल किए जाने वाले अपारदर्शी फ़ॉर्मैट की इमेज को फिर से प्रोसेस करने के लिए उपलब्ध कराया गया है. यह पता करने के लिए कि फिर से प्रोसेसिंग की ये सुविधाएं उपलब्ध हैं या नहीं, getCameraCharacteristics() को कॉल करें और REPROCESS_MAX_CAPTURE_STALL कुंजी देखें. अगर कोई डिवाइस, फिर से प्रोसेस करने की सुविधा देता है, तो createReprocessableCaptureSession() को कॉल करके, फिर से प्रोसेस किया जा सकने वाला कैमरा कैप्चर सेशन बनाया जा सकता है. साथ ही, इनपुट बफ़र को फिर से प्रोसेस करने के लिए अनुरोध किए जा सकते हैं.

इनपुट बफ़र फ़्लो को कैमरे के फिर से प्रोसेस किए जाने वाले इनपुट से कनेक्ट करने के लिए, ImageWriter क्लास का इस्तेमाल करें. खाली बफ़र पाने के लिए, प्रोग्रामिंग मॉडल का यह तरीका अपनाएं:

  1. dequeueInputImage() वाले तरीके को कॉल करें.
  2. इनपुट बफ़र में डेटा भरें.
  3. queueInputImage() तरीके को कॉल करके, कैमरे पर बफ़र भेजें.

अगर PRIVATE इमेज के साथ ImageWriter ऑब्जेक्ट का इस्तेमाल किया जा रहा है, तो आपका ऐप्लिकेशन सीधे तौर पर इमेज का डेटा ऐक्सेस नहीं कर सकता. इसके बजाय, किसी भी बफ़र कॉपी के बिना queueInputImage() तरीके को कॉल करके, PRIVATE इमेज को सीधे ImageWriter पर पास करें.

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

Android for Work की सुविधाएं

इस रिलीज़ में Android for Work के लिए नीचे दिए गए नए एपीआई शामिल हैं:

  • कॉर्पोरेट के मालिकाना हक वाले और एक बार इस्तेमाल किए जाने वाले डिवाइसों के लिए बेहतर कंट्रोल: डिवाइस का मालिक, अब कॉर्पोरेट के मालिकाना हक वाले और एक बार इस्तेमाल किए जाने वाले (सीओएसयू) डिवाइसों को बेहतर तरीके से मैनेज करने के लिए, इन सेटिंग को कंट्रोल कर सकता है:
    • setKeyguardDisabled() तरीके से, कीगार्ड को बंद या फिर से चालू करें.
    • setStatusBarDisabled() तरीके का इस्तेमाल करके, स्टेटस बार को बंद या फिर से चालू करें. इसमें क्विक सेटिंग, सूचनाएं, और नेविगेशन स्वाइप-अप जेस्चर शामिल है, जो Google Now को लॉन्च करता है.
    • UserManager कॉन्स्टेंट DISALLOW_SAFE_BOOT की मदद से, सेफ़ बूट को बंद या फिर से चालू करें.
    • STAY_ON_WHILE_PLUGGED_IN कॉन्सटेंट के साथ प्लग-इन होने पर, स्क्रीन को बंद होने से रोकें.
  • डिवाइस के मालिक के तौर पर, ऐप्लिकेशन को चुपचाप इंस्टॉल और अनइंस्टॉल करना: डिवाइस का मालिक अब PackageInstaller एपीआई का इस्तेमाल करके, ऐप्लिकेशन को चुपचाप इंस्टॉल और अनइंस्टॉल कर सकता है. इसके लिए, उसे Google Play for Work का इस्तेमाल करने की ज़रूरत नहीं है. अब डिवाइस के मालिक के ज़रिए डिवाइसों को प्रोवाइड किया जा सकता है. इससे, उपयोगकर्ता के इंटरैक्शन के बिना ऐप्लिकेशन फ़ेच और इंस्टॉल किए जा सकते हैं. यह सुविधा, Google खाते को चालू किए बिना, कीऑस्क या ऐसे अन्य डिवाइसों के लिए, एक बार टच किए बिना प्रावधान करने की सुविधा को चालू करने के लिए बहुत काम की है.
  • एन्टरप्राइज़ सर्टिफ़िकेट का ऐक्सेस चुपचाप देना: जब कोई ऐप्लिकेशन choosePrivateKeyAlias() को कॉल करता है, तो उपयोगकर्ता को सर्टिफ़िकेट चुनने के लिए कहा जाता है. इससे पहले, प्रोफ़ाइल या डिवाइस के मालिक के पास, अनुरोध करने वाले ऐप्लिकेशन को चुपचाप उपनाम देने के लिए, onChoosePrivateKeyAlias() का इस्तेमाल करने का विकल्प होता है. इस सुविधा की मदद से, मैनेज किए जा रहे ऐप्लिकेशन को उपयोगकर्ता के इंटरैक्शन के बिना सर्टिफ़िकेट का ऐक्सेस दिया जा सकता है.
  • सिस्टम अपडेट अपने-आप स्वीकार होना. setSystemUpdatePolicy() के साथ सिस्टम अपडेट की नीति सेट करने से, डिवाइस का मालिक अब सिस्टम अपडेट अपने-आप स्वीकार कर सकता है. उदाहरण के लिए, कीऑस्क डिवाइस के मामले में या अपडेट को टाला जा सकता है. इसके अलावा, एडमिन एक दिन की समय अवधि सेट कर सकता है जिसमें अपडेट लेना ज़रूरी है. उदाहरण के लिए, उस समय जब कीऑस्क डिवाइस का इस्तेमाल नहीं किया जा रहा हो. सिस्टम अपडेट उपलब्ध होने पर, सिस्टम यह देखता है कि डिवाइस से जुड़ी नीति के कंट्रोलर ऐप्लिकेशन ने सिस्टम अपडेट की नीति सेट की है या नहीं. साथ ही, सिस्टम उसके हिसाब से काम करता है.
  • सर्टिफ़िकेट इंस्टॉल करने की अनुमति देना: प्रोफ़ाइल या डिवाइस का मालिक, अब तीसरे पक्ष के ऐप्लिकेशन को इन DevicePolicyManager सर्टिफ़िकेट मैनेजमेंट एपीआई को कॉल करने की अनुमति दे सकता है:
  • Android for Work में, ऑफ़िस में मौजूद होने की स्थिति की सूचना देने वाली सुविधा दिखाने वाला मोबाइल
  • डेटा के इस्तेमाल को ट्रैक करना. अब प्रोफ़ाइल या डिवाइस का मालिक, सेटिंग > डेटा के इस्तेमाल में दिखने वाले डेटा के इस्तेमाल के आंकड़ों के लिए क्वेरी कर सकता है. इसके लिए, उसे NetworkStatsManager के नए तरीकों का इस्तेमाल करना होगा. प्रोफ़ाइल के मालिकों को, मैनेज की जा रही प्रोफ़ाइल के डेटा के बारे में क्वेरी करने की अनुमति अपने-आप मिल जाती है. वहीं, डिवाइस के मालिकों को मैनेज किए जा रहे प्राइमरी उपयोगकर्ता के ऐप्लिकेशन के इस्तेमाल के डेटा का ऐक्सेस मिलता है.
  • रनटाइम की अनुमतियों को मैनेज करना:

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

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