Android 2.3 के लिए API

एपीआई लेवल: 9

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

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

नीचे दिए गए सेक्शन से इस बात की खास जानकारी मिलती है कि डेवलपर के लिए नया क्या है 2.3 में किया गया है, जिसमें नई सुविधाएं और फ़्रेमवर्क में बदलाव शामिल हैं पिछले वर्शन के बाद से एपीआई.

SIP-आधारित VoIP

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

SIP API, android.net.sip में उपलब्ध है पैकेज. मुख्य क्लास SipManager है. ऐप्लिकेशन इसका इस्तेमाल, SIP प्रोफ़ाइलों को सेट अप और मैनेज करने के लिए करते हैं. इसके बाद, ऑडियो कॉल शुरू करते हैं और ऑडियो कॉल पाते हैं. ऑडियो कॉल शुरू हो जाने के बाद, ऐप्लिकेशन कॉल को म्यूट कर सकते हैं, स्पीकर मोड चालू करें, DTMF टोन भेजें, और अन्य काम करें. सामान्य एसआईपी कनेक्शन बनाने के लिए, ऐप्लिकेशन भी SipManager का इस्तेमाल कर सकते हैं.

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

SIP API का इस्तेमाल करने के लिए, ऐप्लिकेशन को अपनी मेनिफ़ेस्ट फ़ाइलों में <uses-permission android:name="android.permission.INTERNET"> और <uses-permission android:name="android.permission.USE_SIP"> का एलान करके, उपयोगकर्ता से अनुमति का अनुरोध करना होगा.

इसके अलावा, डेवलपर Google Play पर फ़िल्टर करने का अनुरोध कर सकते हैं, ताकि उनके ऐप्लिकेशन उन उपयोगकर्ताओं को न दिखें जिनके डिवाइसों में प्लैटफ़ॉर्म का एसआईपी स्टैक और सेवाएं शामिल नहीं हैं. फ़िल्टर करने का अनुरोध करने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में <uses-feature android:name="android.software.sip" android:required="true"> और <uses-feature android:name="android.software.sip.voip"> जोड़ें.

ज़्यादा जानकारी के लिए, SIP डेवलपर गाइड पढ़ें.

नियर फ़ील्ड कम्यूनिकेशंस (एनएफ़सी)

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

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

एनएफ़सी एपीआई, android.nfc पैकेज में उपलब्ध है. मुख्य क्लास ये हैं:

  • NfcAdapter, जो डिवाइस के एनएफ़सी हार्डवेयर के बारे में बताता है.
  • NdefMessage, जो एक NDEF डेटा मैसेज दिखाता है, वह मानक प्रारूप, जिसमें "रिकॉर्ड" ले जाने वाले डेटा को इनके बीच ट्रांसमिट किया जाता है डिवाइस और टैग. ऐप्लिकेशन को ACTION_TAG_DISCOVERED इंटेंट से ये मैसेज मिल सकते हैं.
  • NdefRecord की डिलीवरी NdefMessage में बताया गया है कि शेयर किए जा रहे डेटा का टाइप क्या है और में डेटा ही होता है.

एनएफ़सी कम्यूनिकेशन, डिवाइस के हार्डवेयर में मौजूद वायरलेस टेक्नोलॉजी पर निर्भर करता है. इसलिए, किसी डिवाइस पर प्लैटफ़ॉर्म की एनएफ़सी सुविधाओं के काम करने की सुविधा, डिवाइस बनाने वाली कंपनियों तय करती हैं. वर्तमान डिवाइस पर NFC समर्थन निर्धारित करने के लिए, ऐप्लिकेशन इस पर isEnabled() को कॉल कर सकते हैं NfcAdapter क्वेरी करें. एनएफ़सी एपीआई हमेशा मौजूद होता है, हालांकि, हार्डवेयर के साथ काम करने की सुविधा पर ध्यान दिए बिना.

NFC API का उपयोग करने के लिए, ऐप्लिकेशन को इसके अनुसार उपयोगकर्ता से अनुमति का अनुरोध करना होगा अपनी मेनिफ़ेस्ट फ़ाइलों में <uses-permission android:name="android.permission.NFC"> का एलान करने से जुड़ी जानकारी.

इसके अलावा, डेवलपर Google Play पर फ़िल्टर करने का अनुरोध कर सकते हैं. जैसे: उनके ऐप्लिकेशन, ऐसे उपयोगकर्ताओं को नहीं खोजे जा सकते जिनके डिवाइस एनएफ़सी. फ़िल्टर करने का अनुरोध करने के लिए, ऐप्लिकेशन के मेनिफ़ेस्ट में <uses-feature android:name="android.hardware.nfc" android:required="true"> जोड़ें.

एनएफ़सी एपीआई का इस्तेमाल करने वाले सैंपल ऐप्लिकेशन को देखने के लिए, NFCDemo देखें.

जाइरोस्कोप और अन्य सेंसर

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

ध्यान दें कि किसी डिवाइस में मौजूद हार्डवेयर सेंसर का खास सेट और डिवाइस बनाने वाली कंपनी के हिसाब से अलग-अलग होती है.

डेवलपर, Google Play पर फ़िल्टर करने का अनुरोध कर सकते हैं, ताकि उनके ऐप्लिकेशन उन उपयोगकर्ताओं को न दिखें जिनके डिवाइसों में घाइरोस्कोप सेंसर नहीं है. ऐसा करने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> जोड़ें.

एपीआई की जानकारी के लिए, Sensor पर जाएं.

एक से ज़्यादा कैमरे काम करते हैं

ऐप्लिकेशन अब किसी डिवाइस में उपलब्ध किसी भी कैमरे का इस्तेमाल कर सकते हैं, का इस्तेमाल किया जा सकता है. Camera की मदद से, ऐप्लिकेशन यह क्वेरी कर सकते हैं कि डिवाइस में कितने कैमरे हैं और हर कैमरे की खास विशेषताएं क्या हैं.

  • नई Camera.CameraInfo क्लास में पोज़िशनल एट्रिब्यूट (ओरिएंटेशन, फ़्रंट या बैक फ़ेस)
  • Camera क्लास में मौजूद नए getNumberOfCameras() और getCameraInfo() तरीके, ऐप्लिकेशन को उपलब्ध कैमरों के बारे में क्वेरी करने और ज़रूरत के हिसाब से कैमरा खोलने की सुविधा देते हैं.
  • get() का नया तरीका इस्तेमाल करने पर, ऐप्लिकेशन किसी विशिष्ट कैमरे के लिए CamcorderProfile पुनर्प्राप्त करते हैं.
  • नए getJpegEncodingQualityParameter() की मदद से, ऐप्लिकेशन किसी खास कैमरे के लिए, स्टिल इमेज कैप्चर करने की क्वालिटी का लेवल पा सकते हैं.

सामने वाले कैमरे को ऐक्सेस करने के लिए सैंपल कोड देखने के लिए, CameraPreview.java देखें को देखने के लिए, ApiDemos सैंपल ऐप्लिकेशन का इस्तेमाल करें.

Camera API से यह जानकारी भी मिलती है:

  • कैमरों के लिए नए पैरामीटर, जिनमें फ़ोकस की दूरी, फ़ोकस मोड, और झलक के लिए फ़्रेम प्रति सेकंड की ज़्यादा से ज़्यादा/कम से कम वैल्यू शामिल है. कैमरे के पैरामीटर पाने के लिए नए getFocusDistances(), getPreviewFpsRange(), और getSupportedPreviewFpsRange(). साथ ही, फ़्रेमरेट की झलक सेट करने के लिए setPreviewFpsRange().

मिक्स किए जा सकने वाले ऑडियो इफ़ेक्ट

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

  • नया android.media.audiofx पैकेज, ऑडियो इफ़ेक्ट ऐक्सेस करने के लिए एपीआई उपलब्ध कराता है.
  • नया AudioEffect, Android ऑडियो फ़्रेमवर्क से मिलने वाले ऑडियो इफ़ेक्ट को कंट्रोल करने के लिए, बेस क्लास है.
  • नया ऑडियो सेशन आईडी, जिसकी मदद से ऐप्लिकेशन में ऑडियो का सेट जोड़ा जा सकता है AudioTrack या MediaPlayer के इंस्टेंस वाले इफ़ेक्ट.
  • नया AudioTrack क्लास कन्स्ट्रक्टर, जो किसी खास सेशन आईडी के साथ AudioTrack बनाने की सुविधा देता है. attachAuxEffect(), getAudioSessionId(), और setAuxEffectSendLevel() के लिए नए तरीकों का इस्तेमाल किया गया है.
  • attachAuxEffect(), getAudioSessionId(), setAudioSessionId(int), और setAuxEffectSendLevel() के लिए नए तरीकों और काम करने वाले टाइप.

ऑडियो इफ़ेक्ट के सैंपल कोड को देखने के लिए, ApiDemos सैंपल ऐप्लिकेशन में AudioFxDemo.java देखें.

मीडिया फ़्रेमवर्क यह भी जोड़ता है:

  • JPEG फ़ाइलों के लिए EXIF मेटाडेटा में ऊंचाई टैग के लिए नई सुविधा. नया तरीका getAltitude() तरीका, EXIF ऊंचाई टैग की वैल्यू पाने के लिए.
  • setOrientationHint() के नए तरीके से, ऐप्लिकेशन को वीडियो कैप्चर करने के दौरान, MediaRecorder को ओरिएंटेशन के बारे में बताने में मदद मिलती है.

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

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

  • ऐप्लिकेशन, getSystemService(String) को कॉल करके और DOWNLOAD_SERVICE को पास करके, DownloadManager क्लास का इंस्टेंस पा सकते हैं. इस एपीआई के ज़रिए डाउनलोड का अनुरोध करने वाले ऐप्लिकेशन को ACTION_NOTIFICATION_CLICKED के लिए ब्रॉडकास्ट रिसीवर रजिस्टर करना चाहिए. इससे, उपयोगकर्ता के किसी सूचना में या डाउनलोड के यूज़र इंटरफ़ेस (यूआई) से, चल रहे डाउनलोड पर क्लिक करने पर, उसे सही तरीके से मैनेज किया जा सकता है.
  • DownloadManager.Request क्लास की मदद से, ऐप्लिकेशन में नए डाउनलोड का अनुरोध करने के लिए ज़रूरी सारी जानकारी दी जा सकती है. जैसे, अनुरोध यूआरआई और डाउनलोड डेस्टिनेशन. अनुरोध यूआरआई ही एक ऐसा पैरामीटर है जो ज़रूरी है. ध्यान दें कि डाउनलोड करने के लिए डिफ़ॉल्ट तौर पर, शेयर किया गया वॉल्यूम चुना जाता है. अगर सिस्टम को इस्तेमाल के लिए जगह चाहिए, तो वह आपकी फ़ाइल मिटा सकता है. इसके लिए डाउनलोड का लगातार स्टोरेज, बाहरी पर डाउनलोड करने का डेस्टिनेशन तय करें स्टोरेज (setDestinationUri(Uri) देखें).
  • DownloadManager.Query क्लास ऐसे तरीके उपलब्ध कराती है जिनसे सक्रिय डाउनलोड के लिए कोई ऐप्लिकेशन क्वेरी और उन्हें फ़िल्टर करें.

StrictMode

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

  • StrictMode मुख्य क्लास है और यह सिस्टम और वीएम के साथ मुख्य इंटिग्रेशन पॉइंट है. यह क्लास, इंस्टेंस पर लागू होने वाली थ्रेड और VM की नीतियों को मैनेज करने के लिए, आसान तरीके उपलब्ध कराती है.
  • StrictMode.ThreadPolicy और StrictMode.VmPolicy के पास वे नीतियां होती हैं जिन्हें आपने तय किया है और जिन पर लागू किया है थ्रेड और VM इंस्टेंस.

अपने ऐप्लिकेशन को ऑप्टिमाइज़ करने के लिए, StrictMode का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, android.os.StrictMode पर क्लास का दस्तावेज़ और सैंपल कोड देखें.

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

  • ओवरस्क्रोल के लिए सहायता
    • व्यू और विजेट में ओवरस्क्रोल की सुविधा के लिए नई सुविधा. दृश्य में, ऐप्लिकेशन ये काम कर सकते हैं दिए गए व्यू के लिए ओवरस्क्रोल चालू/बंद करें, ओवरस्कोल मोड सेट करें, ओवरस्क्रोल की दूरी तय कर सकते हैं और ओवरस्क्रोलिंग के नतीजों को हैंडल कर सकते हैं.
    • विजेट में, ऐप्लिकेशन ओवरस्क्रोल की विशेषताओं को कंट्रोल कर सकते हैं, जैसे कि ऐनिमेशन, स्प्रिंगबैक, और ओवरस्क्रोल की दूरी. ज़्यादा जानकारी के लिए, android.view.View और android.widget.OverScroller देखें.
    • ViewConfiguration में getScaledOverflingDistance() और getScaledOverscrollDistance() तरीके भी मिलते हैं.
    • नए overScrollMode, overScrollFooter, और <ListView> एलिमेंट के लिए overScrollHeader एट्रिब्यूट, ओवरस्क्रोल व्यवहार को कंट्रोल करने के लिए.
  • टच फ़िल्टर करने की सुविधा के लिए सहायता
    • टच फ़िल्टर करने की नई सुविधा, जिसकी मदद से ऐप्लिकेशन, संवेदनशील फ़ंक्शन का ऐक्सेस देने वाले व्यू की सुरक्षा को बेहतर बना सकता है. उदाहरण के लिए, टच फ़िल्टरिंग का इस्तेमाल करके, उपयोगकर्ता की कार्रवाइयों की सुरक्षा की जा सकती है. जैसे, अनुमति का अनुरोध स्वीकार करना, खरीदारी करना या किसी विज्ञापन पर क्लिक करना. ज़्यादा जानकारी के लिए, क्लास का दस्तावेज़ देखें लेख पढ़ें.
    • व्यू एलिमेंट के लिए नया filterTouchesWhenObscured एट्रिब्यूट, जो यह बताता है कि जब व्यू की विंडो अस्पष्ट होती है, तो कोई अन्य विंडो दिखाई दे. "true" पर सेट करने पर, व्यू ये काम नहीं करेगा स्क्रीन के ऊपर टोस्ट, डायलॉग या कोई दूसरी विंडो दिखने पर, टच रिसीव किया जा सकता है में देख सकता है. सुरक्षा से जुड़ी जानकारी देखें दस्तावेज़ देखें.

    टच फ़िल्टरिंग के लिए सैंपल कोड देखने के लिए, यहां देखें SecureView.java को देखने के लिए, ApiDemos सैंपल ऐप्लिकेशन का इस्तेमाल करें.

  • इवेंट मैनेजमेंट की बेहतर सुविधा
    • इनपुट इवेंट के लिए नई बेस क्लास, InputEvent. क्लास ऐसे तरीके उपलब्ध कराता है जिनसे ऐप्लिकेशन, इवेंट का मतलब तय कर सकते हैं, जैसे जिस इनपुट डिवाइस से इवेंट शुरू हुआ था, उसके लिए क्वेरी करके. KeyEvent और MotionEvent, InputEvent के सबक्लास हैं.
    • इनपुट डिवाइसों के लिए नई बेस क्लास, InputDevice. कॉन्टेंट बनाने क्लास में किसी खास इनपुट डिवाइस की क्षमताओं के बारे में जानकारी सेव होती है और ऐसी विधियां उपलब्ध कराता है जो ऐप्लिकेशन को यह निर्धारित करने देती हैं कि किसी इनपुट डिवाइस
  • बेहतर मोशन इवेंट
    • "पॉइंटर आईडी" को शामिल करने के लिए, MotionEvent एपीआई का इस्तेमाल किया जाता है जानकारी, जिसकी सहायता से ऐप्लिकेशन व्यक्तिगत उंगलियों से ट्रैक कर सकते हैं ऊपर और नीचे ले जाएं. क्लास कई तरीके जोड़ती है, जिनकी मदद से ऐप्लिकेशन मोशन इवेंट के साथ कुशलता से काम करें.
    • इनपुट सिस्टम में अब नए पॉइंटर आईडी की जानकारी के साथ मोशन इवेंट जनरेट करने का लॉजिक है. नए पॉइंटर के बंद होने पर, आइडेंटिफ़ायर को सिंथेसाइज़ किया जाता है. कॉन्टेंट बनाने सिस्टम किसी मोशन इवेंट के दौरान कई पॉइंटर आईडी को अलग-अलग ट्रैक करता है और दूर से आकलन करके, पॉइंटर की निरंतरता को पक्का करता है पॉइंटर के अंतिम और अगले सेट के बीच सेट कर सकते हैं.
  • टेक्स्ट चुनने के कंट्रोल
    • setComposingRegion का नया तरीका इस्तेमाल करके, ऐप्लिकेशन मौजूदा स्टाइल को बनाए रखते हुए, टेक्स्ट लिखने के क्षेत्र के तौर पर. getSelectedText वाला तरीका, चुने गए टेक्स्ट को ऐप्लिकेशन में दिखाता है. ये तरीके BaseInputConnection, InputConnection, और InputConnectionWrapper में उपलब्ध हैं.
    • <TextView> के लिए नए textSelectHandle, textSelectHandleLeft, textSelectHandleRight, और textSelectHandleWindowStyle एट्रिब्यूट, जिनका इस्तेमाल ड्रॉ किए जा सकने वाले आइटम का रेफ़रंस देने के लिए किया जाएगा. इन आइटम का इस्तेमाल, टेक्स्ट चुनने के लिए ऐंकर और उस विंडो के स्टाइल को दिखाने के लिए किया जाएगा जिसमें ये आइटम मौजूद हैं.
  • गतिविधि कंट्रोल
  • सूचना के टेक्स्ट और आइकॉन के स्टाइल
  • ज़्यादा बड़ी स्क्रीन

    यह प्लैटफ़ॉर्म अब बहुत बड़ी स्क्रीन के साइज़ के साथ काम करता है. जैसे, टैबलेट डिवाइसों पर मिलने वाली स्क्रीन. डेवलपर यह बता सकते हैं कि उनके ऐप्लिकेशन इसे इस तरह डिज़ाइन किया गया है कि बड़ी स्क्रीन वाले साइज़ में काम किया जा सके. इसके लिए, मेनिफ़ेस्ट में <supports screens ... android:xlargeScreens="true"> एलिमेंट जोड़ना होगा फ़ाइलें. ऐप्लिकेशन, xlarge नाम के नए रिसॉर्स क्वालीफ़ायर का इस्तेमाल करके, ऐसे रिसॉर्स को टैग कर सकते हैं जो खास तौर पर बहुत बड़ी स्क्रीन के लिए होते हैं. इसके लिए अतिरिक्त बड़े और अन्य स्क्रीन साइज़ों को सपोर्ट करने के तरीके के बारे में जानने के लिए, एक से ज़्यादा डिवाइसों के साथ काम करना स्क्रीन.

    ग्राफ़िक्स

    • android.opengl.GLES20 क्लास में, बाकी बचे OpenGL ES 2.0 मेथड glDrawElements() और glVertexAttribPointer() जोड़ता है.
    • YV12 पिक्सल फ़ॉर्मैट के लिए सहायता जोड़ी गई है. यह एक प्लैनर 4:2:0 YCrCb फ़ॉर्मैट है.

    सामग्री देने वाले

    • अलार्म सेट करने या मैनेज करने के लिए, AlarmClock प्रोवाइडर की नई क्लास. प्रोवाइडर में ACTION_SET_ALARM इंटेंट ऐक्शन और अन्य चीज़ें होती हैं. इनका इस्तेमाल, अलार्म घड़ी वाले ऐप्लिकेशन में नया अलार्म सेट करने के लिए, ऐक्टिविटी शुरू करने के लिए किया जा सकता है. जिन ऐप्लिकेशन को SET_ALARM इंटेंट पाना है उन्हें ऐसी गतिविधि बनानी चाहिए जिसके लिए SET_ALARM अनुमति की ज़रूरत हो. वे ऐप्लिकेशन जो नया खाता बनाना चाहते हैं अलार्म में Context.startActivity() का इस्तेमाल करना चाहिए, ताकि उपयोगकर्ता के पास किस अलार्म क्लॉक ऐप्लिकेशन का उपयोग करना है.
    • MediaStore में PLAY_FROM_SEARCH नाम की एक नई इंटेंट ऐक्शन की सुविधा है. इसकी मदद से, ऐप्लिकेशन संगीत मीडिया खोज सकता है और नतीजों में दिखने वाले कॉन्टेंट को अपने-आप चला सकता है. उदाहरण के लिए, संगीत सुनने के लिए, आवाज़ पहचानने की सुविधा से दिए गए निर्देश के नतीजे के तौर पर, कोई ऐप्लिकेशन इस इंटेंट को ट्रिगर कर सकता है.
    • MediaStore एक नया MEDIA_IGNORE_FILENAME फ़्लैग भी जोड़ता है. इससे मीडिया स्कैनर को, उस डायरेक्ट्री और उसकी सबडायरेक्ट्री में मौजूद मीडिया को अनदेखा करने के लिए कहा जाता है. डेवलपर इस सुविधा का इस्तेमाल करके, गैलरी में ग्राफ़िक दिखने से रोक सकते हैं. साथ ही, ऐप्लिकेशन की आवाज़ों और संगीत को Music ऐप्लिकेशन में दिखने से भी रोक सकते हैं.
    • Settings सेवा देने वाली कंपनी, ऐक्टिविटी से जुड़ी नई कार्रवाइयां जोड़ती है APPLICATION_DETAILS_SETTINGS और MANAGE_ALL_APPLICATIONS_SETTINGS का इस्तेमाल करके, ऐप्लिकेशन में जानकारी देखने की सुविधा मिलती है स्क्रीन या ऐप्लिकेशन मैनेज करें स्क्रीन दिखाएं.
    • ContactsContract सेवा देने वाली कंपनी, ContactsContract.CommonDataKinds.SipAddress डेटा टाइप जोड़ती है, ताकि किसी संपर्क के एसआईपी (इंटरनेट टेलीफ़ोन) पते को सेव किया जा सके.

    जगह की जानकारी

    • LocationManager अब ऐप्लिकेशन के उन अनुरोधों को ट्रैक करता है जिनकी वजह से WorkSource के मुताबिक, वेक लॉक या वाई-फ़ाई लॉक होते हैं. WorkSource, सिस्टम की मैनेज की जाने वाली क्लास है, जो ऐप्लिकेशन की पहचान करती है.

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

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

    डिवाइस का स्टोरेज

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

    पैकेज मैनेजर

    • हार्डवेयर और सॉफ़्टवेयर की सुविधाओं के बारे में बताने के लिए नए कॉन्स्टेंट. सूची देखने के लिए, यहां दिए गए नई सुविधा के कॉन्स्टेंट सेक्शन पर जाएं.
    • PackageInfo नए firstInstallTime और lastUpdateTime फ़ील्ड जोड़ता है, जो पैकेज इंस्टॉलेशन और पिछला अपडेट.
    • उस जानकारी को हासिल करने के लिए, getProviderInfo() का नया तरीका जिसके बारे में पहले से पता है कॉन्टेंट देने वाले की एक खास क्लास है.

    टेलीफ़ोनी

    • TelephonyManager, CDMA EVDO Rev B नेटवर्क टाइप की जानकारी देने के लिए, कॉन्स्टेंट NETWORK_TYPE_EVDO_B जोड़ता है.
    • नया getPsc() तरीका, UMTS नेटवर्क पर सेवा देने वाली सेल का प्राइमरी स्क्रैम्बलिंग कोड दिखाता है.

    गतिविधि की लाइफ़साइकल और विंडो का नेटिव ऐक्सेस

    Android 2.3, नेटिव कोड का इस्तेमाल करने वाले ऐप्लिकेशन के लिए एपीआई का एक बड़ा सेट उपलब्ध कराता है. ऐसे ऐप्लिकेशन के लिए फ़्रेमवर्क में ये क्लास शामिल हैं:

    • NativeActivity एक नई तरह की ऐक्टिविटी क्लास है, जिसकी लाइफ़साइकल कॉलबैक को सीधे नेटिव कोड में लागू किया जाता है. A NativeActivity और उसका नेटिव कोड, अन्य ऐक्टिविटी की तरह ही सिस्टम में चलता है. खास तौर पर, ये Android ऐप्लिकेशन की सिस्टम प्रोसेस में चलते हैं और ऐप्लिकेशन के मुख्य यूज़र इंटरफ़ेस (यूआई) थ्रेड पर काम करते हैं. साथ ही, उन्हें अन्य ऐक्टिविटी की तरह ही लाइफ़साइकल कॉलबैक मिलते हैं.
    • InputQueue का नया क्लास और कॉलबैक इंटरफ़ेस, नेटिव की सुविधा देता है इवेंट की सूची बनाने की सुविधा को मैनेज करें.
    • SurfaceHolder.Callback2 के नए इंटरफ़ेस में, नेटिव कोड का इस्तेमाल करने की सुविधा मिलती है SurfaceHolder मैनेज करें.
    • Window में takeInputQueue और takeSurface() के नए तरीकों से, नेटिव कोड को मैनेज करने की सुविधा मिलती है इवेंट और प्लैटफ़ॉर्म.

    नेटिव कोड के साथ काम करने या NDK डाउनलोड करने के बारे में पूरी जानकारी के लिए, Android NDK पेज देखें.

    डाल्विक रनटाइम

    नए मेनिफ़ेस्ट एलिमेंट और एट्रिब्यूट

    • <supports-screens> एलिमेंट के लिए नया xlargeScreens एट्रिब्यूट, जिससे यह पता चलता है कि ऐप्लिकेशन, बहुत बड़ी स्क्रीन वाले डिवाइसों पर काम करता है या नहीं. विवरण के लिए, एक से अधिक का समर्थन करना स्क्रीन.
    • इसकी android:screenOrientation विशेषता के लिए नए मान <activity> एलिमेंट:
      • "reverseLandscape" — गतिविधि के लिए ज़रूरी है कि स्क्रीन लैंडस्केप ओरिएंटेशन में, सामान्य से उलट दिशा में किया गया लैंडस्केप.
      • "reversePortrait" — गतिविधि के लिए ज़रूरी है कि स्क्रीन पोर्ट्रेट ओरिएंटेशन में, जिसे सामान्य से उलट दिशा में घुमाया गया है पोर्ट्रेट.
      • "sensorLandscape" — गतिविधि के लिए ज़रूरी है कि स्क्रीन की ओरिएंटेशन लैंडस्केप में सेट की जा सकती है, लेकिन सेंसर की मदद से स्क्रीन की दिशा में हो.
      • "sensorPortrait" — गतिविधि के लिए ज़रूरी है कि स्क्रीन पोर्ट्रेट ओरिएंटेशन में है, लेकिन सेंसर का इस्तेमाल करके उसकी दिशा बदल सकते हैं स्क्रीन हो रही है.
      • "fullSensor" — झुकाव किसी फ़िज़िकल चीज़ से तय होता है अभिविन् यास सेंसर: उपयोगकर्ता जिस तरह से मूव करता है उसके आधार पर डिस्प्ले घूमेगा डिवाइस. इससे, चारों दिशाओं में डिवाइस को घुमाया जा सकता है. भले ही, डिवाइस आम तौर पर ऐसा न करता हो. उदाहरण के लिए, कुछ डिवाइसों पर आम तौर पर 180 डिग्री के घुमाव का इस्तेमाल नहीं किया जाता.

    नई अनुमतियां

    • com.android.permission.SET_ALARM — इससे ऐप्लिकेशन को उपयोगकर्ता के लिए अलार्म सेट करने के लिए, इंटेंट ब्रॉडकास्ट करने की अनुमति मिलती है. SET_ALARM इंटेंट ऐक्शन को मैनेज करने वाली गतिविधि के लिए, इस अनुमति की ज़रूरत होती है.
    • android.permission.USE_SIP — ऐप्लिकेशन को इंटरनेट कॉल करने या पाने के लिए, SIP API का इस्तेमाल करने की अनुमति देता है.
    • android.permission.NFC — इससे ऐप्लिकेशन को एनएफ़सी टैग पढ़ने के लिए NFC API.

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

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

    • android.hardware.audio.low_latency — ऐप्लिकेशन, डिवाइस पर कम इंतज़ार वाली ऑडियो पाइपलाइन का इस्तेमाल करता है. साथ ही, यह आवाज़ के इनपुट या आउटपुट में होने वाली देरी या लैग के प्रति संवेदनशील होता है.
    • android.hardware.camera.front — ऐप्लिकेशन में सामने वाला हिस्सा इस्तेमाल किया जाता है कैमरा काम करता है.
    • android.hardware.nfc — ऐप्लिकेशन, डिवाइस में एनएफ़सी रेडियो की सुविधाओं का इस्तेमाल करता है.
    • android.hardware.sensor.barometer — ऐप्लिकेशन, डिवाइस के बैरोमीटर.
    • android.hardware.sensor.gyroscope — ऐप्लिकेशन, डिवाइस के जाइरोस्कोप सेंसर.
    • android.software.sip — ऐप्लिकेशन, डिवाइस पर SIP API का इस्तेमाल करता है.
    • android.software.sip.voip — ऐप्लिकेशन, डिवाइस पर SIP पर आधारित VoIP सेवा का इस्तेमाल करता है.
    • android.hardware.touchscreen.multitouch.jazzhand — यह ऐप्लिकेशन, डिवाइस की स्क्रीन पर बेहतर मल्टीपॉइंट मल्टीटच की सुविधाओं का इस्तेमाल करता है. इससे, पांच या उससे ज़्यादा पॉइंट को पूरी तरह से स्वतंत्र रूप से ट्रैक किया जा सकता है.

    सुविधाओं का एलान करने और उन्हें फ़िल्टर करने के लिए इस्तेमाल करने के तरीके के बारे में पूरी जानकारी के लिए, <uses-feature> के दस्तावेज़ देखें.

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

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

    एपीआई लेवल

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

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

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