एपीआई लेवल: 12
डेवलपर के लिए, Android 3.1 प्लेटफ़ॉर्म
(HONEYCOMB_MR1
) इस तौर पर उपलब्ध है
Android SDK के लिए डाउनलोड किया जा सकने वाला कॉम्पोनेंट. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में ये चीज़ें शामिल हैं
एक Android लाइब्रेरी और सिस्टम इमेज, साथ ही एम्युलेटर स्किन का एक सेट और
वगैरह को कॉपी करने का विकल्प है. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में कोई भी बाहरी लाइब्रेरी मौजूद नहीं है.
डेवलपर के लिए, Android 3.1 प्लेटफ़ॉर्म Android SDK के लिए डाउनलोड किया जा सकने वाला कॉम्पोनेंट. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में ये चीज़ें शामिल हैं एक Android लाइब्रेरी और सिस्टम इमेज, साथ ही एम्युलेटर स्किन का एक सेट और वगैरह को कॉपी करने का विकल्प है. Android 3.1 पर डेवलप करना या उसकी जांच करना शुरू करने के लिए, Android SDK Manager का इस्तेमाल करके, प्लैटफ़ॉर्म को अपने SDK टूल में डाउनलोड करें.
एपीआई की खास जानकारी
नीचे दिए गए सेक्शन से इस बात की खास जानकारी मिलती है कि डेवलपर के लिए नया क्या है जिसमें फ़्रेमवर्क API में नई सुविधाएं और बदलाव शामिल हैं. पिछला वर्शन.
यूएसबी एपीआई
Android 3.1, Google Play पर प्लैटफ़ॉर्म पर चल रहे ऐप्लिकेशन के साथ कनेक्ट किए गए सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) को इंटिग्रेट करना. ये एपीआई, यूएसबी (यूनिवर्सल सीरियल बस) स्टैक और उन सेवाओं पर आधारित हैं जो यह प्लैटफ़ॉर्म में पहले से मौजूद है. यह यूएसबी होस्ट और डिवाइस, दोनों पर काम करता है इंटरैक्शन. API का उपयोग करके, डेवलपर ऐसे ऐप्लिकेशन बना सकते हैं जो कनेक्ट किए गए अलग-अलग तरह के डिवाइसों को खोजने, उनसे बातचीत करने, और उन्हें मैनेज करने की सुविधा यूएसबी.
स्टैक और एपीआई, बुनियादी तौर पर दो तरह के यूएसबी हार्डवेयर में अंतर करते हैं. Android पर चलने वाला डिवाइस, होस्ट के तौर पर काम कर रहा है या बाहरी हार्डवेयर होस्ट के रूप में काम कर रहा है:
- यूएसबी डिवाइस कनेक्ट किया गया हार्डवेयर का एक हिस्सा होता है, जो होस्ट के तौर पर काम करने के लिए, Android पर चलने वाला डिवाइस. उदाहरण के लिए, ज़्यादातर इनपुट डिवाइस, माउस, और जॉयस्टिक, यूएसबी डिवाइस हैं. उसी तरह, कई कैमरे, हब वगैरह भी होते हैं.
- यूएसबी ऐक्सेसरी कनेक्ट किए गए हार्डवेयर का एक हिस्सा होता है, जिसमें यूएसबी होती है होस्ट कंट्रोलर, पावर उपलब्ध कराता है, और जिसे कनेक्ट करने के लिए डिज़ाइन किया गया है यूएसबी की मदद से Android पर चलने वाले डिवाइस. कई सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) ऐक्सेसरी, रोबोटिक्स कंट्रोलर से लेकर म्यूज़िकल इक्विपमेंट, एक्सरसाइज़ साइकल, के साथ और भी बहुत कुछ.
यूएसबी डिवाइसों और यूएसबी ऐक्सेसरी, दोनों के लिए प्लैटफ़ॉर्म के यूएसबी एपीआई, डिस्कवरी को इंटेंट ब्रॉडकास्ट की मदद से कनेक्ट या डिसकनेक्ट करते समय काम करते हैं. साथ ही, स्टैंडर्ड इंटरफ़ेस, एंडपॉइंट, और ट्रांसफ़र मोड (कंट्रोल, बल्क, और इंटरप्ट) भी काम करते हैं.
यूएसबी एपीआई, android.hardware.usb
पैकेज में उपलब्ध हैं. कॉन्टेंट बनाने
सेंट्रल क्लास UsbManager
है, जो
पहचान करने और बातचीत करने के लिए मददगार तरीके
और यूएसबी डिवाइस और यूएसबी ऐक्सेसरी, दोनों के लिए इस्तेमाल किया जा सकता है. ऐप्लिकेशन प्राप्त कर सकते हैं
UsbManager
. इसके बाद, अटैच की गई सूची के लिए क्वेरी करें
और फिर उनसे कनेक्ट कर सकते हैं या उन्हें मैनेज कर सकते हैं.
UsbManager
ऐसे इंटेंट ऐक्शन के बारे में भी बताता है
सिस्टम ब्रॉडकास्ट करता है. यूएसबी डिवाइस या ऐक्सेसरी के जुड़े होने की सूचना देने के लिए या
डिटैच किया गया.
अन्य क्लास में ये शामिल हैं:
UsbDevice
, यह एक क्लास है, जो यूएसबी डिवाइस के तौर पर कनेक्ट किए गए बाहरी हार्डवेयर को दिखाती है. इसमें Android डिवाइस, होस्ट के तौर पर काम करता है.UsbAccessory
, बाहरी हार्डवेयर के बारे में जानकारी दे रहा है USB होस्ट के रूप में कनेक्ट होता है (जिसमें Android-पावर्ड डिवाइस USB की तरह काम करता है डिवाइस).UsbInterface
औरUsbEndpoint
, जो किसी डिवाइस के लिए स्टैंडर्ड यूएसबी इंटरफ़ेस और एंडपॉइंट का ऐक्सेस देते हैं.UsbDeviceConnection
औरUsbRequest
, यूएसबी डिवाइस से डेटा भेजने और पाने के लिए. साथ ही, सिंक और असिंक के हिसाब से कंट्रोल मैसेज भेजने और पाने के लिए.UsbConstants
, जो इसके लिए कॉन्सटेंट देता है एंडपॉइंट टाइप, डिवाइस क्लास वगैरह की जानकारी देनी होगी.
ध्यान दें कि भले ही यूएसबी स्टैक, प्लैटफ़ॉर्म में पहले से मौजूद है, लेकिन असल सपोर्ट यूएसबी होस्ट और ओपन ऐक्सेसरी मोड के लिए, करते हैं. खास तौर पर, होस्ट मोड, सही यूएसबी का इस्तेमाल करता है कंट्रोलर हार्डवेयर की जानकारी भी उपलब्ध कराई जाएगी.
इसके अलावा, डेवलपर Google Play पर फ़िल्टर करने का अनुरोध कर सकते हैं. जैसे: उनके ऐप्लिकेशन उन उपयोगकर्ताओं के लिए उपलब्ध नहीं हैं जिनके डिवाइस यूएसबी की मदद से काम करता है. फ़िल्टर करने का अनुरोध करने के लिए, एक या दोनों एलिमेंट जोड़ें ऐप्लिकेशन मेनिफ़ेस्ट के नीचे, अगर कोई ज़रूरत हो, तो:
- अगर ऐप्लिकेशन सिर्फ़ उन डिवाइस को दिखना चाहिए जो यूएसबी का इस्तेमाल करते हैं
होस्ट मोड (यूएसबी डिवाइसों का कनेक्शन), तो इस एलिमेंट के बारे में बताएं:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- अगर ऐप्लिकेशन सिर्फ़ उन डिवाइस को दिखना चाहिए जो यूएसबी का इस्तेमाल करते हैं
ऐक्सेसरी (यूएसबी होस्ट के कनेक्शन), इस एलिमेंट के बारे में बताएं:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
इनसे इंटरैक्ट करने वाले ऐप्लिकेशन डेवलप करने के तरीके के बारे में पूरी जानकारी के लिए USB एक्सेसरी, कृपया डेवलपर दस्तावेज़.
USB होस्ट एपीआई का इस्तेमाल करने वाले सैंपल ऐप्लिकेशन देखने के लिए, ADB टेस्ट और मिसाइल लॉन्चर देखें
MTP/PTP API
Android 3.1 में एक नया MTP API जोड़ा गया है. इसकी मदद से, ऐप्लिकेशन सीधे तौर पर कनेक्ट किए गए कैमरों और अन्य PTP डिवाइसों के साथ इंटरैक्ट कर सकते हैं. नया एपीआई डिवाइस के अटैच होने और हटाए जाने पर, सूचना पाने के लिए ऐप्लिकेशन, उन डिवाइसों पर फ़ाइलें और स्टोरेज मैनेज करें. साथ ही, और उनसे महसूस किया जा सकता है. MTP API, पीटीपी (पिक्चर ट्रांसफ़र प्रोटोकॉल) सबसेट को लागू करता है के मानकों के बारे में बताया गया है.
MTP API, android.mtp
पैकेज में उपलब्ध है और
ये क्लास:
MtpDevice
ऐसे MTP डिवाइस को इनकैप्सुलेट करता है जो यूएसबी होस्ट बस से कनेक्ट किया गया है. कोई ऐप्लिकेशन किसी ऑब्जेक्ट को इंस्टैंशिएट कर सकता है और फिर इसकी विधियों का इस्तेमाल करके डिवाइस के बारे में जानकारी हासिल करें और ऑब्जेक्ट सेव करते हैं. साथ ही, कनेक्शन खोलने और डेटा ट्रांसफ़र करने की सुविधा देते हैं. इसके कुछ तरीके यहां दिए गए हैं:getObjectHandles()
, डिवाइस पर मौजूद उन सभी ऑब्जेक्ट के लिए हैंडल की सूची दिखाता है दिए गए फ़ॉर्मैट और पैरंट से मैच करें. किसी ऑब्जेक्ट के बारे में जानकारी पाने के लिए, ऐप्लिकेशन,getObjectInfo()
को हैंडल पास कर सकता है.importFile()
की मदद से, ऐप्लिकेशन किसी ऑब्जेक्ट का डेटा, बाहरी स्टोरेज वाली फ़ाइल में कॉपी कर सकता है स्टोरेज. डेटा के साइज़ और डिवाइसों की स्पीड के आधार पर, यह कॉल किसी भी समय के लिए ब्लॉक हो सकता है. इसलिए, इसे अलग थ्रेड से किया जाना चाहिए.open()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऐप्लिकेशन को कनेक्ट किए गए MTP/PTP डिवाइस को खोलने देता है.getThumbnail()
, ऑब्जेक्ट के थंबनेल को बाइट कलेक्शन के तौर पर दिखाता है.
MtpStorageInfo
में स्टोरेज के बारे में जानकारी होती है किसी MTP डिवाइस पर मौजूद इकाई, जो इसमें बताए गए StorageInfo डेटासेट के मुताबिक है MTP स्पेसिफ़िकेशन के सेक्शन 5.2.2 में बताया गया है. क्लास की विधियों से एक ऐप्लिकेशन (आवेदन) हटाने की सुविधा मिलती है देखें कि क्या स्टोरेज यूनिट की जानकारी वाली स्ट्रिंग, खाली जगह, ज़्यादा से ज़्यादा स्टोरेज कपैसिटी, स्टोरेज आईडी, और वॉल्यूम आइडेंटिफ़ायर होता है.MtpDeviceInfo
के पास किसी MTP डिवाइस की जानकारी है MTP के सेक्शन 5.1.1 में बताए गए DeviceInfo डेटासेट के मुताबिक स्पेसिफ़िकेशन. क्लास की विधियों से ऐप्लिकेशन को डिवाइस के निर्माता, मॉडल, सीरियल नंबर, और वर्शन.MtpObjectInfo
में, MTP डिवाइस पर सेव किए गए ऑब्जेक्ट के बारे में जानकारी होती है. यह जानकारी, MTP स्पेसिफ़िकेशन के सेक्शन 5.3.1 में बताए गए ObjectInfo डेटासेट से मिलती-जुलती होती है. क्लास की विधियों से ऐप्लिकेशन को ऑब्जेक्ट का साइज़, डेटा फ़ॉर्मैट, असोसिएशन का टाइप, बनाने की तारीख, और थंबनेल जानकारी.MtpConstants
, MTP फ़ाइल के एलान के लिए कॉन्सटेंट उपलब्ध कराता है फ़ॉर्मैट कोड, असोसिएशन टाइप, और सुरक्षा की स्थिति.
नए इनपुट डिवाइस और मोशन इवेंट के लिए सहायता
Android 3.1 में इनपुट सबसिस्टम को बेहतर बनाया गया है, ताकि सभी व्यू और विंडो में नए इनपुट डिवाइसों और नए तरह के मोशन इवेंट का इस्तेमाल किया जा सके. डेवलपर इन पर बना सकते हैं इन क्षमताओं की मदद से उपयोगकर्ता माउस का इस्तेमाल करके, अपने ऐप्लिकेशन से इंटरैक्ट कर सकते हैं. ट्रैकबॉल, जॉयस्टिक, गेमपैड और अन्य डिवाइस शामिल हैं, इसके अतिरिक्त कीबोर्ड और टचस्क्रीन.
माउस, स्क्रोलव्हील, और ट्रैकबॉल इनपुट को हैंडल करने के लिए, यह प्लैटफ़ॉर्म इन सुविधाओं के साथ काम करता है दो नई मोशन इवेंट कार्रवाइयां:
ACTION_SCROLL
, जो पॉइंटर की जानकारी देता है वह जगह जहां बिना टच किए स्क्रोल किया जा सकता है, जैसे कि माउस स्क्रोल व्हील से हुआ है. MotionEvent में,AXIS_HSCROLL
औरAXIS_VSCROLL
ऐक्सिस की वैल्यू से मिलते-जुलते स्क्रोल की जानकारी मिलती है गतिविधि.ACTION_HOVER_MOVE
, माउस की मौजूदा स्थिति की जानकारी देता है. ऐसा तब होता है, जब कोई बटन दबाया न गया हो. साथ ही, यह पिछलेHOVER_MOVE
इवेंट के बाद के किसी भी इंटरमीडिएट पॉइंट की जानकारी भी देता है. फ़िलहाल, कर्सर घुमाकर सूचनाओं में जाने और उनसे बाहर निकलने की सुविधा काम नहीं करती.
जॉयस्टिक और गेमपैड का इस्तेमाल करने के लिए, InputDevice
क्लास
इसमें ये नए इनपुट डिवाइस स्रोत शामिल हैं:
SOURCE_CLASS_JOYSTICK
— स्रोत डिवाइस में जॉयस्टिक ऐक्सिस हैं.SOURCE_CLASS_BUTTON
— स्रोत डिवाइस में बटन या कुंजियां हैं.SOURCE_GAMEPAD
— सोर्स डिवाइस इसमें गेमपैड के बटन हैं, जैसे किKEYCODE_BUTTON_A
याKEYCODE_BUTTON_B
. इसका मतलब हैSOURCE_CLASS_BUTTON
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया हैSOURCE_JOYSTICK
— सोर्स डिवाइस इसमें जॉयस्टिक ऐक्सिस हैं. इसका मतलब है कि SOURCE_CLASS_JOYSTICK.
इन नए सोर्स के साथ-साथ, माउस और ट्रैकबॉल से होने वाले मोशन इवेंट के बारे में बताने के लिए, प्लैटफ़ॉर्म अब MotionEvent
पर ऐक्सिस कोड तय करता है. यह उसी तरह होता है जिस तरह KeyEvent
पर की कोड तय किए जाते हैं. जॉयस्टिक के लिए नए ऐक्सिस कोड
और गेम कंट्रोलर में
AXIS_HAT_X
, AXIS_HAT_Y
, AXIS_RTRIGGER
, AXIS_ORIENTATION
, AXIS_THROTTLE
, और कई अन्य.
मौजूदा MotionEvent
ऐक्स को AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
, और AXIS_ORIENTATION
से दिखाया जाता है.
इसके अलावा, MotionEvent
कई जेनरिक प्रॉडक्ट की जानकारी देता है
वे ऐक्सिस कोड जिनका इस्तेमाल तब किया जाता है, जब फ़्रेमवर्क को यह पता नहीं चलता कि किसी
खास ऐक्सिस पर. कुछ खास डिवाइस
मोशन डेटा को ऐप्स में भेजना. ऐक्सिस और उनके सही मतलब की पूरी सूची के लिए, MotionEvent
क्लास का दस्तावेज़ देखें.
प्लैटफ़ॉर्म, ऐप्लिकेशन को एक साथ कई मोशन इवेंट उपलब्ध कराता है. इसलिए, किसी एक इवेंट में मौजूदा स्थिति और एक से ज़्यादा पुरानी गतिविधियां शामिल हो सकती हैं.
ऐप्लिकेशन को पाने के लिए getHistorySize()
का उपयोग करना चाहिए
पुराने सैंपल की संख्या पता कर सकते हैं और फिर सभी पुराने सैंपल को वापस पा सकते हैं और उन्हें प्रोसेस कर सकते हैं
getHistoricalAxisValue()
का इस्तेमाल करके सैंपल देखें. इसके बाद, आवेदनों को वर्तमान
getAxisValue()
का इस्तेमाल करके सैंपल.
कुछ ऐक्सिस को ऐक्सेस करने के खास तरीकों का इस्तेमाल करके हासिल किया जा सकता है. उदाहरण के लिए, ऐप्लिकेशन getAxisValue()
को कॉल करने के बजाय, getX()
को कॉल कर सकते हैं. जिन ऐक्स में पहले से ऐक्सेसर मौजूद हैं उनमें AXIS_X
, AXIS_Y
,
AXIS_PRESSURE
, AXIS_SIZE
, AXIS_TOUCH_MAJOR
, AXIS_TOUCH_MINOR
, AXIS_TOOL_MAJOR
, AXIS_TOOL_MINOR
, और AXIS_ORIENTATION
.
हर इनपुट डिवाइस का एक यूनीक आईडी होता है. यह आईडी सिस्टम से असाइन किया जाता है. यह आईडी,
एक से ज़्यादा सोर्स होते हैं. जब कोई डिवाइस एक से ज़्यादा सोर्स उपलब्ध कराता है, तो एक से ज़्यादा सोर्स एक ही ऐक्सिस का इस्तेमाल करके ऐक्सिस डेटा उपलब्ध करा सकते हैं. उदाहरण के लिए, कोई स् पर्श इवेंट आ रहा है
टच सोर्स से, स्क्रीन की पोज़िशन के डेटा के लिए X ऐक्सिस का इस्तेमाल किया जाता है, जबकि जॉयस्टिक का इस्तेमाल किया जाता है
जॉयस्टिक सोर्स से आने वाला इवेंट, स्टिक की पोज़िशन के लिए X ऐक्सिस का इस्तेमाल करेगा
आज़माएं. इस कारण से, एप्लिकेशन के लिए ऐक्सिस को समझना
जिस सोर्स से वे वैल्यू दिखती हैं उसके हिसाब से वैल्यू दी जाती हैं. किसी मोशन इवेंट को हैंडल करते समय, ऐप्लिकेशन को InputDevice
क्लास के तरीकों का इस्तेमाल करना चाहिए, ताकि यह पता लगाया जा सके कि किसी डिवाइस या सोर्स पर कौनसे ऐक्सिस काम करते हैं. खास तौर पर,
ऐप्लिकेशन किसी डिवाइस के सभी ऐक्सिस या किसी डिवाइस के सभी ऐक्सिस से जुड़ी क्वेरी करने के लिए, getMotionRanges()
का इस्तेमाल कर सकते हैं
डिवाइस का सोर्स. दोनों मामलों में, ऐक्सिस की रेंज की जानकारी
InputDevice.MotionRange
ऑब्जेक्ट
हर ऐक्सिस के मान में.
आख़िर में, जॉयस्टिक, गेमपैड, माउस, और
ट्रैकबॉल, टच इवेंट नहीं हैं. प्लैटफ़ॉर्म,
View
को "सामान्य" की तरह पास करना मोशन इवेंट.
खास तौर पर, यह नॉन-टच मोशन इवेंट को
onTouchEvent()
के बजाय, onGenericMotionEvent()
पर कॉल के ज़रिए View
.
इवेंट सोर्स क्लास के आधार पर, प्लैटफ़ॉर्म सामान्य मोशन इवेंट को अलग-अलग तरीके से डिस्पैच करता है. SOURCE_CLASS_POINTER
इवेंट, पॉइंटर के नीचे मौजूद View
पर जाते हैं. यह ठीक वैसे ही होता है जैसे टच इवेंट काम करते हैं. बाकी सभी, फ़िलहाल फ़ोकस किए गए View
पर जाते हैं.
उदाहरण के लिए, इसका मतलब है कि View
को फ़ोकस करने पर,
जॉयस्टिक इवेंट पाएँ. अगर ज़रूरत हो, तो ऐप्लिकेशन इन इवेंट को
इसके बजाय, onGenericMotionEvent()
लागू करके ऐक्टिविटी या डायलॉग के लेवल पर पहुंचें.
जॉयस्टिक गति का उपयोग करने वाला नमूना एप्लिकेशन देखने के लिए इवेंट के लिए, GameController Input देखें और GameView शामिल है.
RTP API
Android 3.1, पहले से मौजूद आरटीपी (रीयल-टाइम ट्रांसपोर्ट प्रोटोकॉल) के लिए एपीआई की जानकारी दिखाता है स्टैक करें, किस ऐप्लिकेशन का इस्तेमाल, मांग पर या इंटरैक्टिव डेटा को मैनेज करने के लिए किया जा सकता है स्ट्रीमिंग. खास तौर पर, ऐसे ऐप्लिकेशन जो वीओआईपी, पुश-टू-टॉक, कॉन्फ़्रेंसिंग, और ऑडियो स्ट्रीमिंग, सेशन शुरू करने और कॉन्टेंट भेजने या पाने के लिए इस एपीआई का इस्तेमाल कर सकते हैं किसी भी उपलब्ध नेटवर्क पर डेटा स्ट्रीम.
आरटीपी एपीआई, android.net.rtp
पैकेज में उपलब्ध है. क्लास
शामिल करें:
RtpStream
, स्ट्रीम की बुनियादी क्लास, जो आरटीपी पर मीडिया पेलोड के साथ नेटवर्क पैकेट भेजती है और पाती है.AudioStream
,RtpStream
का एक सबक्लास है, जो आरटीपी पर ऑडियो पेलोड भेजता है.AudioGroup
, एक लोकल ऑडियो हब है. डिवाइस के स्पीकर, माइक्रोफ़ोन, औरAudioStream
को मिक्स किया जा रहा है.AudioCodec
, जिसमें कोडेक का कलेक्शन होता हैAudioStream
के लिए तय किया गया है.
ऑडियो कॉन्फ़्रेंसिंग और मिलते-जुलते इस्तेमाल के लिए, ऐप्लिकेशन स्ट्रीम के एंडपॉइंट के तौर पर दो क्लास को इंस्टैंशिएट करता है:
AudioStream
एक रिमोट एंडपॉइंट के बारे में बताता है और इसमें शामिल होता है और कॉन्फ़िगर की गईAudioCodec
.AudioGroup
किसी एक के लिए लोकल एंडपॉइंट दिखाता है या ज़्यादाAudioStream
.AudioGroup
मिक्स सभीAudioStream
. साथ ही, डिवाइस के साथ वैकल्पिक रूप से इंटरैक्ट करता है स्पीकर और माइक्रोफ़ोन एक साथ.
सबसे आसान तरीके में एक रिमोट एंडपॉइंट और लोकल एंडपॉइंट शामिल होते हैं.
ज़्यादा मुश्किल इस्तेमाल के लिए, कृपया यहां बताई गई सीमाएं देखें
AudioGroup
.
RTP API का इस्तेमाल करने के लिए, ऐप्लिकेशन को इसके ज़रिए उपयोगकर्ता से अनुमति का अनुरोध करना होगा:
<uses-permission
android:name="android.permission.INTERNET">
का एलान किया जा रहा है
की मेनिफ़ेस्ट फ़ाइलों में कर सकते हैं. डिवाइस के माइक्रोफ़ोन को ऐक्सेस करने के लिए, <uses-permission
android:name="android.permission.RECORD_AUDIO">
की अनुमति भी ज़रूरी है.
साइज़ बदलने की सुविधा वाले ऐप्लिकेशन विजेट
Android 3.1 से, डेवलपर अपने होमस्क्रीन विजेट के साइज़ में बदलाव कर सकते हैं. इसके लिए, वे विजेट को हॉरिज़ॉन्टल, वर्टिकल या दोनों अक्षों पर रीसाइज़ कर सकते हैं. उपयोगकर्ता, विजेट का साइज़ बदलने के हैंडल दिखाने के लिए, उसे दबाकर रखते हैं. इसके बाद, लेआउट ग्रिड पर साइज़ बदलने के लिए, हॉरिज़ॉन्टल और/या वर्टिकल हैंडल को खींचते और छोड़ते हैं.
डेवलपर
विजेट के AppWidgetProviderInfo
मेटाडेटा में resizeMode
एट्रिब्यूट. इस
resizeMode
एट्रिब्यूट में "हॉरिज़ॉन्टल", "वर्टिकल", और "कोई नहीं" शामिल हैं.
किसी विजेट का साइज़, हॉरिज़ॉन्टल या वर्टिकल तौर पर साइज़ बताने के लिए,
"हॉरिज़ॉन्टल|वर्टिकल".
यहां एक उदाहरण दिया गया है:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.Example>A<ppWidgetConfigure&q>uot; android:resizeMode="horizontal|vertical" /appwidget-provider
होम स्क्रीन विजेट के बारे में ज़्यादा जानकारी के लिए, ऐप्लिकेशन विजेट देखें दस्तावेज़.
ऐनिमेशन फ़्रेमवर्क
- नई ViewPropertyAnimator क्लास
- एक नई
ViewPropertyAnimator
क्लास सुविधाजनक यह डेवलपर के लिएView
ऑब्जेक्ट पर चुनिंदा प्रॉपर्टी को ऐनिमेट करने का तरीका है. क्लास यह प्रॉपर्टी के ऐनिमेशन को ऑटोमेट करता है और ऑप्टिमाइज़ करता है. साथ ही, किसीView
ऑब्जेक्ट पर एक साथ कई ऐनिमेशन मैनेज करना.ViewPropertyAnimator
का इस्तेमाल करना आसान है. इसके लिए प्रॉपर्टी को ऐनिमेट करने के लिए एकView
,animate()
को इस नंबर पर कॉल करें उसView
के लिए एकViewPropertyAnimator
ऑब्जेक्ट बनाएं. इसका इस्तेमाल करेंViewPropertyAnimator
की मदद से यह तय करें कि किस प्रॉपर्टी को ऐनिमेट करें और कैसे करें. उदाहरण के लिए,View
को फ़ेड करके पारदर्शी बनाने के लिए,alpha(0);
को कॉल करें.ViewPropertyAnimator
ऑब्जेक्ट यह मौजूदाAnimator
क्लास को कॉन्फ़िगर करने और उसे शुरू करने की जानकारी को मैनेज करता है. इसके बाद, ऐनिमेशन.
- एक नई
- ऐनिमेशन के बैकग्राउंड का रंग
- नए
getBackgroundColor()
औरsetBackgroundColor(int)
तरीके का इस्तेमाल करके आपको विंडो ऐनिमेशन के लिए ऐनिमेशन के पीछे का बैकग्राउंड कलर मिलता है/सेट हो जाता है सिर्फ़. फ़िलहाल, अपनी पसंद के ऐल्फ़ा लेवल के साथ, बैकग्राउंड का रंग काला होना चाहिए.
- नए
ViewAnimator
से ऐनिमेट किया गया फ़्रैक्शन पाना- एक नया
getAnimatedFraction()
तरीका आपको वर्तमान एनिमेशन अंश प्राप्त करने देता है — बीत चुका/प्रक्षेपित हाल ही के फ़्रेम अपडेट में इस्तेमाल किया गया फ़्रैक्शन —ValueAnimator
से लिया गया है.
- एक नया
यूज़र इंटरफ़ेस (यूआई) फ़्रेमवर्क
- लेयर की फ़ोर्स्ड रेंडरिंग
buildLayer()
के नए तरीके की मदद से, ऐप्लिकेशन किसी व्यू की लेयर को तुरंत बनाने और उसमें व्यू को रेंडर करने के लिए मजबूर कर सकता है. उदाहरण के लिए, कोई ऐप्लिकेशन इस तरीके का इस्तेमाल करके, ऐनिमेशन शुरू करने से पहले व्यू को अपनी लेयर में रेंडर कर सकता है. अगर व्यू जटिल है, तो उसे ऐनिमेशन शुरू करने से पहले वाली लेयर, फ़्रेम स्किप नहीं करेगी, तो उसे स्किप नहीं किया जाएगा.
- कैमरे की दूरी
- ऐप्लिकेशन नई विधि का उपयोग कर सकते हैं
दिल्ली से दूरी सेट करने के लिए,
setCameraDistance(float)
कैमरा क्लिक करें. इससे ऐप्लिकेशन के 3D रूपांतरण पर बेहतर नियंत्रण मिलता है देखें, जैसे कि रोटेशन.
- ऐप्लिकेशन नई विधि का उपयोग कर सकते हैं
दिल्ली से दूरी सेट करने के लिए,
- तारीख के हिसाब से सही तारीख चुनने की सुविधा से कैलेंडर व्यू पाना
getCalendarView()
के नए तरीके की मदद से,DatePicker
इंस्टेंस सेCalendarView
पाया जा सकता है.
- व्यू अलग होने पर कॉलबैक पाना
- नए
View.OnAttachStateChangeListener
से आपको रिसीव करो कॉलबैक तब होता है, जब कोई व्यू अपनी विंडो से अटैच या अलग किया जाता है.addOnAttachStateChangeListener()
का इस्तेमाल करें लिसनर जोड़ने के लिए औरaddOnAttachStateChangeListener()
को हटाने के लिए.
- नए
- फ़्रैगमेंट ब्रेडक्रंब लिसनर, नया onInflate() सिग्नेचर
- एक नया तरीका,
setOnBreadCrumbClickListener()
, आपकी मदद करने के लिए, ऐप्लिकेशन फ़्रैगमेंट-ब्रेडक्रंब क्लिक को बीच में रोकते हैं और ज़रूरी कार्रवाई करते हैं क्लिक किए गए बैकस्टैक एंट्री या फ़्रैगमेंट पर जाने से पहले. Fragment
क्लास में,onInflate(attrs, savedInstanceState)
का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपयाonInflate(activity, attrs, savedInstanceState)
का इस्तेमाल करें.
- एक नया तरीका,
- खोज परिणाम को नए टैब में दिखाएं
ACTION_WEB_SEARCH
इंटेंट के लिएEXTRA_NEW_SEARCH
डेटा कुंजी आपको इसमें खोज खोलने देती है नए ब्राउज़र टैब पर क्लिक करें.
- ड्रॉ करने लायक टेक्स्ट कर्सर
- अब आप नए
संसाधन एट्रिब्यूट
textCursorDrawable
.
- अब आप नए
संसाधन एट्रिब्यूट
- रिमोट व्यू में बच्चे को दिखाने की सेटिंग
- सुविधा का एक नया तरीका
setDisplayedChild(viewId, childIndex)
,RemoteViews
सब-क्लास में उपलब्ध है. आपकोViewAnimator
में दिखने वाले चाइल्ड खाते को सेट करने औरAdapterViewAnimator
सब-क्लास. जैसे,AdapterViewFlipper
,StackView
,ViewFlipper
, औरViewSwitcher
.
- सुविधा का एक नया तरीका
- गेमपैड और अन्य इनपुट डिवाइसों के लिए सामान्य कुंजियां
KeyEvent
यहां जेनरिक कीकोड की रेंज जोड़ता है: गेमपैड के बटन शामिल कर सकें. क्लास में यह भी जोड़ा जाता हैisGamepadButton(int)
और कई अन्य लोग की-कोड के साथ काम करने के लिए सहायक विधियां.
ग्राफ़िक्स
- बिटमैप मैनेज करने में मदद करने वाले टूल
setHasAlpha(boolean)
ऐप्लिकेशन को यह बताने देता है कि बिटमैप के सभी पिक्सल ओपेक (गलत) माने जाते हैं या पिक्सेल में गैर-ओपेक अल्फ़ा मान हो सकते हैं (सही). ध्यान दें, कुछ कॉन्फ़िगरेशन (जैसे, RGB_565) के लिए, इस कॉल को अनदेखा कर दिया जाता है, क्योंकि यह हर पिक्सल के लिए अल्फा वैल्यू के साथ काम नहीं करता. इसका उद्देश्य एक ड्रॉइंग संकेत के रूप में है, जैसा कि कुछ मामलों में एक ऐसा बिटमैप होता है जिसे अपारदर्शी होने के लिए, गैर-ओपेक वाले केस की तुलना में ज़्यादा तेज़ ड्रॉइंग केस लिया जा सकता है हर पिक्सल की ऐल्फ़ा वैल्यू होनी चाहिए.getByteCount()
को बिटमैप का साइज़ बाइट हैं.getGenerationId()
, ऐप्लिकेशन को यह सुविधा देता है कि पता लगाता है कि क्या बिटमैप में बदलाव किया गया है, जैसे कि कैश मेमोरी के लिए.sameAs(android.graphics.Bitmap)
तय करता है क्या दिया गया बिट मैप मौजूदा बिटमैप से अलग डाइमेंशन में, कॉन्फ़िगरेशन या पिक्सल डेटा से कनेक्ट कर सकते हैं.
- कैमरे की जगह सेट करना और उसे घुमाना
Camera
, इस खाते के लिए दो नए तरीकेrotate()
औरsetLocation()
जोड़ेगा का कंट्रोल 3D ट्रांसफ़ॉर्मेशन के लिए, कैमरे की जगह की जानकारी देखें.
नेटवर्क
- बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई लॉक
- बेहतर परफ़ॉर्मेंस वाला नया वाई-फ़ाई लॉक, ऐप्लिकेशन को डिवाइस की स्क्रीन बंद होने पर भी बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई कनेक्शन बनाए रखने की सुविधा देता है. लंबे समय तक संगीत, वीडियो या आवाज़ स्ट्रीम करने वाले ऐप्लिकेशन, बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई लॉक हासिल कर सकते हैं. इससे, स्क्रीन बंद होने पर भी स्ट्रीमिंग की परफ़ॉर्मेंस को बेहतर बनाए रखने में मदद मिलती है. यह सुविधा ज़्यादा बैटरी खर्च करती है. इसलिए, ऐप्लिकेशन को लंबे समय तक चालू रहने वाले कनेक्शन की ज़रूरत होने पर ही बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई हासिल करना चाहिए.
बेहतर परफ़ॉर्मेंस वाला लॉक बनाने के लिए,
WIFI_MODE_FULL_HIGH_PERF
को लॉक मोड के रूप में इस डिवाइस में पास करेंcreateWifiLock()
पर कॉल करें.
- बेहतर परफ़ॉर्मेंस वाला नया वाई-फ़ाई लॉक, ऐप्लिकेशन को डिवाइस की स्क्रीन बंद होने पर भी बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई कनेक्शन बनाए रखने की सुविधा देता है. लंबे समय तक संगीत, वीडियो या आवाज़ स्ट्रीम करने वाले ऐप्लिकेशन, बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई लॉक हासिल कर सकते हैं. इससे, स्क्रीन बंद होने पर भी स्ट्रीमिंग की परफ़ॉर्मेंस को बेहतर बनाए रखने में मदद मिलती है. यह सुविधा ज़्यादा बैटरी खर्च करती है. इसलिए, ऐप्लिकेशन को लंबे समय तक चालू रहने वाले कनेक्शन की ज़रूरत होने पर ही बेहतर परफ़ॉर्मेंस वाला वाई-फ़ाई हासिल करना चाहिए.
- ट्रैफ़िक के ज़्यादा आंकड़े
- ऐप्लिकेशन अब और ज़्यादा प्रकार के नेटवर्क उपयोग के बारे में आंकड़ों को ऐक्सेस कर सकते हैं
TrafficStats
में नए तरीकों का इस्तेमाल करके. ऐप्लिकेशन Google Tag Manager यूडीपी आंकड़े, पैकेट काउंट, टीसीपी ट्रांसमिशन/पेलोड बाइट पाने और सेगमेंट.
- ऐप्लिकेशन अब और ज़्यादा प्रकार के नेटवर्क उपयोग के बारे में आंकड़ों को ऐक्सेस कर सकते हैं
- SIP की पुष्टि करने वाला उपयोगकर्ता नाम
- ऐप्लिकेशन अब किसी प्रोफ़ाइल के लिए SIP प्रमाणीकरण उपयोगकर्ता नाम पा सकते हैं और उसे सेट कर सकते हैं
इसका उपयोग कर रहा है
getAuthUserName()
औरsetAuthUserName()
.
- ऐप्लिकेशन अब किसी प्रोफ़ाइल के लिए SIP प्रमाणीकरण उपयोगकर्ता नाम पा सकते हैं और उसे सेट कर सकते हैं
इसका उपयोग कर रहा है
डाउनलोड मैनेजर
- पूरे हो चुके डाउनलोड मैनेज करना
- ऐप्लिकेशन अब ऐसे डाउनलोड शुरू कर सकते हैं जो उपयोगकर्ताओं को केवल
पूरा हुआ. इस तरह का डाउनलोड शुरू करने के लिए, ऐप्लिकेशन
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
को पास करते हैंsetNotificationVisibility()
तरीके में अनुरोध ऑब्जेक्ट. addCompletedDownload()
एक नई तरीका है. इसका इस्तेमाल करके, ऐप्लिकेशन डेटाबेस डाउनलोड करता है, ताकि डाउनलोड ऐप्लिकेशन इसे प्रबंधित कर सके.
- ऐप्लिकेशन अब ऐसे डाउनलोड शुरू कर सकते हैं जो उपयोगकर्ताओं को केवल
पूरा हुआ. इस तरह का डाउनलोड शुरू करने के लिए, ऐप्लिकेशन
- साइज़ के हिसाब से क्रम में लगाए गए, डाउनलोड किए गए वीडियो दिखाएं
- ऐप्लिकेशन इसके अनुसार डाउनलोड ऐप्लिकेशन को आकार के अनुसार क्रम से लगाने वाले मोड में शुरू कर सकते हैं
ACTION_VIEW_DOWNLOADS
इंटेंट में नया अतिरिक्तINTENT_EXTRAS_SORT_BY_SIZE
जोड़ना.
- ऐप्लिकेशन इसके अनुसार डाउनलोड ऐप्लिकेशन को आकार के अनुसार क्रम से लगाने वाले मोड में शुरू कर सकते हैं
IME फ़्रेमवर्क
- इनपुट के तरीके की अतिरिक्त मान कुंजी पाना
InputMethodSubtype
, तरीका यह देखने के लिएcontainsExtraValueKey()
कि ExtraValue स्ट्रिंग सेव की गई है या नहीं और इस सब-टाइप के लिए तरीकाgetExtraValueOf()
है, जिससे ExtraValue हैशमैप से कोई खास कुंजी वैल्यू निकाली जा सकती है.
मीडिया
- ऑडियो स्ट्रीम करने के नए फ़ॉर्मैट
- मीडिया फ़्रेमवर्क में, बेहतर स्ट्रीमिंग ऑडियो के लिए, रॉ ADTS AAC कॉन्टेंट के लिए पहले से मौजूद सुविधा जोड़ी गई है. साथ ही, ज़्यादा से ज़्यादा क्वालिटी (बिना डेटा हानि के) वाले संपीड़ित ऑडियो कॉन्टेंट के लिए, FLAC ऑडियो की सुविधा भी जोड़ी गई है. इस्तेमाल किए जा सकने वाले मीडिया फ़ॉर्मैट देखें दस्तावेज़ देखें.
लॉन्च से जुड़े कंट्रोल बंद किए गए ऐप्लिकेशन
Android 3.1 से, सिस्टम का पैकेज मैनेजर ऐसे ऐप्लिकेशन जो रुकी हुई स्थिति में हैं और जिन्हें कंट्रोल करने का विकल्प दिया गया है को बैकग्राउंड में चलने वाली प्रोसेस और अन्य ऐप्लिकेशन से लॉन्च किया जाता है.
ध्यान दें कि किसी ऐप्लिकेशन की रुकी हुई स्थिति और किसी गतिविधि की रोका गया स्थिति. सिस्टम, बंद किए गए इन दोनों स्टेटस को अलग-अलग मैनेज करता है.
प्लैटफ़ॉर्म दो नए इंटेंट फ़्लैग तय करता है, जिनसे भेजने वाले को पता चलता है क्या इंटेंट को रोके गए कॉम्पोनेंट को चालू करने की अनुमति दी जानी चाहिए का इस्तेमाल करें.
FLAG_INCLUDE_STOPPED_PACKAGES
— समस्या को हल करने के लिए, संभावित टारगेट की सूची में, बंद किए गए ऐप्लिकेशन के इंटेंट फ़िल्टर शामिल करें.FLAG_EXCLUDE_STOPPED_PACKAGES
— संभावित ऐप्लिकेशन की सूची से, रोके गए ऐप्लिकेशन के इंटेंट फ़िल्टर को बाहर रखें टारगेट के लिए.
जब इन दोनों फ़्लैग को किसी इंटेंट में तय नहीं किया जाता है, तो डिफ़ॉल्ट व्यवहार है रोके गए ऐप्लिकेशन के फ़िल्टर को आपकी सूची में टारगेट के बारे में बताता है.
ध्यान दें कि सिस्टम, FLAG_EXCLUDE_STOPPED_PACKAGES
को सभी ब्रॉडकास्ट में जोड़ता है
इंटेंट. यह ऐसा इसलिए करता है, ताकि बैकग्राउंड में चलने वाली सेवाओं के ब्रॉडकास्ट को रोका जा सके
अचानक या बिना वजह से रोके गए ऐप्लिकेशन के कॉम्पोनेंट लॉन्च करना.
बैकग्राउंड सेवा या ऐप्लिकेशन, इस व्यवहार को बदल सकता है. इसके लिए, ब्रॉडकास्ट करने के उन इंटेंट में FLAG_INCLUDE_STOPPED_PACKAGES
फ़्लैग जोड़ना होगा जिन्हें बंद किए गए ऐप्लिकेशन को चालू करने की अनुमति होनी चाहिए.
ऐप्लिकेशन पहली बार इंस्टॉल होने पर रुकी हुई स्थिति में होते हैं, लेकिन लॉन्च कर दिया गया हो और जब उपयोगकर्ता उसे मैन्युअल रूप से बंद कर दे (' ऐप्लिकेशन).
ऐप्लिकेशन के पहली बार लॉन्च और अपग्रेड होने की सूचना
ऐप्लिकेशन के पहली बार लॉन्च होने के बारे में, प्लैटफ़ॉर्म पर बेहतर सूचनाएं मिलती हैं. साथ ही, दो नए इंटेंट ऐक्शन के ज़रिए अपग्रेड करता है:
ACTION_PACKAGE_FIRST_LAUNCH
— इन्हें भेजा गया किसी ऐप्लिकेशन के पहली बार लॉन्च होने पर, उस ऐप्लिकेशन का इंस्टॉलर पैकेज (इसका मतलब है कि पहली बार जब इसे रोका गया स्थिति से बाहर लाया गया हो). डेटा में पैकेज का नाम शामिल होता है.ACTION_MY_PACKAGE_REPLACED
— सूचनाएं एक ऐसा ऐप्लिकेशन जिसे उसे अपडेट किया गया था, जिस पर एक नया वर्शन इंस्टॉल किया गया था पहले से मौजूद वर्शन. इसे सिर्फ़ उस ऐप्लिकेशन पर भेजा जाता है जिसे बदला गया है. यह कोई अतिरिक्त डेटा नहीं है. इसे पाने के लिए, इंटेंट फ़िल्टर का एलान करें आपको यह कार्रवाई करनी होगी. इंटेंट का इस्तेमाल उस कोड को ट्रिगर करने के लिए किया जा सकता है जो फिर से चलाने के लिए उचित स्थिति में रखना चाहिए.यह इंटेंट सीधे ऐप्लिकेशन पर भेजा जाता है, लेकिन सिर्फ़ ऐप्लिकेशन में को तब अपग्रेड किया गया, जब यह शुरू होने की स्थिति में था (बंद स्थिति में नहीं).
मुख्य सुविधाएं
- LRU कैश
- नई
LruCache
क्लास की मदद से, आपके आवेदनों को फ़ायदा मिलेगा कैश मेमोरी से बाहर रखा जा सकता है. ऐप्लिकेशन, क्लास का इस्तेमाल करने में लगने वाले समय को कम कर सकते हैं नेटवर्क से डेटा की कंप्यूटिंग या डाउनलोड करने के साथ-साथ, कैश किए गए डेटा के लिए मेमोरी फ़ुटप्रिंट.LruCache
एक कैश मेमोरी है जो सीमित वैल्यू के लिए मज़बूत रेफ़रंस देता है. हर बार जब कोई वैल्यू होती है ऐक्सेस करने के बाद, वह सूची में सबसे ऊपर चला जाता है. जब किसी पूर्ण वैल्यू को जोड़ा जाता है कैश मेमोरी में सेव करता है, तो उस सूची के आखिर में मौजूद वैल्यू हटा दी जाती है और हो सकता है कि गार्बेज कलेक्शन.
- नई
- फ़ाइल डिस्क्रिप्टर,
int
के तौर पर- अब
ParcelFileDescriptor
के लिए,getFd()
याdetachFd()
में से किसी भी नए तरीके का इस्तेमाल करके, नेटिव फ़ाइल डिस्क्रिप्टर int पाया जा सकता है.
- अब
WebKit
- फ़ाइल स्कीम कुकी
CookieManager
अब उन कुकी के साथ काम करता है जो यहfile:
यूआरआई स्कीम.WebView
याCookieManager
का इंस्टेंस बनाने से पहले,setAcceptFileSchemeCookies()
का इस्तेमाल करके फ़ाइल स्कीम कुकी के लिए सहायता को चालू/बंद किया जा सकता है. मेंCookieManager
इंस्टेंस में, यह देखा जा सकता है कि फ़ाइल स्कीम कुकी की जांच की जा रही है या नहीं कोallowFileSchemeCookies()
पर कॉल करके चालू किया गया है.
- लॉगिन के अनुरोध की सूचना
- Android 3.0 में ब्राउज़र के अपने-आप साइन इन होने की सुविधाएं जोड़ी गई थीं. इन सुविधाओं के साथ काम करने के लिए, नया तरीका
onReceivedLoginRequest()
, होस्ट ऐप्लिकेशन को सूचना देता है कि उपयोगकर्ता के लिए अपने-आप साइन इन होने का अनुरोध प्रोसेस किया गया था.
- Android 3.0 में ब्राउज़र के अपने-आप साइन इन होने की सुविधाएं जोड़ी गई थीं. इन सुविधाओं के साथ काम करने के लिए, नया तरीका
- क्लास और इंटरफ़ेस हटाए गए
- इसके बाद, Public API से कई क्लास और इंटरफ़ेस हटा दिए गए थे पहले रुकी हुई थी. ज़्यादा जानकारी के लिए, एपीआई के अंतर की रिपोर्ट देखें.
ब्राउज़र
ब्राउज़र ऐप्लिकेशन, वेब पर काम करने के लिए ये सुविधाएं जोड़ता है ऐप्लिकेशन:
- HTML5 में एम्बेड किए गए वीडियो के इनलाइन प्लेबैक के लिए समर्थन
<video>
टैग. जहां भी मुमकिन हो, वीडियो को हार्डवेयर से तेज़ी से चलाया जाता है. - सभी साइटों (मोबाइल और डेस्कटॉप से कनेक्ट होता है.
नई सुविधा के लिए कॉन्स्टेंट
इस प्लैटफ़ॉर्म पर, हार्डवेयर की नई सुविधाओं को एक साथ जोड़ा गया है. डेवलपर के पास इनका एलान करने की सुविधा होती है
साथ ही, बाहरी इकाइयों को जानकारी देने के लिए, जैसे कि Google
ऐप्लिकेशन की नई हार्डवेयर क्षमताओं के लिए ज़रूरी शर्तों का प्ले
प्लैटफ़ॉर्म के इस वर्शन में. डेवलपर, इन और सुविधा से जुड़ी अन्य स्थिर वैल्यू का एलान, <uses-feature>
मेनिफ़ेस्ट एलिमेंट में करते हैं.
android.hardware.usb.accessory
— ऐप्लिकेशन यूएसबी का इस्तेमाल करता है एपीआई का इस्तेमाल, यूएसबी और होस्ट के रूप में काम करता है.android.hardware.usb.host
— ऐप्लिकेशन यूएसबी एपीआई का इस्तेमाल करता है यूएसबी के ज़रिए कनेक्ट किए गए बाहरी हार्डवेयर डिवाइसों के साथ संपर्क करने और इस तरह से काम करने के लिए डिवाइस.
Google Play, <uses-feature>
मेनिफ़ेस्ट एलिमेंट में बताई गई सुविधाओं के हिसाब से ऐप्लिकेशन को फ़िल्टर करता है. इसके बारे में ज़्यादा जानकारी पाने के लिए,
ऐप्लिकेशन मेनिफ़ेस्ट में सुविधाओं के बारे में जानकारी देने के लिए, Google Play
फ़िल्टर.
एपीआई के बीच अंतर की रिपोर्ट
Android 3.1 (एपीआई) में एपीआई में हुए सभी बदलावों की ज़्यादा जानकारी के लिए लेवल 12), API देखें अंतर की रिपोर्ट.
एपीआई लेवल
Android 3.1 प्लैटफ़ॉर्म, फ़्रेमवर्क एपीआई का अपडेट किया गया वर्शन उपलब्ध कराता है. Android 3.1 API को एक पूर्णांक आइडेंटिफ़ायर असाइन किया जाता है — 12 — इसका मतलब है कि सेव किया जाता है. "एपीआई लेवल" कहा जाने वाला यह आइडेंटिफ़ायर, सिस्टम को सही तरीके से यह तय करने की अनुमति देता है कि कोई ऐप्लिकेशन इसके साथ काम करता है या नहीं सिस्टम पर क्लिक करें.
अपने ऐप्लिकेशन में Android 3.1 में प्रस्तुत किए गए API का उपयोग करने के लिए,
आपको इसमें दी गई Android लाइब्रेरी के हिसाब से ऐप्लिकेशन को कंपाइल करना होगा
Android 3.1 SDK प्लैटफ़ॉर्म पर भी काम करता है. अपनी ज़रूरतों के आधार पर,
शायद
android:minSdkVersion="12"
भी जोड़ना होगा
ऐप्लिकेशन के <uses-sdk>
एलिमेंट की विशेषता
मेनिफ़ेस्ट.
ज़्यादा जानकारी के लिए, एपीआई क्या है, यह पढ़ें लेवल?