Android 3.0 API

एपीआई लेवल: 11

डेवलपर के लिए, Android 3.0 प्लैटफ़ॉर्म (HONEYCOMB), Android SDK टूल के लिए डाउनलोड किए जा सकने वाले कॉम्पोनेंट के तौर पर उपलब्ध है. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में एक Android लाइब्रेरी और सिस्टम शामिल है इमेज, एम्युलेटर स्किन का सेट, और बहुत कुछ. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में कोई बाहरी लाइब्रेरी शामिल नहीं है.

डेवलपर के लिए, Android 3.0 प्लेटफ़ॉर्म Android SDK के लिए डाउनलोड किया जा सकने वाला कॉम्पोनेंट. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में ये चीज़ें शामिल हैं एक Android लाइब्रेरी और सिस्टम इमेज, साथ ही एम्युलेटर स्किन का एक सेट और वगैरह को कॉपी करने का विकल्प है. Android 3.0 को डेवलप करना या उसकी जांच करना शुरू करने के लिए, Android SDK Manager का इस्तेमाल करके, प्लैटफ़ॉर्म को अपने SDK टूल में डाउनलोड करें.

एपीआई की खास जानकारी

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

फ़्रैगमेंट

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

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

इनके अलावा:

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

अपनी ऐक्टिविटी में फ़्रैगमेंट मैनेज करने के लिए, आपको FragmentManager का इस्तेमाल करना होगा. यह फ़्रैगमेंट के साथ इंटरैक्ट करने के लिए कई एपीआई उपलब्ध कराता है. जैसे, ऐक्टिविटी में फ़्रैगमेंट ढूंढना और उनकी पिछली स्थिति को वापस लाने के लिए, फ़्रैगमेंट को बैक स्टैक से हटाना.

कोई लेन-देन करने के लिए, आपको FragmentTransaction बनाना होगा. जैसे, कोई फ़्रैगमेंट जोड़ना या हटाना. इसके बाद, add() remove() या replace() जैसे मेथड को कॉल किया जा सकता है. लेन-देन के लिए ज़रूरी सभी बदलाव करने के बाद, आपको commit() को कॉल करना होगा. इसके बाद, सिस्टम गतिविधि पर फ़्रैगमेंट ट्रांज़ैक्शन लागू कर देगा.

फ़्रैगमेंट इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, फ़्रैगमेंट का दस्तावेज़ पढ़ें. कई सैंपल API डेमो ऐप्लिकेशन.

ऐक्शन बार

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

  • सीधे कार्रवाई बार में मेन्यू आइटम—"कार्रवाई आइटम" के तौर पर जोड़ें.

    मेन्यू आइटम के लिए एक्सएमएल एलान में, android:showAsAction एट्रिब्यूट को "ifRoom" की वैल्यू के साथ शामिल करें. जब काफ़ी जगह हो, तो मेन्यू आइटम सीधे कार्रवाई बार में दिखाई देता है. अगर ऐसा नहीं होता है, तो आइटम को ओवरफ़्लो मेन्यू, जो कार्रवाई बार की दाईं ओर मौजूद मेन्यू आइकॉन में दिखता है.

  • किसी ऐक्शन आइटम को विजेट (जैसे, खोज बॉक्स) से बदलें. इससे "ऐक्शन व्यू" बनता है.

    मेन्यू आइटम के एक्सएमएल एलान में, लेआउट संसाधन के साथ android:actionViewLayout एट्रिब्यूट या विजेट के क्लास के नाम के साथ android:actionViewClass एट्रिब्यूट जोड़ें. (आपको android:showAsAction एट्रिब्यूट की जानकारी भी देनी होगी, ताकि आइटम दिखे कार्रवाई बार में डालें.) यदि कार्रवाई बार में पर्याप्त जगह नहीं है और आइटम ओवरफ़्लो मेन्यू, यह किसी सामान्य मेन्यू आइटम की तरह काम करता है और विजेट को नहीं दिखाता.

  • ऐप्लिकेशन लोगो में कोई कार्रवाई जोड़ें और उसे किसी कस्टम लोगो से बदलें

    ऐप्लिकेशन लोगो को अपने आप android.R.id.home आईडी असाइन कर दिया जाता है, इसे सिस्टम, टच किए जाने पर आपकी गतिविधि के onOptionsItemSelected() कॉलबैक पर डिलीवर करता है. कोई कार्रवाई करने के लिए, अपने कॉलबैक तरीके में इस आईडी का जवाब दें. जैसे, अपने ऐप्लिकेशन की "होम" गतिविधि पर जाएं.

    आइकन को लोगो से बदलने के लिए, मेनिफ़ेस्ट फ़ाइल में अपने ऐप्लिकेशन का लोगो android:logo एट्रिब्यूट की वैल्यू सबमिट करें. इसके बाद, अपनी गतिविधि में setDisplayUseLogoEnabled(true) को कॉल करें.

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

ऐक्शन बार, नई होलोग्राफ़िक थीम का इस्तेमाल करने वाले सभी ऐप्लिकेशन के लिए स्टैंडर्ड होता है. यह तब भी स्टैंडर्ड होता है, जब android:minSdkVersion या android:targetSdkVersion को "11" पर सेट किया जाता है.

ऐक्शन बार के बारे में ज़्यादा जानने के लिए, ऐक्शन बार का दस्तावेज़ पढ़ें. कई सैंपल API डेमो ऐप्लिकेशन.

सिस्टम क्लिपबोर्ड

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

कॉन्टेंट देने वाले की मदद से, उपयोगकर्ता को जिस डेटा को कॉपी करना है उसका सिस्टम ऐक्सेस देकर, उपयोगकर्ता आपके ऐप्लिकेशन से जटिल कॉन्टेंट (जैसे कि कोई इमेज या डेटा स्ट्रक्चर) कॉपी कर सकता है और इसे उस ऐप्लिकेशन में चिपकाएं जो इस तरह के कॉन्टेंट को सपोर्ट करता हो.

क्लिपबोर्ड का इस्तेमाल शुरू करने के लिए, getSystemService(CLIPBOARD_SERVICE) को कॉल करके ग्लोबल ClipboardManager ऑब्जेक्ट पाएं.

किसी आइटम को क्लिपबोर्ड पर कॉपी करने के लिए, आपको एक नया ClipData ऑब्जेक्ट बनाना होगा. इसमें एक या उससे ज़्यादा ClipData.Item ऑब्जेक्ट होते हैं. हर ऑब्जेक्ट में किसी एक इकाई के बारे में जानकारी होती है. सिर्फ़ एक ClipData.Item वाला ClipData ऑब्जेक्ट बनाने के लिए, newPlainText(), newUri(), और newIntent() जैसे हेल्पर तरीकों में से किसी एक का इस्तेमाल किया जा सकता है. इनमें से हर एक, आपके दिए गए ClipData.Item के साथ पहले से लोड किया गया ClipData ऑब्जेक्ट दिखाता है.

ClipData को क्लिपबोर्ड पर जोड़ने के लिए, अपने ClipboardManager के इंस्टेंस के लिए, इसे setPrimaryClip() को पास करें.

इसके बाद, ClipboardManager पर getPrimaryClip() को कॉल करके, क्लिपबोर्ड से फ़ाइल को पढ़ा जा सकता है, ताकि उसे चिपकाया जा सके. आपको मिलने वाले ClipData का रखरखाव किया जा सकता है जटिल हो जाएगा और आपको यह पक्का करना होगा कि आप असल में क्लिपबोर्ड में डेटा टाइप हैंडल कर सकते हैं उसे चिपकाने का प्रयास करें.

क्लिपबोर्ड में एक बार में सिर्फ़ एक क्लिप किया गया डेटा (ClipData ऑब्जेक्ट) सेव होता है. हालांकि, एक ClipData में कई ClipData.Item हो सकते हैं.

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

खींचें और छोड़ें

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

खींचें और छोड़ें कार्रवाई का एक लाइफ़साइकल होता है, जिसे खींचने और छोड़ने की कई कार्रवाइयों से तय किया जाता है—हर DragEvent ऑब्जेक्ट से तय होता है—जैसे कि ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED, और ACTION_DROP. वे सभी व्यू जो ड्रैग में शामिल होना चाहते हैं कार्रवाई इन कार्रवाइयों को सुन सकती है.

अपनी गतिविधि में कॉन्टेंट को खींचने और छोड़ने की सुविधा शुरू करने के लिए, View पर startDrag() को कॉल करें. इसके लिए, ClipData ऑब्जेक्ट दें, जो खींचे जाने वाले डेटा को दिखाता है. साथ ही, View.DragShadowBuilder दें, ताकि उपयोगकर्ताओं को खींचने के दौरान अपनी उंगलियों के नीचे "शैडो" दिखे. इसके अलावा, Object दें, ताकि खींचे गए ऑब्जेक्ट की जानकारी उन व्यू के साथ शेयर की जा सके जिन्हें ऑब्जेक्ट मिल सकता है.

View में ड्रैग ऑब्जेक्ट स्वीकार करने के लिए ("ड्रॉप पाएं") स्वीकार करने के लिए, व्यू रजिस्टर करें setOnDragListener() पर कॉल करके OnDragListener के साथ कॉल करें. जब व्यू पर कोई ड्रैग इवेंट होता है, तो सिस्टम OnDragListener के लिए onDrag() को कॉल करता है. इससे DragEvent को एक DragEvent मिलता है, जिसमें ड्रैग ऐक्शन के टाइप के बारे में बताया जाता है. जैसे, ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED, और ACTION_DROP. ड्रैग के दौरान, सिस्टम ड्रैग किए जा रहे व्यू के लिए बार-बार onDrag() को कॉल करता है, ताकि ड्रैग इवेंट की स्ट्रीम डिलीवर की जा सके. रिसीविंग व्यू, DragEvent पर getAction() को कॉल करके, onDragEvent() को डिलीवर किए गए इवेंट टाइप के बारे में पूछताछ कर सकता है.

ध्यान दें: हालांकि, ड्रैग इवेंट में ClipData ऑब्जेक्ट हो सकता है, लेकिन यह सिस्टम क्लिपबोर्ड से नहीं जुड़ा है. खींचें और छोड़ें कार्रवाई से, खींचे गए डेटा को सिस्टम क्लिपबोर्ड में कभी नहीं रखना चाहिए.

ज़्यादा जानकारी के लिए, खींचें और छोड़ें और दस्तावेज़ छोड़ा जा रहा है. आप यह भी देख सकते हैं कि API Demos ऐप्लिकेशन और Honeycomb Gallery का इस्तेमाल करें.

ऐप्लिकेशन विजेट

Android 3.0 में कई नई विजेट क्लास काम करती हैं. इनकी मदद से, उपयोगकर्ताओं की होम स्क्रीन पर ऐप्लिकेशन के ज़्यादा इंटरैक्टिव विजेट जोड़े जा सकते हैं. इनमें ये विजेट शामिल हैं: GridView, ListView, StackView, ViewFlipper, और AdapterViewFlipper.

इससे भी अहम बात यह है कि ऐप्लिकेशन बनाने के लिए नए RemoteViewsService का इस्तेमाल किया जा सकता है GridView, ListView, और StackView जैसे विजेट का इस्तेमाल करके, कलेक्शन वाले विजेट. रिमोट डेटा का इस्तेमाल किया जा रहा है. जैसे कि किसी कॉन्टेंट उपलब्ध कराने वाले से.

AppWidgetProviderInfo क्लास (जिसे <appwidget-provider> एलिमेंट के साथ एक्सएमएल में तय किया गया है) दो नए फ़ील्ड के साथ भी काम करती है: autoAdvanceViewId और previewImage. autoAdvanceViewId फ़ील्ड की मदद से, ऐप्लिकेशन विजेट के उस सबव्यू का व्यू आईडी बताया जा सकता है जिसे ऐप्लिकेशन विजेट के होस्ट के ज़रिए अपने-आप बेहतर बनाया जाना चाहिए. कॉन्टेंट बनाने previewImage फ़ील्ड में इस बात की झलक दिखती है कि ऐप्लिकेशन विजेट एक जैसा दिखता है. यह विजेट पिकर की मदद से, उपयोगकर्ता को दिखता है. अगर इस फ़ील्ड की जानकारी नहीं दी जाती है, तो झलक के लिए ऐप्लिकेशन विजेट के आइकॉन का इस्तेमाल किया जाता है.

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

ऐप्लिकेशन के विजेट की नई सुविधाओं को लागू करने के बारे में जानकारी, StackView ऐप्लिकेशन विजेट और मौसम सूची विजेट में देखी जा सकती है का इस्तेमाल करें.

स्टेटस बार में सूचनाएं

कॉन्टेंट को बेहतर बनाने की सुविधा देने के लिए, Notification एपीआई को बढ़ा दिया गया है साथ ही, नई Notification.Builder क्लास से आपको ये काम करने में मदद मिलेगी Notification ऑब्जेक्ट बनाएं.

नई सुविधाओं में शामिल हैं:

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

कॉन्टेंट लोडर

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

जब किसी नए लोडर का अनुरोध किया जाता है या डेटा मेंLoaderCallbacks बदल दिया गया है, इसके बाद शुरू करने के लिए initLoader() को कॉल करें लोडर का इस्तेमाल करें.

ज़्यादा जानकारी के लिए, लोडर दस्तावेज़ पढ़ें. आपको यह भी दिखेगा: LoaderCursor में लोडर का इस्तेमाल करने वाले कोड का उदाहरण और LoaderThrottle के सैंपल.

ब्लूटूथ A2DP और हेडसेट एपीआई

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

A2DP या HEADSET का इस्तेमाल करके, getProfileProxy() को कॉल करके BluetoothProfile की जानकारी शुरू की जा सकती है प्रोफ़ाइल स्थिरांक और पाने के लिए BluetoothProfile.ServiceListener ब्लूटूथ क्लाइंट के कनेक्ट या डिसकनेक्ट होने पर कॉलबैक.

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

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

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

किसी ऑब्जेक्ट की int, float, और हेक्साडेसिमल रंग वैल्यू के लिए, डिफ़ॉल्ट रूप से इन ऐनिमेशन के साथ-साथ अन्य ऐनिमेशन तय किए जा सकते हैं. इसका मतलब है कि जब किसी ऑब्जेक्ट में इनमें से किसी एक टाइप का प्रॉपर्टी फ़ील्ड होता है, तो ऐनिमेशन पर असर डालने के लिए, समय के साथ उसकी वैल्यू बदली जा सकती है. आपको बताना होगा कि किसी दूसरी तरह की वैल्यू को ऐनिमेट करने के लिए सिस्टम को, उस टाइप के लिए वैल्यू का हिसाब लगाने का तरीका देता है. इसके लिए, वह TypeEvaluator इंटरफ़ेस लागू करता है.

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

इसके अलावा, LayoutTransition क्लास की मदद से, ट्रांज़िशन अपने-आप होने की सुविधा चालू हो जाती है आपकी गतिविधि के लेआउट में किए गए बदलावों के ऐनिमेशन. इसके किसी हिस्से के लिए ट्रांज़िशन चालू करने के लिए लेआउट, LayoutTransition ऑब्जेक्ट बनाएं और उसे चालू करें setLayoutTransition() पर कॉल करके कोई भी ViewGroup. इस वजह से, जब भी ग्रुप में आइटम जोड़े जाते हैं या हटाए जाते हैं, तो डिफ़ॉल्ट ऐनिमेशन चलने लगते हैं. कस्टम सेटिंग तय करने के लिए ऐनिमेशन दिखाएं, LayoutTransition पर setAnimator() को कॉल करें और पसंद के मुताबिक Animator दें, जैसे कि ValueAnimator या ObjectAnimator ऊपर बताया गया है.

ज़्यादा जानकारी के लिए, प्रॉपर्टी ऐनिमेशन से जुड़ा दस्तावेज़ देखें. आप एपीआई में, ऐनिमेशन एपीआई का इस्तेमाल करके भी कई सैंपल देखें डेमो ऐप्लिकेशन का इस्तेमाल करने के लिए किया जा सकता है.

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

  • ListView और GridView के लिए, एक से ज़्यादा विकल्प चुनने की सुविधा

    setChoiceMode() के लिए नए CHOICE_MODE_MULTIPLE_MODAL मोड में, उपयोगकर्ता एक से ज़्यादा आइटम चुन सकते हैं ListView या GridView से. ऐक्शन बार के साथ इस्तेमाल करने पर, उपयोगकर्ता एक से ज़्यादा आइटम चुन सकते हैं. इसके बाद, ऐक्शन बार में मौजूद विकल्पों की सूची से कोई कार्रवाई चुनी जा सकती है. यह सूची, एक से ज़्यादा विकल्प वाले ऐक्शन मोड में बदल जाती है.

    कई विकल्प वाले सवाल चुनने की सुविधा चालू करने के लिए, setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL) पर कॉल करें. इसके बाद, setMultiChoiceModeListener() के साथ MultiChoiceModeListener.

    जब कोई व्यक्ति किसी आइटम को दबाकर रखता है, तो ऐक्शन बार कई विकल्पों वाले बटन पर स्विच हो जाता है ऐक्शन मोड. आइटम चुने जाने पर, सिस्टम onItemCheckedStateChanged() को कॉल करके MultiChoiceModeListener को सूचना देता है.

    कई विकल्प वाले सवाल चुनने के उदाहरण के लिए, List15 देखें. Java एपीआई डेमो सैंपल ऐप्लिकेशन में क्लास का इस्तेमाल करें.

  • व्यू बदलने के लिए नए एपीआई

    नए एपीआई की मदद से, अपनी गतिविधि के व्यू में आसानी से 2D और 3D ट्रांसफ़ॉर्मेशन ऐक्शन लागू किए जा सकते हैं लेआउट. नए ट्रांसफ़ॉर्मेशन, ऑब्जेक्ट प्रॉपर्टी के सेट की मदद से किए जा सकते हैं. ये प्रॉपर्टी, व्यू के लेआउट की पोज़िशन, ओरिएंटेशन, पारदर्शिता वगैरह के बारे में बताती हैं.

    व्यू प्रॉपर्टी सेट करने के नए तरीकों में ये शामिल हैं: setAlpha(), setBottom(), setLeft(), setRight(), setBottom(), setPivotX(), setPivotY(), setRotationX(), setRotationY(), setScaleX(), setScaleY(), setAlpha() वगैरह.

    कुछ तरीकों में, उससे जुड़ा एक्सएमएल एट्रिब्यूट भी होता है. डिफ़ॉल्ट ट्रांसफ़ॉर्मेशन लागू करने के लिए, अपनी लेआउट फ़ाइल में इस एट्रिब्यूट की जानकारी दी जा सकती है. उपलब्ध एट्रिब्यूट में ये शामिल हैं: translationX, translationY, rotation, rotationX, rotationY, scaleX, scaleY, transformPivotX, transformPivotY और alpha.

    इनमें से कुछ नई व्यू प्रॉपर्टी को नए ऐनिमेशन फ़्रेमवर्क के साथ इस्तेमाल करना (इस बारे में चर्चा की गई है) ऊपर), आप अपने व्यू में आसानी से कुछ फ़ैंसी ऐनिमेशन लागू कर सकते हैं. उदाहरण के लिए, किसी व्यू को उसके y-ऐक्सिस पर घुमाने के लिए, ObjectAnimator के साथ View, "rotationY" प्रॉपर्टी, और शुरू और खत्म होने की वैल्यू दें:

    Kotlin

    ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply {
        duration = 2000
        start()
    }

    Java

    ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360);
    animator.setDuration(2000);
    animator.start();
  • होलोग्राफ़िक थीम की नई सुविधाएं

    सिस्टम के स्टैंडर्ड विजेट और लुक को फिर से डिज़ाइन किया गया है. साथ ही, इसमें एक नया लुक भी दिया गया है. "होलोग्राफ़िक" यूज़र इंटरफ़ेस थीम. सिस्टम, स्टैंडर्ड स्टाइल और थीम सिस्टम का इस्तेमाल करके नई थीम लागू करता है.

    Android 3.0 प्लैटफ़ॉर्म को टारगेट करने वाला कोई भी ऐप्लिकेशन, डिफ़ॉल्ट रूप से होलोग्राफ़िक थीम को इनहेरिट करता है. इसके लिए, android:minSdkVersion या android:targetSdkVersion की वैल्यू को "11" पर सेट करना ज़रूरी है. हालांकि, अगर आपका ऐप्लिकेशन अपनी थीम भी लागू करता है, तो आपकी थीम होलोग्राफ़िक थीम को बदल देगी. ऐसा तब तक होगा, जब तक आप अपनी स्टाइल को अपडेट करके होलोग्राफ़िक थीम को इनहेरिट नहीं कर लेते.

    होलोग्राफ़िक थीम को अलग-अलग गतिविधियों पर लागू करें या उन्हें अपनी थीम के हिसाब से बनाएं परिभाषाएं, कई नई Theme.Holo में से किसी एक का इस्तेमाल करें थीम. अगर आपका ऐप्लिकेशन Android के 3.0 से पहले वाले वर्शन के साथ काम करता है और लागू होता है कस्टम थीम बनाई हैं, तो आपको प्लैटफ़ॉर्म के आधार पर थीम चुननी होगी वर्शन है.

  • नए विजेट
    • AdapterViewAnimator

      AdapterView के लिए बेस क्लास, जो अपने व्यू के बीच स्विच करते समय ऐनिमेशन दिखाती है.

    • AdapterViewFlipper

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

    • CalendarView

      उपयोगकर्ताओं को तारीख स्पर्श करके कैलेंडर से तारीख चुनने की अनुमति देता है और कैलेंडर में और मनमुताबिक तारीख पर सेट करें. विजेट में उपलब्ध तारीखों की सीमा को कॉन्फ़िगर किया जा सकता है.

    • ListPopupWindow

      यह होस्ट व्यू में अपने-आप ऐंकर हो जाता है और विकल्पों की सूची दिखाता है. जैसे, EditText व्यू में टाइप करते समय सुझावों की सूची.

    • NumberPicker

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

    • PopupMenu

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

    • SearchView

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

    • StackView

      ऐसा व्यू जो अपने बच्चों को 3D स्टैक में दिखाता है और उपयोगकर्ताओं को स्वाइप करने की सुविधा देता है जैसे कि Rolodex.

ग्राफ़िक्स

  • हार्डवेयर की मदद से, तेज़ी से काम करने वाले 2D ग्राफ़िक्स

    अब अपने ऐप्लिकेशन के लिए OpenGL रेंडरर को चालू किया जा सकता है. इसके लिए, अपने मेनिफ़ेस्ट एलिमेंट के <application> एलिमेंट में android:hardwareAccelerated="true" या अलग-अलग <activity> एलिमेंट के लिए android:hardwareAccelerated="true" सेट करें.

    इस फ़्लैग की मदद से, ऐप्लिकेशन तेज़ी से ड्रॉ होते हैं. इससे ऐनिमेशन अच्छे दिखते हैं, स्क्रोल करने में आसानी होती है. साथ ही, बेहतर परफ़ॉर्मेंस के साथ-साथ उपयोगकर्ता इंटरैक्शन पर प्रतिक्रिया भी मिलती है.

  • हार्डवेयर और सॉफ़्टवेयर लेयर के लिए सहायता देखना

    डिफ़ॉल्ट रूप से, View में कोई लेयर तय नहीं होती है. आप यह तय कर सकते हैं कि व्यू का बैक अप ऐसे हार्डवेयर या सॉफ़्टवेयर लेयर के ज़रिए लिया जाएगा जिसे LAYER_TYPE_HARDWARE और LAYER_TYPE_SOFTWARE वैल्यू के ज़रिए तय किया गया है. इसका इस्तेमाल करके setLayerType() या layerType एट्रिब्यूट की वैल्यू सबमिट करें.

    हार्डवेयर लेयर, हार्डवेयर के हिसाब से बने टेक्सचर (आम तौर पर, फ़्रेम बफ़र ऑब्जेक्ट या FBO पर देखने के लिए बनाया गया है) और इसके कारण Android की हार्डवेयर रेंडरिंग का उपयोग करके व्यू को रेंडर किया जा सकता है पाइपलाइन में, लेकिन सिर्फ़ तभी जब व्यू हैरारकी के लिए हार्डवेयर एक्सेलरेटर चालू हो. हार्डवेयर से तेज़ी लाने की सुविधा बंद होने पर, हार्डवेयर लेयर ठीक वैसे ही काम करती हैं जैसे सॉफ़्टवेयर लेयर.

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

    ज़्यादा जानकारी के लिए, LAYER_TYPE_HARDWARE और LAYER_TYPE_SOFTWARE दस्तावेज़ देखें.

  • Renderscript 3D ग्राफ़िक्स इंजन

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

    ज़्यादा जानकारी के लिए, देखें 3D रेंडरिंग और कंप्यूटिंग 'रेंडरस्क्रिप्ट दस्तावेज़.

मीडिया

  • टाइम लैप्स वाला वीडियो

    कैमकोर्डर एपीआई में अब टाइम लैप्स वीडियो रिकॉर्ड करने की सुविधा उपलब्ध है. setCaptureRate() से यह तय होता है कि फ़्रेम किस दर से कैप्चर किए जाएं.

  • इमेज स्ट्रीम के लिए टेक्सचर सपोर्ट

    नए SurfaceTexture की मदद से, इमेज स्ट्रीम को OpenGL ES टेक्चर के तौर पर कैप्चर किया जा सकता है. अपनेsetPreviewTexture() Camera इंस्टेंस, आप SurfaceTexture तय कर सकते हैं जिस पर वीडियो प्लेबैक या झलक फ़्रेम बनाना है कैमरा.

  • एचटीटीपी लाइव स्ट्रीमिंग

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

  • EXIF डेटा

    ExifInterface में फ़ोटो एपर्चर, आईएसओ, और एक्सपोज़र के लिए नए फ़ील्ड शामिल किए गए हैं समय.

  • कैमकॉर्डर प्रोफ़ाइलें

    hasProfile() का नया तरीका और कई वीडियो क्वालिटी प्रोफ़ाइल (जैसे QUALITY_1080P, QUALITY_720P, QUALITY_CIF और अन्य) आपको कैमकॉर्डर तय करने की अनुमति देती हैं क्वालिटी के विकल्प.

  • डिजिटल मीडिया पर फ़ाइल ट्रांसफ़र करना

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

  • डिजिटल राइट मैनेजमेंट (डीआरएम)

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

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

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

    डिवाइस बनाने वाली कंपनियों, कॉन्टेंट के मालिकों, और इंटरनेट डिजिटल मीडिया सेवा देने वाली कंपनियों के लिए, डीआरएम फ़्रेमवर्क का प्लग इन API, कॉन्टेंट की सुरक्षा को सुरक्षित तरीके से लागू करने के लिए Android सिस्टम.

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

    आपको android.drm पैकेज में सभी DRM एपीआई मिल सकते हैं.

कीबोर्ड से जुड़ी सहायता

  • Control, Meta, Caps Lock, Num Lock, और Scroll Lock बटनों के साथ काम करता है. ज़्यादा जानकारी के लिए, META_CTRL_ON और उससे जुड़े फ़ील्ड देखें.
  • डेस्कटॉप-स्टाइल के सभी कीबोर्ड इस्तेमाल करने की सुविधा. इसमें Escape, Home, End, मिटाएं और अन्य. यह पता लगाया जा सकता है कि मुख्य इवेंट, फ़ुल कीबोर्ड से आ रहे हैं या नहीं. इसके लिए: getKeyboardType() को क्वेरी की जा रही है और KeyCharacterMap.FULL की जाँच की जा रही है
  • TextView में अब कीबोर्ड से काटने, कॉपी करने, चिपकाने, और सभी को चुनने की सुविधा उपलब्ध है. इसके लिए, Control+X, Control+C, Control+V, और Control+A बटनों का इस्तेमाल करें. यह PageUp/PageDown, होम/एंड, और कीबोर्ड पर आधारित टेक्स्ट चुनने की सुविधा के साथ भी काम करता है.
  • KeyEvent में कई नए तरीके जोड़े गए हैं, ताकि कुंजी में बदलाव करने वाले एलिमेंट की स्थिति को सही और लगातार जांचा जा सके. hasModifiers(int) देखें, hasNoModifiers(), metaStateHasModifiers(), metaStateHasNoModifiers().
  • ऐप्लिकेशन, Activity, Dialog या View को सब-क्लास करके, पसंद के मुताबिक कीबोर्ड शॉर्टकट लागू कर सकते हैं onKeyShortcut(). फ़्रेमवर्क इस तरीके को कॉल करता है जब भी किसी कुंजी को Control कुंजी के साथ जोड़ा जाता है. विकल्प मेन्यू बनाते समय, कीबोर्ड को रजिस्टर किया जा सकता है हर <item> के लिए android:alphabeticShortcut या android:numericShortcut एट्रिब्यूट सेट करके शॉर्टकट बनाएं एलिमेंट (या setShortcut() के साथ) जोड़ें.
  • Android 3.0 में एक नया "वर्चुअल कीबोर्ड" शामिल है KeyCharacterMap.VIRTUAL_KEYBOARD आईडी वाला डिवाइस. द वर्चुअल कीबोर्ड में डेस्कटॉप शैली का यूएस कुंजी मैप है, जो परीक्षण के लिए मुख्य इवेंट को तैयार करने में उपयोगी है इनपुट.

अलग-अलग टच इवेंट

पहले, एक बार में सिर्फ़ एक व्यू टच इवेंट स्वीकार कर सकता था. Android 3.0 इससे व्यू और विंडो में टच इवेंट को बांटने की सुविधा मिलती है, ताकि अलग-अलग व्यू स्वीकार कर सकें को ट्रैक करने की सुविधा मिलती है.

जब कोई ऐप्लिकेशन Android 3.0 को टारगेट करता है, तो स्प्लिट टच इवेंट डिफ़ॉल्ट रूप से चालू होते हैं. इसका मतलब है कि जब ऐप्लिकेशन ने android:minSdkVersion या android:targetSdkVersion एट्रिब्यूट की वैल्यू को "11" पर सेट किया हो.

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

  • व्यू ग्रुप के लिए android:splitMotionEvents एट्रिब्यूट इसकी मदद से, लेआउट में चाइल्ड व्यू के बीच होने वाले स्प्लिट टच इवेंट बंद किए जा सकते हैं. उदाहरण के लिए:
    <LinearLayout android:splitMotionEvents="false" ... >
        ...
    </LinearLayout>

    इस तरह, लीनियर लेआउट में मौजूद चाइल्ड व्यू, टच इवेंट को अलग नहीं कर सकते. एक बार में सिर्फ़ एक व्यू को टच इवेंट मिल सकते हैं.

  • android:windowEnableSplitTouch स्टाइल प्रॉपर्टी इससे आपको गतिविधि के लिए किसी थीम पर लागू करके, सभी विंडो में स्प्लिट टच इवेंट बंद करने की सुविधा मिलती है का इस्तेमाल करें. उदाहरण के लिए:
    <style name="NoSplitMotionEvents" parent="android:Theme.Holo">
        <item name="android:windowEnableSplitTouch">false</item>
        ...
    </style>

    जब इस थीम को <activity> या <application> पर लागू किया जाता है, तो सिर्फ़ मौजूदा गतिविधि विंडो में टच इवेंट स्वीकार किए जाते हैं. उदाहरण के लिए, सभी विंडो में स्प्लिट टच इवेंट बंद करने पर, सिस्टम बार को गतिविधि के साथ-साथ टच इवेंट नहीं मिल सकते. इससे इस बात पर कोई असर नहीं पड़ता कि ऐक्टिविटी में मौजूद व्यू, टच इवेंट को अलग-अलग कर सकते हैं या नहीं. डिफ़ॉल्ट रूप से, ऐक्टिविटी अब भी व्यू के हिसाब से टच इवेंट को अलग-अलग कर सकती है.

    थीम बनाने के बारे में ज़्यादा जानकारी के लिए, स्टाइल और थीम लागू करना लेख पढ़ें.

WebKit

  • इनसे मिलकर बना फ़्रैगमेंट बनाने के लिए नई WebViewFragment क्लास WebView.
  • WebSettings के नए तरीके:
    • setDisplayZoomControls() की मदद से, स्क्रीन पर दिखने वाले ज़ूम कंट्रोल को छिपाया जा सकता है. हालांकि, उपयोगकर्ता को उंगलियों के जेस्चर से ज़ूम करने की अनुमति दी जा सकती है. इसके लिए, setBuiltInZoomControls() को true पर सेट करना ज़रूरी है.
    • WebSettings के नए तरीके, setEnableSmoothTransition() की मदद से, पैन और ज़ूम करते समय आसानी से ट्रांज़िशन किया जा सकता है. इसके चालू होने पर, वेबव्यू कोई समाधान चुनेगा (उदाहरण के लिए, वेबव्यू का कॉन्टेंट ट्रांज़िशन देखें).
  • WebView के नए तरीके:
    • किसी भी प्रोसेसिंग को रोकने के लिए, onPause() कॉलबैक के छिपे होने पर, वेबव्यू से जुड़े होते हैं. यह तब काम का होता है, जब WebView फ़ोरग्राउंड में न हो और सीपीयू या नेटवर्क ट्रैफ़िक को कम करना हो.
    • प्रोसेस फिर से शुरू करने के लिए, onResume() कॉलबैक वेबव्यू से जुड़ा था, जिसे onPause() के दौरान रोक दिया गया था.
    • saveWebArchive() से आपको यह जानकारी सेव करने में मदद मिलती है वर्तमान दृश्य को डिवाइस पर वेब संग्रह के रूप में देखें.
    • showFindDialog() इसमें टेक्स्ट खोज शुरू करता है मौजूदा व्यू.

ब्राउज़र

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

  • मीडिया कैप्चर करना

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

    <input type="file" accept="image/*;capture=camera" />

    इसके अलावा, capture=camera पैरामीटर को बाहर रखकर, उपयोगकर्ता किसी भी फ़ॉर्मैट को कैप्चर करने का विकल्प चुन सकता है कैमरे के साथ कोई नई इमेज या डिवाइस से कोई इमेज चुनें (जैसे कि गैलरी ऐप्लिकेशन से).

  • डिवाइस की ओरिएंटेशन

    डिवाइस ओरिएंटेशन इवेंट के स्पेसिफ़िकेशन के मुताबिक, ब्राउज़र वेब ऐप्लिकेशन को ऐसे DOM इवेंट को सुनने की अनुमति देता है जो डिवाइस के फ़िज़िकल ओरिएंटेशन और मोशन के बारे में जानकारी देते हैं.

    डिवाइस के ओरिएंटेशन को डिग्री में x, y, और z ऐक्सिस के साथ दिखाया जाता है. साथ ही, गति को ऐक्सेलरेशन और रोटेशन रेट के डेटा के साथ दिखाया जाता है. कोई वेब पेज ओरिएंटेशन के लिए रजिस्टर कर सकता है "deviceorientation" इवेंट टाइप के साथ window.addEventListener पर कॉल करने से इवेंट और "devicemotion" इवेंट टाइप को रजिस्टर करके, मोशन इवेंट के लिए रजिस्टर करें.

  • सीएसएस के 3D ट्रांसफ़ॉर्म

    CSS 3D Transform द्वारा परिभाषित मॉड्यूल की खास जानकारी के हिसाब से, ब्राउज़र, सीएसएस से रेंडर किए गए एलिमेंट को तीन यूआरएल में बदलने देता है डाइमेंशन.

JSON की सुविधाएं

नई क्लास, JsonReader और JsonWriter, आपकी मदद करेंगी JSON स्ट्रीम पढ़ने और उनमें बदलाव करने की सुविधा मिलती है. नए एपीआई, org.json क्लास के साथ काम करते हैं. ये क्लास, मेमोरी में मौजूद दस्तावेज़ में बदलाव करती हैं.

JsonReader का इंस्टेंस बनाने के लिए, इसके कंस्ट्रक्टर का तरीका आज़माएं. साथ ही, JSON स्ट्रिंग को फ़ीड करने वाला InputStreamReader पास करें. इसके बाद, beginObject() को कॉल करके किसी ऑब्जेक्ट को पढ़ना शुरू करें. इसके बाद, nextName() की मदद से किसी बटन का नाम पढ़ें. इसके बाद, nextString() और nextInt() जैसे टाइप के हिसाब से वैल्यू पढ़ने के तरीकों का इस्तेमाल करें. साथ ही, hasNext() के सही होने तक ऐसा करते रहें.

आप JsonWriter के कंस्ट्रक्टर को कॉल करके और इसका इंस्टेंस बना सकते हैं सही OutputStreamWriter को पास करना. इसके बाद, JSON डेटा को रीडर की तरह लिखें. इसके लिए, प्रॉपर्टी का नाम जोड़ने के लिए name() का इस्तेमाल करें और उससे जुड़ी वैल्यू जोड़ने के लिए सही value() तरीका अपनाएं.

ये क्लास डिफ़ॉल्ट रूप से सख्त होती हैं. हर क्लास में setLenient() तरीका, उन्हें स्वीकार करने के लिए ज़्यादा उदार बनाता है. org.json के डिफ़ॉल्ट पार्सर के साथ भी, ज़्यादा सहज तौर पर पार्स करने वाला यह मोड काम करता है.

नई सुविधा के लिए कॉन्स्टेंट

<uses-feature> मेनिफ़ेस्ट एलिमेंट का इस्तेमाल, बाहरी इकाइयों (जैसे, Google Play) को उन हार्डवेयर और सॉफ़्टवेयर सुविधाओं के सेट के बारे में बताने के लिए किया जाना चाहिए जिन पर आपका ऐप्लिकेशन निर्भर करता है. इस रिलीज़ में, Android नीचे दिए गए नए कॉन्सटेंट हैं, जिन्हें ऐप्लिकेशन इस एलीमेंट के साथ घोषित कर सकते हैं:

  • "android.hardware.faketouch"

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

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

    जिन डिवाइसों में टचस्क्रीन है वे सभी "android.hardware.faketouch" के साथ काम करते हैं. ऐसा इसलिए है, क्योंकि टचस्क्रीन की सुविधाएं, फ़ेकटच की सुविधाओं का सुपरसेट होती हैं. इसलिए, अगर आपको असल में टचस्क्रीन की ज़रूरत नहीं है, तो आपको फ़ेकटच के लिए <uses-feature> एलिमेंट जोड़ना चाहिए.

नई अनुमतियां

  • "android.permission.BIND_REMOTEVIEWS"

    इसे <service> मेनिफ़ेस्ट में ज़रूरी अनुमति के तौर पर बताया जाना चाहिए तत्व है, तो RemoteViewsService को लागू करने के लिए इस फ़ील्ड का इस्तेमाल किया जाएगा. उदाहरण के लिए, जब एक ऐसा ऐप्लिकेशन विजेट बनाना जोRemoteViewsService कलेक्शन व्यू, मेनिफ़ेस्ट एंट्री इस तरह दिख सकती है:

    <service android:name=".widget.WidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />

प्लैटफ़ॉर्म से जुड़ी नई टेक्नोलॉजी

  • डिवाइस का स्टोरेज
    • ऑनबोर्ड eMMC स्टोरेज को चालू करने के लिए, ext4 फ़ाइल सिस्टम का इस्तेमाल किया जा सकता है.
    • MTP डिवाइसों के साथ काम करने के लिए, FUSE फ़ाइल सिस्टम.
    • यूएसबी होस्ट मोड की सुविधा, कीबोर्ड और यूएसबी हब के साथ काम करती है.
    • MTP/PTP के साथ काम करना
  • Linux कर्नेल
    • 2.6.36 पर अपग्रेड किया गया
  • Dalvik वीएम
    • एसएमपी के लिए सहायता और ऑप्टिमाइज़ करने वाला नया कोड
    • जेआईटी इन्फ़्रास्ट्रक्चर में कई सुधार किए गए
    • कचरा इकट्ठा करने वाले टूल में सुधार:
      • एसएमपी के लिए ट्यून किया गया
      • बड़े हेप साइज़ के लिए सहायता
      • बिटमैप और बाइट बफ़र के लिए यूनिफ़ाइड हैंडलिंग
  • Dalvik की मुख्य लाइब्रेरी
    • NIO (आधुनिक I/O लाइब्रेरी) को नए और ज़्यादा तेज़ तरीके से लागू करना
    • अपवाद मैसेज को बेहतर बनाया गया
    • परफ़ॉर्मेंस में सुधार और सुधार

एपीआई में अंतर की रिपोर्ट

Android 3.0 (एपीआई लेवल 11) में एपीआई से जुड़े सभी बदलावों के बारे में ज़्यादा जानने के लिए, एपीआई के बीच अंतर की रिपोर्ट देखें.

एपीआई लेवल

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

अपने ऐप्लिकेशन में Android 3.0 में लॉन्च किए गए एपीआई का इस्तेमाल करने के लिए, आपको ऐप्लिकेशन को Android 3.0 SDK प्लैटफ़ॉर्म में दी गई Android लाइब्रेरी के हिसाब से कॉम्पाइल करना होगा. अपनी ज़रूरतों के हिसाब से, android:minSdkVersion="11" भी जोड़ना होगा ऐप्लिकेशन के <uses-sdk> एलिमेंट की विशेषता मेनिफ़ेस्ट. यदि आपका ऐप्लिकेशन केवल Android 2.3 और इसके बाद वाले वर्शन पर चलने के लिए डिज़ाइन किया गया है, एट्रिब्यूट की जानकारी देने से, ऐप्लिकेशन पहले से इंस्टॉल नहीं हो पाता प्लैटफ़ॉर्म के अलग-अलग वर्शन के साथ काम करता है.

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