Android 3.1 API

एपीआई लेवल: 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, बाहरी इकाई का प्रतिनिधित्व करने वाली क्लास USB डिवाइस के रूप में कनेक्ट किया गया हार्डवेयर (Android-पावर्ड डिवाइस इस तरह काम करता है होस्ट).
  • UsbAccessory, बाहरी हार्डवेयर के बारे में जानकारी दे रहा है USB होस्ट के रूप में कनेक्ट होता है (जिसमें Android-पावर्ड डिवाइस USB की तरह काम करता है डिवाइस).
  • UsbInterface और UsbEndpoint, जिनसे स्टैंडर्ड यूएसबी का ऐक्सेस मिलता है इंटरफ़ेस और एंडपॉइंट हैं.
  • डेटा भेजने और पाने और कंट्रोल करने के लिए, UsbDeviceConnection और UsbRequest किसी USB डिवाइस पर या उससे प्राप्त होने वाले संदेशों को सिंक्रोनस और एसिंक्रोनस रूप से.
  • 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">

इनसे इंटरैक्ट करने वाले ऐप्लिकेशन डेवलप करने के तरीके के बारे में पूरी जानकारी के लिए यूएसबी ऐक्सेसरी, कृपया डेवलपर दस्तावेज़.

यूएसबी होस्ट एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन के नमूने देखने के लिए, ADB टेस्ट और Missile देखें लॉन्चर

एमटीपी/पीटीपी एपीआई

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 डिवाइस पर, जो सेक्शन में बताए गए ObjectInfo डेटासेट के मुताबिक है MTP की खास बातों में 5.3.1. क्लास की विधियों से ऐप्लिकेशन को ऑब्जेक्ट का साइज़, डेटा फ़ॉर्मैट, असोसिएशन का टाइप, बनाने की तारीख, और थंबनेल जानकारी.
  • 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 शामिल है.

आरटीपी एपीआई

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.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical" >
</appwidget-provider>

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

ऐनिमेशन फ़्रेमवर्क

  • नई Viewप्रॉपर्टी Animator क्लास
    • एक नई ViewPropertyAnimator क्लास सुविधाजनक यह डेवलपर के लिए View ऑब्जेक्ट पर चुनिंदा प्रॉपर्टी को ऐनिमेट करने का तरीका है. क्लास यह प्रॉपर्टी के ऐनिमेशन को ऑटोमेट करता है और ऑप्टिमाइज़ करता है. साथ ही, किसी View ऑब्जेक्ट पर एक साथ कई ऐनिमेशन मैनेज करना.

      ViewPropertyAnimator का इस्तेमाल करना आसान है. इसके लिए प्रॉपर्टी को ऐनिमेट करने के लिए एक View, animate() को इस नंबर पर कॉल करें उस View के लिए एक ViewPropertyAnimator ऑब्जेक्ट बनाएं. इसका इस्तेमाल करें ViewPropertyAnimator की मदद से यह तय करें कि किस प्रॉपर्टी को ऐनिमेट करें और कैसे करें. उदाहरण के लिए, View को फ़ेड करके पारदर्शी बनाने के लिए, alpha(0); को कॉल करें. ViewPropertyAnimator ऑब्जेक्ट यह मौजूदा Animator क्लास को कॉन्फ़िगर करने और उसे शुरू करने की जानकारी को मैनेज करता है. इसके बाद, ऐनिमेशन.

  • ऐनिमेशन के बैकग्राउंड का रंग
    • नए getBackgroundColor() और setBackgroundColor(int) तरीके से आपको विंडो ऐनिमेशन के लिए ऐनिमेशन के पीछे का बैकग्राउंड कलर मिलता है/सेट हो जाता है सिर्फ़. फ़िलहाल, अपनी पसंद के ऐल्फ़ा लेवल के साथ, बैकग्राउंड का रंग काला होना चाहिए.
  • ViewAnimator से ऐनिमेशन वाला अंश फ़ेच किया जा रहा है
    • एक नया getAnimatedFraction() तरीका आपको वर्तमान एनिमेशन अंश प्राप्त करने देता है — बीत चुका/प्रक्षेपित हाल ही के फ़्रेम अपडेट में इस्तेमाल किया गया फ़्रैक्शन — ValueAnimator से लिया गया है.

यूज़र इंटरफ़ेस (यूआई) फ़्रेमवर्क

  • लेयर की फ़ोर्स्ड रेंडरिंग
    • buildLayer() इस्तेमाल करने का नया तरीका, ऐप्लिकेशन को किसी व्यू की लेयर को ज़बरदस्ती बनाने और उसमें मौजूद व्यू को तुरंत रेंडर करने के लिए किया जा सकता है. उदाहरण के लिए, कोई ऐप्लिकेशन इस तरीके का इस्तेमाल करके, व्यू को लेयर पर क्लिक करें. अगर व्यू जटिल है, तो उसे ऐनिमेशन शुरू करने से पहले वाली लेयर, फ़्रेम स्किप नहीं करेगी, तो उसे स्किप नहीं किया जाएगा.
  • कैमरे की दूरी
    • ऐप्लिकेशन नई विधि का उपयोग कर सकते हैं दिल्ली से दूरी सेट करने के लिए, setCameraDistance(float) कैमरा क्लिक करें. इससे ऐप्लिकेशन के 3D रूपांतरण पर बेहतर नियंत्रण मिलता है देखें, जैसे कि रोटेशन.
  • तारीख के हिसाब से सही तारीख चुनने की सुविधा से कैलेंडर व्यू पाना
  • व्यू अलग होने पर कॉलबैक पाना
  • फ़्रैगमेंट ब्रेडक्रंब लिसनर, नया onInflate() सिग्नेचर
    • एक नया तरीका, setOnBreadCrumbClickListener(), आपकी मदद करने के लिए, ऐप्लिकेशन फ़्रैगमेंट-ब्रेडक्रंब क्लिक को बीच में रोकते हैं और ज़रूरी कार्रवाई करते हैं या फ़्रैगमेंट, जिस पर क्लिक किया गया था.
    • Fragment क्लास में, onInflate(attrs, savedInstanceState) का इस्तेमाल नहीं किया जा सकता. इसके बजाय, कृपया onInflate(activity, attrs, savedInstanceState) का इस्तेमाल करें.
  • खोज परिणाम को नए टैब में दिखाएं
    • ACTION_WEB_SEARCH इंटेंट के लिए EXTRA_NEW_SEARCH डेटा कुंजी आपको इसमें खोज खोलने देती है पर क्लिक करें.
  • ड्रॉ करने लायक टेक्स्ट कर्सर
    • अब आप नए संसाधन एट्रिब्यूट textCursorDrawable.
  • रिमोट व्यू में बच्चे को दिखाने की सेटिंग
  • गेमपैड और अन्य इनपुट डिवाइसों के लिए सामान्य कुंजियां
    • KeyEvent यहां जेनरिक कीकोड की रेंज जोड़ता है: गेमपैड के बटन शामिल कर सकें. क्लास में यह भी जोड़ा जाता है isGamepadButton(int) और कई अन्य लोग की-कोड के साथ काम करने के लिए सहायक विधियां.

ग्राफ़िक्स

  • बिटमैप मैनेज करने में मदद करने वाले टूल
    • setHasAlpha(boolean) ऐप्लिकेशन को यह बताने देता है कि बिटमैप के सभी पिक्सल ओपेक (गलत) माने जाते हैं या पिक्सेल में गैर-ओपेक अल्फ़ा मान हो सकते हैं (सही). ध्यान दें, कुछ कॉन्फ़िगरेशन (जैसे के रूप में) वैल्यू. इसका उद्देश्य एक ड्रॉइंग संकेत के रूप में है, जैसा कि कुछ मामलों में एक ऐसा बिटमैप होता है जिसे अपारदर्शी होने के लिए, गैर-ओपेक वाले केस की तुलना में ज़्यादा तेज़ ड्रॉइंग केस लिया जा सकता है हर पिक्सल की ऐल्फ़ा वैल्यू.
    • getByteCount() को बिटमैप का साइज़ बाइट हैं.
    • getGenerationId(), ऐप्लिकेशन को यह सुविधा देता है कि पता लगाता है कि क्या बिटमैप में बदलाव किया गया है, जैसे कि कैश मेमोरी के लिए.
    • sameAs(android.graphics.Bitmap) तय करता है क्या दिया गया बिट मैप मौजूदा बिटमैप से अलग डाइमेंशन में, कॉन्फ़िगरेशन या पिक्सल डेटा से कनेक्ट कर सकते हैं.
  • कैमरे की जगह सेट करना और उसे घुमाना
    • Camera, इस खाते के लिए दो नए तरीके rotate() और setLocation() जोड़ेगा का कंट्रोल 3D ट्रांसफ़ॉर्मेशन के लिए, कैमरे की जगह की जानकारी देखें.

नेटवर्क

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

      बेहतर परफ़ॉर्मेंस वाला लॉक बनाने के लिए, WIFI_MODE_FULL_HIGH_PERF को लॉक मोड के रूप में इस डिवाइस में पास करें createWifiLock() को कॉल.

  • ट्रैफ़िक से जुड़े ज़्यादा आंकड़े
    • ऐप्लिकेशन अब और ज़्यादा प्रकार के नेटवर्क उपयोग के बारे में आंकड़ों को ऐक्सेस कर सकते हैं TrafficStats में नए तरीकों का इस्तेमाल करके. ऐप्लिकेशन Google Tag Manager यूडीपी आंकड़े, पैकेट काउंट, टीसीपी ट्रांसमिशन/पेलोड बाइट पाने और सेगमेंट.
  • SIP की पुष्टि करने वाला उपयोगकर्ता नाम
    • ऐप्लिकेशन अब किसी प्रोफ़ाइल के लिए SIP प्रमाणीकरण उपयोगकर्ता नाम पा सकते हैं और उसे सेट कर सकते हैं इसका उपयोग कर रहा है getAuthUserName() और setAuthUserName().

डाउनलोड मैनेजर

  • पूरे हो चुके डाउनलोड मैनेज करना
    • ऐप्लिकेशन अब ऐसे डाउनलोड शुरू कर सकते हैं जो उपयोगकर्ताओं को केवल पूरा हुआ. इस तरह का डाउनलोड शुरू करने के लिए, ऐप्लिकेशन 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 के तौर पर
    • अब आप getFd() या detachFd() में से किसी एक का इस्तेमाल करके, ParcelFileDescriptor के लिए नेटिव फ़ाइल डिस्क्रिप्टर पूर्णांक पा सकते हैं.

WebKit

  • फ़ाइल स्कीम कुकी
    • CookieManager अब उन कुकी के साथ काम करता है जो यह file: यूआरआई स्कीम. setAcceptFileSchemeCookies() का इस्तेमाल इन कामों के लिए किया जा सकता है कोई इंस्टेंस बनाने से पहले, फ़ाइल स्कीम कुकी के लिए सहायता चालू/बंद करें कुल WebView या CookieManager. में CookieManager इंस्टेंस में, यह देखा जा सकता है कि फ़ाइल स्कीम कुकी की जांच की जा रही है या नहीं को allowFileSchemeCookies() पर कॉल करके चालू किया गया है.
  • लॉगिन के अनुरोध की सूचना
    • Android 3.0 में प्रस्तुत की गई ब्राउज़र ऑटोलॉग सुविधाओं का समर्थन करने के लिए, नया ईमेल तरीका onReceivedLoginRequest() होस्ट को सूचना देती है वह ऐप्लिकेशन जिसे उपयोगकर्ता के लिए अपने-आप लॉगिन करने का अनुरोध प्रोसेस किया गया था.
  • क्लास और इंटरफ़ेस हटाए गए

ब्राउज़र

ब्राउज़र ऐप्लिकेशन, वेब पर काम करने के लिए ये सुविधाएं जोड़ता है ऐप्लिकेशन:

  • HTML5 में एम्बेड किए गए वीडियो के इनलाइन प्लेबैक के लिए समर्थन <video> टैग. जहां भी मुमकिन हो, वीडियो को हार्डवेयर से तेज़ी से चलाया जाता है.
  • सभी साइटों (मोबाइल और डेस्कटॉप से कनेक्ट होता है.

नए फ़ीचर कॉन्सटेंट

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

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> एलिमेंट की विशेषता मेनिफ़ेस्ट.

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