Android 3.0 API

एपीआई लेवल: 11

डेवलपर के लिए, Android 3.0 प्लेटफ़ॉर्म (HONEYCOMB) डाउनलोड किया जा सकता है एक कॉम्पोनेंट से जुड़ा होता है. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में एक 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 डेमो ऐप्लिकेशन.

कार्रवाई बार

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

View में ड्रैग ऑब्जेक्ट स्वीकार करने के लिए ("ड्रॉप पाएं") स्वीकार करने के लिए, व्यू रजिस्टर करें setOnDragListener() पर कॉल करके OnDragListener के साथ कॉल करें. जब व्यू पर कोई ड्रैग इवेंट होता है, तो सिस्टम, OnDragListener के लिए onDrag() को कॉल करता है, जिसे 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 और हेडसेट API

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

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

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

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

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

आप ऑब्जेक्ट के पूर्णांक, फ़्लोट और हेक्साडेसिमल के लिए इन एनिमेशन पहलुओं और अन्य पहलुओं को परिभाषित कर सकते हैं रंग मान, डिफ़ॉल्ट रूप से. इसका मतलब है कि जब किसी ऑब्जेक्ट में इनमें से किसी एक टाइप के लिए प्रॉपर्टी फ़ील्ड होता है, तो आपको किसी ऐनिमेशन को प्रभावित करने के लिए, समय के साथ उसकी वैल्यू में बदलाव कर सकता है. आपको बताना होगा कि किसी दूसरी तरह की वैल्यू को ऐनिमेट करने के लिए सिस्टम को, उस टाइप के लिए वैल्यू का हिसाब लगाने का तरीका देता है. इसके लिए, वह 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-अक्ष पर व्यू, View के साथ ObjectAnimator की सप्लाई करें, "घूर्णनY" प्रॉपर्टी और शुरुआती और आखिरी वैल्यू:

    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 स्टैक में दिखाता है और उपयोगकर्ताओं को स्वाइप करने की सुविधा देता है को देखने में दिलचस्पी है.

ग्राफ़िक्स

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

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

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

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

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

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

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

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

  • रेंडरस्क्रिप्ट 3D ग्राफ़िक्स इंजन

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

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

मीडिया

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

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

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

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

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

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

  • EXIF डेटा

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

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

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

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

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

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

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

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

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

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

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

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

कीबोर्ड सहायता

  • 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, Home/End, और कीबोर्ड के हिसाब से टेक्स्ट चुनना.
  • 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() कॉलबैक के छिपे होने पर, वेबव्यू से जुड़े होते हैं. यह ग़ैर-ज़रूरी सीपीयू को कम करने में मदद करता है या वेबव्यू के फ़ोरग्राउंड में न होने पर नेटवर्क ट्रैफ़िक.
    • प्रोसेस फिर से शुरू करने के लिए, onResume() कॉलबैक वेबव्यू से जुड़ा था, जिसे onPause() के दौरान रोक दिया गया था.
    • saveWebArchive() से आपको यह जानकारी सेव करने में मदद मिलती है वर्तमान दृश्य को डिवाइस पर वेब संग्रह के रूप में देखें.
    • showFindDialog() इसमें टेक्स्ट खोज शुरू करता है मौजूदा व्यू.

ब्राउज़र

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

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

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

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

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

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

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

    डिवाइस ओरिएंटेशन को 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"

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

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

    टचस्क्रीन वाले सभी डिवाइस भी "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 वीएम
    • SMP के साथ काम करने और उसे ऑप्टिमाइज़ करने के लिए नया कोड
    • जेआईटी इन्फ़्रास्ट्रक्चर में कई सुधार किए गए
    • कचरा इकट्ठा करने वाले टूल में किए गए सुधार:
      • एसएमपी के लिए ट्यून किया गया
      • हीप के बड़े साइज़ के साथ काम करता है
      • बिटमैप और बाइट बफ़र के लिए यूनिफ़ाइड हैंडलिंग
  • Dalvik Core Library
    • एनआईओ (मॉडर्न I/O लाइब्रेरी) को नए तरीके से और तेज़ी से लागू किया जा सकता है
    • अपवाद वाले मैसेज की बेहतर सुविधा
    • परफ़ॉर्मेंस में सुधार और सुधार

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

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

एपीआई लेवल

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

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

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