एपीआई लेवल: 13
Android 3.2 (HONEYCOMB_MR2
) एक ऐसा प्लैटफ़ॉर्म है जिसमें उपयोगकर्ताओं और डेवलपर के लिए नई सुविधाएं जोड़ी गई हैं. नीचे दिए गए सेक्शन में, नई सुविधाओं और डेवलपर एपीआई के बारे में खास जानकारी दी गई है.
डेवलपर के लिए, Android 3.2 प्लैटफ़ॉर्म, Android SDK टूल के लिए डाउनलोड किए जा सकने वाले कॉम्पोनेंट के तौर पर उपलब्ध है. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में, Android लाइब्रेरी और सिस्टम इमेज के साथ-साथ, इम्यूलेटर स्किन का एक सेट और अन्य चीज़ें शामिल होती हैं. Android 3.2 के लिए ऐप्लिकेशन डेवलप करने या टेस्ट करने के लिए, Android SDK मैनेजर का इस्तेमाल करके, प्लैटफ़ॉर्म को अपने SDK में डाउनलोड करें.
प्लैटफ़ॉर्म की खास बातें
उपयोगकर्ता के लिए नई सुविधाएं
- अलग-अलग तरह के टैबलेट के लिए ऑप्टिमाइज़ेशन
Android 3.2 में सिस्टम के लिए कई तरह के ऑप्टिमाइज़ेशन शामिल हैं. इससे, अलग-अलग तरह के टेबलेट डिवाइसों पर बेहतर उपयोगकर्ता अनुभव मिलता है.
- तय साइज़ वाले ऐप्लिकेशन के लिए, अलग-अलग डिवाइसों पर काम करने की सुविधा के साथ ज़ूम करना
Android 3.2 में, कम्पैटबिलिटी ज़ूम मोड की नई सुविधा जोड़ी गई है. इससे, उपयोगकर्ताओं को बड़े डिवाइसों पर, तय साइज़ के ऐप्लिकेशन देखने का एक नया तरीका मिलता है. नया मोड, उन ऐप्लिकेशन के लिए स्टैंडर्ड यूज़र इंटरफ़ेस (यूआई) को बड़ा करने के बजाय, पिक्सल के हिसाब से स्केल करने का विकल्प देता है जिन्हें बड़ी स्क्रीन वाले डिवाइसों, जैसे कि टैबलेट पर चलाने के लिए डिज़ाइन नहीं किया गया है. उपयोगकर्ता, सिस्टम बार में मौजूद मेन्यू आइकॉन से नए मोड को ऐक्सेस कर सकते हैं. यह उन ऐप्लिकेशन के लिए है जिनके काम करने के लिए, कंपैटबिलिटी की ज़रूरत होती है.
- एसडी कार्ड से मीडिया सिंक करना
एसडी कार्ड के साथ काम करने वाले डिवाइस पर, उपयोगकर्ता अब मीडिया फ़ाइलों को सीधे एसडी कार्ड से उन ऐप्लिकेशन पर लोड कर सकते हैं जो इनका इस्तेमाल करते हैं. सिस्टम की सुविधा, फ़ाइलों को सिस्टम मीडिया स्टोर से ऐप्लिकेशन के लिए ऐक्सेस करने लायक बनाती है.
डेवलपर के लिए नई सुविधाएं
- स्क्रीन मैनेज करने के लिए एक्सटेंडेड एपीआई
Android 3.2 में, प्लैटफ़ॉर्म के स्क्रीन सपोर्ट एपीआई के लिए एक्सटेंशन जोड़े गए हैं. इससे डेवलपर को Android डिवाइसों की रेंज में, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को मैनेज करने के अन्य तरीके मिलेंगे. एपीआई में नए रिसॉर्स क्वालिफ़ायर और नए मेनिफ़ेस्ट एट्रिब्यूट शामिल हैं. इनकी मदद से, आपको यह कंट्रोल करने में मदद मिलती है कि आपके ऐप्लिकेशन अलग-अलग साइज़ में कैसे दिखाए जाएं. इसके लिए, आपको साइज़ की सामान्य कैटगरी पर निर्भर रहने की ज़रूरत नहीं होती.
यह प्लैटफ़ॉर्म, तय साइज़ वाले ऐप्लिकेशन और अलग-अलग स्क्रीन साइज़ के साथ काम करने वाले सीमित ऐप्लिकेशन के लिए, सबसे अच्छा डिसप्ले उपलब्ध कराने के लिए, ज़ूम के साथ काम करने वाला एक नया मोड भी उपलब्ध कराता है. यह मोड, यूज़र इंटरफ़ेस (यूआई) को स्क्रीन के छोटे हिस्से पर रेंडर करता है. इसके बाद, डिसप्ले पर उपलब्ध जगह को भरने के लिए, इसे बड़ा कर देता है. स्क्रीन पर सहायता देने वाले एपीआई और उससे मिलने वाले कंट्रोल के बारे में ज़्यादा जानने के लिए, नीचे दिए गए सेक्शन देखें.
एपीआई की खास जानकारी
Screens Support API
Android 3.2 में, नई स्क्रीन के लिए सहायक एपीआई जोड़े गए हैं. इनकी मदद से, यह कंट्रोल किया जा सकता है कि अलग-अलग स्क्रीन साइज़ पर ऐप्लिकेशन कैसे दिखें. यह एपीआई, स्क्रीन के लिए सहायता देने वाले मौजूदा एपीआई पर आधारित है. इसमें प्लैटफ़ॉर्म का सामान्य स्क्रीन डेंसिटी मॉडल भी शामिल है. हालांकि, इसमें स्क्रीन के सामान्य साइज़ (जैसे, बड़ा या बहुत बड़ा) के बजाय, स्क्रीन के डाइमेंशन के हिसाब से, स्क्रीन की खास रेंज को सटीक तौर पर टारगेट करने की सुविधा भी शामिल है. डाइमेंशन को डेंसिटी-इंडिपेंडेंट पिक्सल यूनिट (जैसे, 600dp या 720dp चौड़ा) में मेज़र किया जाता है
ऐप्लिकेशन का यूज़र इंटरफ़ेस डिज़ाइन करते समय, अब भी प्लैटफ़ॉर्म पर डेंसिटी एब्स्ट्रैक्शन की सुविधा का इस्तेमाल किया जा सकता है. इसका मतलब है कि ऐप्लिकेशन को अलग-अलग डिवाइसों पर पिक्सल डेंसिटी में होने वाले अंतर के लिए, बदलाव करने की ज़रूरत नहीं है. आपके पास ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को उपलब्ध हॉरिज़ॉन्टल या वर्टिकल स्पेस के हिसाब से डिज़ाइन करने का विकल्प होता है. प्लैटफ़ॉर्म, उपलब्ध जगह की जानकारी देने के लिए तीन नई विशेषताओं का इस्तेमाल करता है: smallestWidth, width, और height.
- स्क्रीन की smallestwidth डिफ़ॉल्ट रूप से उसके कम से कम साइज़ को मापती है. इसका आकलन, डेंसिटी-इंडिपेंडेंट पिक्सल ("dp") यूनिट में किया जाता है. स्क्रीन की ऊंचाई या चौड़ाई में से, यह दोनों में से छोटी होती है. पोर्ट्रेट ओरिएंटेशन वाली स्क्रीन के लिए, सबसे छोटी चौड़ाई आम तौर पर उसकी चौड़ाई पर आधारित होती है. वहीं, लैंडस्केप ओरिएंटेशन में यह उसकी ऊंचाई पर आधारित होती है. सभी मामलों में, सबसे छोटी चौड़ाई, स्क्रीन की किसी तय विशेषता से ली जाती है. साथ ही, ओरिएंटेशन के बावजूद इसकी वैल्यू नहीं बदलती. सबसे छोटी चौड़ाई, ऐप्लिकेशन के लिए अहम है, क्योंकि यह सबसे छोटी चौड़ाई दिखाती है जिसमें ऐप्लिकेशन यूज़र इंटरफ़ेस (यूआई) को ड्रॉ करना होगा. इसमें सिस्टम के लिए तय किए गए स्क्रीन एरिया शामिल नहीं हैं.
- इसके उलट, स्क्रीन की चौड़ाई और ऊंचाई, ऐप्लिकेशन लेआउट के लिए उपलब्ध मौजूदा हॉरिज़ॉन्टल या वर्टिकल स्पेस को दिखाती है, जिसे "dp" यूनिट में मापा जाता है. इसमें सिस्टम के रिज़र्व किए गए स्क्रीन एरिया शामिल नहीं हैं. जब उपयोगकर्ता ओरिएंटेशन को लैंडस्केप और पोर्ट्रेट के बीच स्विच करता है, तो स्क्रीन की चौड़ाई और ऊंचाई बदल जाती है.
नई स्क्रीन के लिए सहायता एपीआई को इस तरह से डिज़ाइन किया गया है कि आप मौजूदा स्क्रीन की सबसे छोटी चौड़ाई के हिसाब से, ऐप्लिकेशन के यूज़र इंटरफ़ेस को मैनेज कर सकें. आपके पास अपनी ज़रूरत के हिसाब से, मौजूदा चौड़ाई या ऊंचाई के हिसाब से भी यूज़र इंटरफ़ेस (यूआई) को मैनेज करने का विकल्प होता है. इन कामों के लिए, एपीआई ये टूल उपलब्ध कराता है:
- लेआउट और अन्य रिसॉर्स को कम से कम smallestWidth, width या height पर टारगेट करने के लिए, नए रिसॉर्स क्वालिफ़ायर
- ऐप्लिकेशन की स्क्रीन के साथ काम करने की ज़्यादा से ज़्यादा सीमा तय करने के लिए नई मेनिफ़ेस्ट एट्रिब्यूट
इसके अलावा, ऐप्लिकेशन अब भी सिस्टम से क्वेरी कर सकते हैं और रनटाइम के दौरान यूज़र इंटरफ़ेस (यूआई) और संसाधन लोड करने की प्रोसेस को मैनेज कर सकते हैं.
नए एपीआई की मदद से, सबसे छोटी चौड़ाई, चौड़ाई, और ऊंचाई के ज़रिए स्क्रीन को ज़्यादा सीधे तौर पर टारगेट किया जा सकता है. इसलिए, अलग-अलग तरह की स्क्रीन की सामान्य विशेषताओं को समझना मददगार होता है. यहां दी गई टेबल में कुछ उदाहरण दिए गए हैं, जिन्हें "dp" यूनिट में मेज़र किया गया है.
टाइप | डेंसिटी (सामान्य) | डाइमेंशन (dp) | smallestWidth (dp) |
---|---|---|---|
बेसलाइन फ़ोन | mdpi | 320x480 | 320 |
छोटा टैबलेट/बड़ा फ़ोन | mdpi | 480x800 | 480 |
7-इंच का टेबलेट | mdpi | 600x1024 | 600 |
10 इंच का टेबलेट | एमडीपीआई | 800x1280 | 800 |
यहां दिए गए सेक्शन में, स्क्रीन के लिए नई शर्तों और मेनिफ़ेस्ट एट्रिब्यूट के बारे में ज़्यादा जानकारी दी गई है. Screen Support API का इस्तेमाल करने के तरीके के बारे में पूरी जानकारी के लिए, एक से ज़्यादा स्क्रीन के साथ काम करना लेख पढ़ें.
स्क्रीन सहायता के लिए नए रिसॉर्स क्वालीफ़ायर
Android 3.2 के नए रिसॉर्स क्वालीफ़ायर से, आपको स्क्रीन साइज़ की रेंज के लिए, अपने लेआउट को बेहतर तरीके से टारगेट करने की सुविधा मिलती है. क्वालिफ़ायर का इस्तेमाल करके, ऐसे संसाधन कॉन्फ़िगरेशन बनाए जा सकते हैं जिन्हें किसी खास कम से कम smallestWidth, मौजूदा चौड़ाई या मौजूदा ऊंचाई के लिए डिज़ाइन किया गया हो. इन्हें डेंसिटी-इंडिपेंडेंट पिक्सल में मेज़र किया जाता है.
नए क्वालीफ़ायर ये हैं:
swNNNdp
— सबसे छोटे width की वैल्यू तय करता है, जिस पर संसाधन का इस्तेमाल किया जाना चाहिए. इसे "dp" इकाइयों में मेज़र किया जाता है. जैसा कि ऊपर बताया गया है, स्क्रीन की सबसे छोटी चौड़ाई स्थिर रहती है, फिर चाहे स्क्रीन की दिशा कुछ भी हो. उदाहरण:sw320dp
,sw720dp
,sw720dp
.wNNNdp
औरhNNNdp
— इससे पता चलता है कि संसाधन की कम से कम चौड़ाई या ऊंचाई किस ऊंचाई या कम पर इस्तेमाल होनी चाहिए. इसे "dp" इकाइयों में मापा जाता है. जैसा कि ऊपर बताया गया है, स्क्रीन की चौड़ाई और ऊंचाई, स्क्रीन की दिशा के हिसाब से होती है. स्क्रीन की चौड़ाई और ऊंचाई, स्क्रीन की दिशा बदलने पर बदल जाती है. उदाहरण:w320dp
,w720dp
,h1024dp
.
ज़रूरत पड़ने पर, ओवरलैप होने वाले कई संसाधन कॉन्फ़िगरेशन भी बनाए जा सकते हैं. उदाहरण के लिए, कुछ रिसॉर्स को 480 डीपी से ज़्यादा चौड़ी स्क्रीन पर इस्तेमाल करने के लिए, कुछ रिसॉर्स को 600 डीपी से ज़्यादा चौड़ी स्क्रीन पर इस्तेमाल करने के लिए, और कुछ रिसॉर्स को 720 डीपी से ज़्यादा चौड़ी स्क्रीन पर इस्तेमाल करने के लिए टैग किया जा सकता है. जब किसी स्क्रीन के लिए एक से ज़्यादा संसाधन कॉन्फ़िगरेशन ज़रूरी शर्तें पूरी करते हैं, तो सिस्टम सबसे ज़्यादा मैच करने वाला कॉन्फ़िगरेशन चुनता है. किसी स्क्रीन पर कौनसे संसाधन लोड किए जाएं, इस पर सटीक कंट्रोल के लिए, संसाधनों को एक क्वालीफ़ायर से टैग किया जा सकता है या कई नए या मौजूदा क्वालीफ़ायर को जोड़ा जा सकता है.
ऊपर बताए गए सामान्य डाइमेंशन के आधार पर, यहां कुछ उदाहरण दिए गए हैं कि नए क्वालिफ़ायर का इस्तेमाल कैसे किया जा सकता है:
res/layout/main_activity.xml # For phones res/layout-sw600dp/main_activity.xml # For 7” tablets res/layout-sw720dp/main_activity.xml # For 10” tablets res/layout-w600dp/main_activity.xml # Multi-pane when enough width res/layout-sw600dp-w720dp/main_activity.xml # For large width
प्लैटफ़ॉर्म के पुराने वर्शन, नए क्वालीफ़ायर को अनदेखा कर देंगे. इसलिए, ज़रूरत के हिसाब से उन्हें मिक्स किया जा सकता है, ताकि यह पक्का किया जा सके कि आपका ऐप्लिकेशन किसी भी डिवाइस पर बेहतरीन दिखे. यहां कुछ उदाहरण दिए गए हैं:
res/layout/main_activity.xml # For phones res/layout-xlarge/main_activity.xml # For pre-3.2 tablets res/layout-sw600dp/main_activity.xml # For 3.2 and up tablets
नए क्वालिफ़ायर का इस्तेमाल करने के तरीके के बारे में पूरी जानकारी के लिए, नए साइज़ क्वालिफ़ायर का इस्तेमाल करना देखें.
स्क्रीन साइज़ के साथ काम करने के लिए नए मेनिफ़ेस्ट एट्रिब्यूट
फ़्रेमवर्क, <supports-screens>
मेनिफ़ेस्ट एट्रिब्यूट का एक नया सेट उपलब्ध कराता है. इसकी मदद से, अलग-अलग स्क्रीन साइज़ के लिए अपने ऐप्लिकेशन के काम करने की सुविधा को मैनेज किया जा सकता है.
खास तौर पर, आपके पास यह तय करने का विकल्प होता है कि आपका ऐप्लिकेशन सबसे बड़ी और सबसे छोटी किन स्क्रीन पर काम करे. साथ ही, यह भी तय किया जा सकता है कि ऐप्लिकेशन सबसे बड़ी किस स्क्रीन पर काम करे, ताकि उसे सिस्टम के नए स्क्रीन के साथ काम करने वाले मोड की ज़रूरत न पड़े. ऊपर बताए गए रिसॉर्स क्वालिफ़ायर की तरह ही, नए मेनिफ़ेस्ट एट्रिब्यूट से उन स्क्रीन की रेंज के बारे में पता चलता है जिन पर ऐप्लिकेशन काम करता है. इस बारे में सबसे छोटी चौड़ाई से पता चलता है.
स्क्रीन पर काम करने की सुविधा के लिए, नई मेनिफ़ेस्ट एट्रिब्यूट ये हैं:
android:compatibleWidthLimitDp="numDp"
— इस एट्रिब्यूट की मदद से, सबसे छोटे डिवाइस के स्क्रीन साइज़ की जानकारी दी जा सकती है. इस साइज़ पर ऐप्लिकेशन, काम करने के लिए कम्पैटिबिलिटी मोड की ज़रूरत नहीं होती. अगर मौजूदा स्क्रीन बताई गई वैल्यू से बड़ी है, तो सिस्टम ऐप्लिकेशन को सामान्य मोड में दिखाता है. हालांकि, यह उपयोगकर्ता को सिस्टम बार में मौजूद सेटिंग की मदद से, वैकल्पिक रूप से कम्पैटबिलटी मोड पर स्विच करने की अनुमति देता है.android:largestWidthLimitDp="numDp"
— इस एट्रिब्यूट की मदद से, सबसे छोटे width की वह वैल्यू तय की जा सकती है जिस पर ऐप्लिकेशन को चलाने के लिए डिज़ाइन किया गया है. अगर मौजूदा स्क्रीन, तय की गई वैल्यू से बड़ी है, तो सिस्टम ऐप्लिकेशन को स्क्रीन कंपैटबिलिटी मोड में चलाता है. इससे, मौजूदा स्क्रीन पर ऐप्लिकेशन को बेहतर तरीके से दिखाया जा सकता है.android:requiresSmallestWidthDp="numDp"
— इस एट्रिब्यूट की मदद से, ऐप्लिकेशन की सबसे छोटी चौड़ाई तय की जा सकती है. अगर मौजूदा स्क्रीन, तय की गई वैल्यू से छोटी है, तो सिस्टम यह मानता है कि ऐप्लिकेशन, डिवाइस के साथ काम नहीं करता. हालांकि, इससे ऐप्लिकेशन को इंस्टॉल और चलाने से नहीं रोका जाता.
ध्यान दें: फ़िलहाल, Google Play ऊपर दिए गए किसी भी एट्रिब्यूट के आधार पर ऐप्लिकेशन फ़िल्टर नहीं करता. फ़िल्टर करने की सुविधा, प्लैटफ़ॉर्म के अगले वर्शन में जोड़ी जाएगी. जिन ऐप्लिकेशन को स्क्रीन के साइज़ के हिसाब से फ़िल्टर करने की ज़रूरत होती है वे पहले से मौजूद <supports-screens>
एट्रिब्यूट का इस्तेमाल कर सकते हैं.
नए एट्रिब्यूट इस्तेमाल करने के तरीके के बारे में पूरी जानकारी के लिए, स्क्रीन साइज़ से जुड़ी सहायता का एलान करना देखें.
स्क्रीन कंपैटबिलिटी मोड
Android 3.2 में, ऐप्लिकेशन के लिए स्क्रीन कंपैटबिलिटी मोड की नई सुविधा जोड़ी गई है. इस मोड में, ऐप्लिकेशन के लिए साफ़ तौर पर बताया जाता है कि वे उस डिवाइस की स्क्रीन के साइज़ के बराबर साइज़ वाली स्क्रीन पर काम नहीं करते जिस पर वे चल रहे हैं. यह नया "ज़ूम" मोड पिक्सल के स्केल पर बनाया गया है — यह ऐप्लिकेशन को छोटे स्क्रीन एरिया में रेंडर करता है और फिर मौजूदा स्क्रीन को भरने के लिए पिक्सल को स्केल करता है.
डिफ़ॉल्ट रूप से, सिस्टम उन ऐप्लिकेशन के लिए, स्क्रीन के साथ काम करने वाले मोड को उपयोगकर्ता के विकल्प के तौर पर उपलब्ध कराता है जिनके लिए इसकी ज़रूरत होती है. उपयोगकर्ता, सिस्टम बार में मौजूद कंट्रोल का इस्तेमाल करके, ज़ूम मोड को चालू और बंद कर सकते हैं.
ऐसा हो सकता है कि स्क्रीन कंपैटबिलिटी का नया मोड, सभी ऐप्लिकेशन के लिए सही न हो. इसलिए, प्लैटफ़ॉर्म ऐप्लिकेशन को मेनिफ़ेस्ट एट्रिब्यूट का इस्तेमाल करके, इसे बंद करने की अनुमति देता है. जब ऐप्लिकेशन के ज़रिए यह सुविधा बंद की जाती है, तो सिस्टम ऐप्लिकेशन के चलने के दौरान, उपयोगकर्ताओं को "ज़ूम" कंपैटिबिलिटी मोड का विकल्प नहीं दिखाता.
ध्यान दें: अपने ऐप्लिकेशन में, साथ काम करने वाले मोड को कंट्रोल करने के तरीके के बारे में अहम जानकारी के लिए, कृपया Android डेवलपर ब्लॉग पर बड़ी स्क्रीन पर काम करने वाले ऐप्लिकेशन के लिए नया मोड लेख पढ़ें.
720p टीवी और मिलते-जुलते डिवाइसों के लिए नई स्क्रीन डेंसिटी
720p टीवी या इससे मिलती-जुलती स्क्रीन पर चलने वाले ऐप्लिकेशन की ज़रूरतों को पूरा करने के लिए, Android 3.2 में एक नई सामान्य डेंसिटी, tvdpi
को शामिल किया गया है. इसकी डीपीआई करीब 213 है. ऐप्लिकेशन, densityDpi
में नए डेंसिटी के लिए क्वेरी कर सकते हैं. साथ ही, टेलिविज़न और मिलते-जुलते डिवाइसों के लिए संसाधनों को टैग करने के लिए, नए tvdpi
क्वालिफ़ायर का इस्तेमाल कर सकते हैं. उदाहरण के लिए:
res/drawable-tvdpi/my_icon.png # Bitmap for tv density
आम तौर पर, ऐप्लिकेशन को इस डेंसिटी के साथ काम करने की ज़रूरत नहीं होती. जिन मामलों में 720 पिक्सल की स्क्रीन के लिए आउटपुट की ज़रूरत होती है उनमें प्लैटफ़ॉर्म, यूज़र इंटरफ़ेस (यूआई) एलिमेंट को अपने-आप स्केल कर सकता है.
यूज़र इंटरफ़ेस (यूआई) फ़्रेमवर्क
- फ़्रैगमेंट
- नए
Fragment.SavedState
क्लास में, फ़्रैगमेंट इंस्टेंस सेsaveFragmentInstanceState()
के ज़रिए मिली स्थिति की जानकारी होती है. - नया तरीका
saveFragmentInstanceState()
दिए गए फ़्रैगमेंट के मौजूदा इंस्टेंस की स्थिति को सेव करता है. मौजूदा स्थिति से मैच करने वाले फ़्रैगमेंट का नया इंस्टेंस बनाते समय, इस स्थिति का इस्तेमाल किया जा सकता है. - नया तरीका
setInitialSavedState()
, किसी फ़्रैगमेंट को पहली बार बनाने पर, उसके लिए सेव की गई शुरुआती स्थिति सेट करता है. - नया
onViewCreated()
कॉलबैक तरीका, फ़्रैगमेंट को सूचना देता है किonCreateView()
वापस आ गया है. हालांकि, यह सूचना तब दी जाती है, जब व्यू में सेव की गई कोई भी स्थिति वापस नहीं लाई गई हो. isDetached()
विधि से यह तय होता है कि फ़्रैगमेंट को यूज़र इंटरफ़ेस (यूआई) से साफ़ तौर पर अलग किया गया है या नहीं.- नए
attach()
औरdetach()
तरीकों की मदद से ऐप्लिकेशन, यूज़र इंटरफ़ेस (यूआई) में फ़्रैगमेंट को फिर से अटैच या अलग कर सकता है. setCustomAnimations()
के नए ओवरलोड तरीके की मदद से, ऐनिमेशन के खास संसाधनों को सेट किया जा सकता है, ताकि वे ऐप्लिकेशन में आने/जाने के दौरान चल सकें. खास तौर पर, बैक स्टैक को पॉप करने के दौरान. मौजूदा तरीके में, बैक स्टैक को पॉप करने पर फ़्रैगमेंट के अलग-अलग व्यवहार को ध्यान में नहीं रखा जाता.
- नए
- ActivityInfo और ऐप्लिकेशन जानकारी में, स्क्रीन साइज़ की जानकारी
ActivityInfo
,configChanges
में बिट मास्क के तौर परCONFIG_SCREEN_SIZE
औरCONFIG_SMALLEST_SCREEN_SIZE
को जोड़ता है. बिट से पता चलता है कि कोई ऐक्टिविटी, स्क्रीन साइज़ और सबसे छोटे स्क्रीन साइज़ को खुद मैनेज कर सकती है या नहीं.ApplicationInfo
, ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल में मौजूद<supports-screens>
एट्रिब्यूट से मिलेlargestWidthLimitDp
,compatibleWidthLimitDp
, औरrequiresSmallestWidthDp
फ़ील्ड जोड़ता है.
- WindowManager से डिसप्ले का साइज़ पाने के लिए सहायक
- नए तरीके
getSize()
औरgetRectSize()
की मदद से, ऐप्लिकेशन को डिसप्ले का रॉ साइज़ मिलता है.
- नए तरीके
- नई सार्वजनिक "होलोग्राफ़िक" स्टाइल
- अब इस प्लैटफ़ॉर्म पर, टेक्स्ट, ऐक्शनबार विजेट, टैब वगैरह के लिए कई तरह के सार्वजनिक "होलोग्राफ़िक" स्टाइल उपलब्ध हैं. पूरी सूची
के लिए
R.style
पर जाएं.
- अब इस प्लैटफ़ॉर्म पर, टेक्स्ट, ऐक्शनबार विजेट, टैब वगैरह के लिए कई तरह के सार्वजनिक "होलोग्राफ़िक" स्टाइल उपलब्ध हैं. पूरी सूची
के लिए
LocalActivityManager
,ActivityGroup
, औरLocalActivityManager
अब काम नहीं करते- नए ऐप्लिकेशन को इन क्लास के बजाय फ़्रैगमेंट का इस्तेमाल करना चाहिए. इस प्लैटफ़ॉर्म के पुराने वर्शन पर काम जारी रखने के लिए, Android SDK में उपलब्ध v4 सपोर्ट लाइब्रेरी (कंपैटबिलिटी लाइब्रेरी) का इस्तेमाल किया जा सकता है. v4 सहायता लाइब्रेरी, Fragment API का एक ऐसा वर्शन उपलब्ध कराती है जो Android 1.6 (एपीआई लेवल 4) के साथ काम करता है.
- Android 3.0 (एपीआई लेवल 11) या उसके बाद के वर्शन के लिए बनाए जा रहे ऐप्लिकेशन के लिए, टैब आम तौर पर यूज़र इंटरफ़ेस (यूआई) में दिखाए जाते हैं. इसके लिए, नए
ActionBar.newTab()
और उससे जुड़े एपीआई का इस्तेमाल किया जाता है, ताकि टैब को ऐक्शन बार के एरिया में रखा जा सके.
मीडिया फ़्रेमवर्क
- प्लैटफ़ॉर्म की मीडिया कंपनी (
MediaStore
) का इस्तेमाल करने वाले ऐप्लिकेशन अब हटाए जा सकने वाले एसडी कार्ड से मीडिया डेटा को सीधे पढ़ सकते हैं. हालांकि, यह ज़रूरी है कि डिवाइस पर यह एसडी कार्ड काम करता हो. ऐप्लिकेशन, MTP API का इस्तेमाल करके, एसडी कार्ड की फ़ाइलों के साथ सीधे तौर पर इंटरैक्ट भी कर सकते हैं.
ग्राफ़िक्स
- Point और PointF में पार्सल की जा सकने वाली सुविधाएं
Point
औरPointF
क्लास में अबParcelable
इंटरफ़ेस और यूटिलिटी मेथडdescribeContents()
,readFromParcel()
, औरwriteToParcel()
शामिल हैं.
आईएमई फ़्रेमवर्क
- कार्रवाई बदलने वाली कुंजियों की मौजूदा स्थिति की
जानकारी पाने के लिए,
getModifiers()
का नया तरीका.
यूएसबी फ़्रेमवर्क
- डिवाइस के रॉ यूएसबी डिस्क्रिप्टर पाने के लिए,
getRawDescriptors()
का नया तरीका. इस तरीके का इस्तेमाल करके, ऐसे डिस्क्रिप्टर ऐक्सेस किए जा सकते हैं जो सीधे तौर पर, बेहतर लेवल के एपीआई के ज़रिए काम नहीं करते.
नेटवर्क
- नेटवर्क टाइप के लिए कॉन्स्टेंट
ConnectivityManager
, कॉन्सटेंटTYPE_ETHERNET
औरTYPE_BLUETOOTH
जोड़ता है.
टेलीफ़ोनी
- नया
NETWORK_TYPE_HSPAP
नेटवर्क टाइप कॉन्स्टेंट.
मुख्य सुविधाएं
- पार्स किए जा सकने वाले टूल
- नए इंटरफ़ेस
Parcelable.ClassLoaderCreator
की मदद से, ऐप्लिकेशन को वह ClassLoader मिलता है जिसमें ऑब्जेक्ट बनाया जा रहा है. ParcelFileDescriptor
ऑब्जेक्ट को मैनेज करने के लिए, नएadoptFd
,dup()
, औरfromFd()
.
- नए इंटरफ़ेस
- बाइंडर और IBinder
Binder
औरIBinder
मेंdumpAsync()
का नया तरीका, ऐप्लिकेशन को किसी तय फ़ाइल में डेटा डालने की अनुमति देता है. इससे यह पक्का होता है कि टारगेट असिंक्रोनस तरीके से लागू हो.- नए
IBinder
प्रोटोकॉल ट्रांज़ैक्शन कोडTWEET_TRANSACTION
की मदद से, ऐप्लिकेशन टारगेट ऑब्जेक्ट को ट्वीट भेज सकते हैं.
नए फ़ीचर कॉन्सटेंट
इस प्लैटफ़ॉर्म में हार्डवेयर की नई सुविधाएं जोड़ी गई हैं. इनके बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया जा सकता है. इससे बाहरी इकाइयों जैसे, Google Play को ज़रूरी हार्डवेयर और सॉफ़्टवेयर क्षमताओं के बारे में जानकारी दी जा सकती है. इनके साथ-साथ, सुविधा से जुड़ी अन्य कॉन्स्टेंट की जानकारी, <uses-feature>
मेनिफ़ेस्ट एलिमेंट में दी जाती है.
Google Play, ऐप्लिकेशन को उनके <uses-feature>
एट्रिब्यूट के आधार पर फ़िल्टर करता है. इससे यह पक्का किया जाता है कि वे सिर्फ़ उन डिवाइसों के लिए उपलब्ध हों जिन पर उनकी ज़रूरी शर्तें पूरी होती हैं.
- लैंडस्केप या पोर्ट्रेट मोड के लिए फ़ीचर कॉन्सटेंट की वैल्यू
Android 3.2 में नए फ़ीचर कॉन्सटेंट प्रस्तुत किए गए हैं जो ऐप्लिकेशन को यह निर्दिष्ट करने देते हैं कि उन्हें लैंडस्केप ओरिएंटेशन, पोर्ट्रेट ओरिएंटेशन या दोनों में प्रदर्शन की आवश्यकता है या नहीं. इन कॉन्स्टेंट का एलान करने का मतलब है कि ऐप्लिकेशन को ऐसे डिवाइस पर इंस्टॉल नहीं किया जाना चाहिए जो इनके साथ काम नहीं करता. इसके उलट, अगर एक या दोनों कॉन्स्टेंट का एलान नहीं किया गया है, तो इसका मतलब है कि ऐप्लिकेशन में उन ओरिएंटेशन के लिए प्राथमिकता नहीं है जिनका एलान नहीं किया गया है. साथ ही, हो सकता है कि ऐप्लिकेशन को ऐसे डिवाइस पर इंस्टॉल किया गया हो जो उन्हें ऑफ़र नहीं करता.
android.hardware.screen.landscape
— ऐप्लिकेशन को लैंडस्केप ओरिएंटेशन में दिखाना ज़रूरी है.android.hardware.screen.portrait
— ऐप्लिकेशन को वर्टिकल ओरिएंटेशन में दिखाना ज़रूरी है.
लैंडस्केप और पोर्ट्रेट ओरिएंटेशन, दोनों में ठीक से काम करने वाले ऐप्लिकेशन के लिए, आम तौर पर ओरिएंटेशन से जुड़ी ज़रूरी शर्तों के बारे में बताना ज़रूरी नहीं होता. इसके बजाय, मुख्य रूप से किसी एक ओरिएंटेशन के लिए डिज़ाइन किया गया ऐप्लिकेशन, किसी एक कॉन्स्टेंट का एलान कर सकता है. इससे यह पक्का किया जा सकता है कि वह उन डिवाइसों के लिए उपलब्ध न हो जो उस ओरिएंटेशन को उपलब्ध नहीं कराते. जैसे, टेलिविज़न के लिए डिज़ाइन किया गया ऐप्लिकेशन.
अगर मेनिफ़ेस्ट में किसी गतिविधि के लिए,
android:screenOrientation
एट्रिब्यूट का इस्तेमाल करके, यह एलान किया गया है कि वह किसी खास ओरिएंटेशन में चलेगी, तो इससे यह भी पता चलता है कि ऐप्लिकेशन को उस ओरिएंटेशन की ज़रूरत है. - सुविधा से जुड़े अन्य कॉन्स्टेंट
android.hardware.faketouch.multitouch.distinct
— ऐप्लिकेशन में दो या उससे ज़्यादा पॉइंट की अलग-अलग ट्रैकिंग के साथ, एम्युलेट किए गए म्यूलिटच इनपुट की सुविधा होनी चाहिए.android.hardware.faketouch.multitouch.jazzhand
— ऐप्लिकेशन में, पांच या उससे ज़्यादा पॉइंट की अलग-अलग ट्रैकिंग के साथ, नकली मल्टीटच इनपुट की सुविधा होनी चाहिए.
एपीआई के बीच अंतर की रिपोर्ट
Android 3.2 (एपीआई लेवल 13) में एपीआई से जुड़े सभी बदलावों के बारे में ज़्यादा जानने के लिए, एपीआई में अंतर की रिपोर्ट देखें.
एपीआई लेवल
Android 3.2 प्लैटफ़ॉर्म, फ़्रेमवर्क एपीआई का अपडेट किया गया वर्शन उपलब्ध कराता है. Android 3.2 API को एक पूर्णांक आइडेंटिफ़ायर — 13 — असाइन किया जाता है, जो सिस्टम में ही स्टोर होता है. इस आइडेंटिफ़ायर को "एपीआई लेवल" कहा जाता है. इससे सिस्टम को यह पता लगाने में मदद मिलती है कि कोई ऐप्लिकेशन, सिस्टम के साथ काम करता है या नहीं.
अपने ऐप्लिकेशन में Android 3.2 में लॉन्च किए गए एपीआई का इस्तेमाल करने के लिए, आपको ऐप्लिकेशन को Android 3.2 SDK टूल प्लैटफ़ॉर्म में दी गई Android लाइब्रेरी के हिसाब से कंपाइल करना होगा. अपनी ज़रूरतों के हिसाब से, आपको ऐप्लिकेशन के मेनिफ़ेस्ट में <uses-sdk>
एलिमेंट में android:minSdkVersion="13"
एट्रिब्यूट भी जोड़ना पड़ सकता है.
ज़्यादा जानकारी के लिए, एपीआई लेवल क्या है? लेख पढ़ें.