एपीआई लेवल: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
), Android 4.0 (ICE_CREAM_SANDWICH
) प्लैटफ़ॉर्म फ़ैमिली का एक बेहतर वर्शन है. इस रिलीज़ में, उपयोगकर्ताओं और डेवलपर के लिए नई सुविधाएं, एपीआई में बदलाव, और कई गड़बड़ियां ठीक की गई हैं.
डेवलपर के लिए, Android 4.0.3 प्लैटफ़ॉर्म, Android SDK टूल के लिए डाउनलोड किए जा सकने वाले कॉम्पोनेंट के तौर पर उपलब्ध है. डाउनलोड किए जा सकने वाले प्लैटफ़ॉर्म में, Android लाइब्रेरी और सिस्टम इमेज के साथ-साथ, इम्यूलेटर स्किन का एक सेट और अन्य चीज़ें शामिल होती हैं. Android 4.0.3 के लिए ऐप्लिकेशन डेवलप करने या टेस्ट करने के लिए, Android SDK मैनेजर का इस्तेमाल करके, अपने SDK टूल में प्लैटफ़ॉर्म डाउनलोड करें.
एपीआई की खास जानकारी
नीचे दिए गए सेक्शन में, Android 4.0.3 में नए एपीआई के बारे में तकनीकी जानकारी दी गई है.
Contacts Provider में Social stream API
सोशल स्ट्रीम के डेटा का इस्तेमाल करने वाले ऐप्लिकेशन, अब उस डेटा को उपयोगकर्ता के हर संपर्क के साथ सिंक कर सकते हैं. साथ ही, हर संपर्क के लिए फ़ोटो के साथ आइटम भी उपलब्ध करा सकते हैं. जैसे, स्टेटस अपडेट और चेक-इन.
किसी संपर्क की सोशल स्ट्रीम की जानकारी देने वाली डेटाबेस टेबल को, android.provider.ContactsContract.StreamItems से तय किया जाता है. इस टेबल का यूआरआई, ContactsContract.RawContacts
डायरेक्ट्री में नेस्ट होता है. हर सोशल स्ट्रीम टेबल में, स्ट्रीम के हर आइटम के मेटाडेटा के लिए कई कॉलम होते हैं. जैसे, सोर्स (अवतार) को दिखाने वाला आइकॉन, आइटम का लेबल, मुख्य टेक्स्ट कॉन्टेंट, आइटम के बारे में टिप्पणियां (जैसे, दूसरे लोगों के जवाब) वगैरह. किसी स्ट्रीम से जुड़ी फ़ोटो, किसी दूसरी टेबल में सेव की जाती हैं. इस टेबल के बारे में जानकारी, android.provider.ContactsContract.StreamItemPhotos में दी गई है. यह टेबल, android.provider.ContactsContract.StreamItems के यूआरआई की सब-डायरेक्ट्री के तौर पर उपलब्ध है.
ज़्यादा जानकारी के लिए, android.provider.ContactsContract.StreamItems और android.provider.ContactsContract.StreamItemPhotos देखें.
किसी संपर्क की सोशल स्ट्रीम के आइटम पढ़ने या उनमें बदलाव करने के लिए, ऐप्लिकेशन को अपनी मेनिफ़ेस्ट फ़ाइलों में <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
और/या <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
एट्रिब्यूट का एलान करके, उपयोगकर्ता से अनुमति का अनुरोध करना होगा.
कैलेंडर की सेवा देने वाली कंपनी
- Calendar
Provider में रंग वाली टेबल दिखाने के लिए, क्लास
CalendarContract.Colors
जोड़ता है. यह क्लास, किसी खाते के लिए उपलब्ध रंगों को ऐक्सेस करने के लिए फ़ील्ड उपलब्ध कराती है. रंगों का रेफ़रंस,
COLOR_KEY
से दिया जाता है. यह किसी खाते के नाम/टाइप के लिए यूनीक होना चाहिए. इन वैल्यू को सिर्फ़ सिंक अडैप्टर अपडेट कर सकता है.
- डेटा एक्सचेंज/सिंक करने की सुविधा के लिए,
ALLOWED_AVAILABILITY
और ALLOWED_ATTENDEE_TYPES
जोड़े गए.
- इससे, मीटिंग में हिस्सा लेने वाले लोगों के लिए
TYPE_RESOURCE
(जैसे, कॉन्फ़्रेंस रूम) और AVAILABILITY_TENTATIVE
के साथ-साथ इवेंट के लिए EVENT_COLOR_KEY
जोड़ता है.
CalendarContract.Colors
जोड़ता है. यह क्लास, किसी खाते के लिए उपलब्ध रंगों को ऐक्सेस करने के लिए फ़ील्ड उपलब्ध कराती है. रंगों का रेफ़रंस,
COLOR_KEY
से दिया जाता है. यह किसी खाते के नाम/टाइप के लिए यूनीक होना चाहिए. इन वैल्यू को सिर्फ़ सिंक अडैप्टर अपडेट कर सकता है.ALLOWED_AVAILABILITY
और ALLOWED_ATTENDEE_TYPES
जोड़े गए.TYPE_RESOURCE
(जैसे, कॉन्फ़्रेंस रूम) और AVAILABILITY_TENTATIVE
के साथ-साथ इवेंट के लिए EVENT_COLOR_KEY
जोड़ता है.होम स्क्रीन विजेट
Android 4.0 से, होम स्क्रीन विजेट में अब अपना पैडिंग शामिल नहीं होना चाहिए. इसके बजाय, सिस्टम अब मौजूदा स्क्रीन की विशेषताओं के आधार पर, हर विजेट के लिए अपने-आप पैडिंग जोड़ता है. इससे ग्रिड में विजेट को एक जैसा और एक ही तरह से दिखाया जा सकता है. होम स्क्रीन विजेट होस्ट करने वाले ऐप्लिकेशन की मदद करने के लिए, प्लैटफ़ॉर्म एक नया तरीका getDefaultPaddingForWidget()
उपलब्ध कराता है. ऐप्लिकेशन, सिस्टम से तय किए गए पैडिंग को पाने के लिए इस तरीके को कॉल कर सकते हैं. साथ ही, विजेट को ऐलोकेट करने के लिए सेल की संख्या का हिसाब लगाते समय, इस पैडिंग को ध्यान में रख सकते हैं.
स्पेलिंग की जांच करना
- स्पेलिंग चेकर की सेवाओं को ऐक्सेस करने वाले ऐप्लिकेशन के लिए,
cancel()
का नया तरीका, किसी सेशन में स्पेलिंग चेकर के सभी टास्क रद्द कर देता है. - सुझावों के लिए एक नया फ़्लैग,
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
, जोड़ा गया है. इससे, सुझावों की संभावना के आधार पर उन्हें अलग-अलग कैटगरी में बांटा जा सकता है. उदाहरण के लिए, अगर कोई डाला गया शब्द उपयोगकर्ता के शब्दकोश में मौजूद नहीं है, लेकिन उसके लिए संभावित सुझाव हैं, तो वर्तनी जांचने वाला टूल फ़्लैग सेट कर सकता है. इसके अलावा, अगर कोई डाला गया शब्द शब्दकोश में मौजूद नहीं है और उसके लिए ऐसे सुझाव हैं जो कम काम के हैं, तो वर्तनी जांचने वाला टूल फ़्लैग सेट नहीं कर सकता.स्पेल-चेकर से कनेक्ट किए गए ऐप्लिकेशन, सुझाव देने वाले अन्य एट्रिब्यूट के साथ-साथ
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
फ़्लैग का इस्तेमाल कर सकते हैं. साथ ही,getSuggestionsAttributes()
औरgetSuggestionsCount()
तरीकों का इस्तेमाल करके यह तय कर सकते हैं कि इनपुट किए गए शब्दों को टाइपो के तौर पर मार्क किया जाए या सुझाव दिए जाएं. - टेक्स्ट स्पैन के लिए नई
FLAG_AUTO_CORRECTION
स्टाइल से पता चलता है कि उपयोगकर्ता जिस शब्द/टेक्स्ट को टाइप/लिख रहा है उस पर अपने-आप सुधार करने की सुविधा लागू होने वाली है. अपने-आप सुधार होने की जानकारी देने के लिए, इस तरह के सुझाव को अलग तरह से रेंडर किया जाता है.
ब्लूटूथ
नए सार्वजनिक तरीके fetchUuidsWithSdp()
और getUuids()
की मदद से, ऐप्लिकेशन यह तय कर सकते हैं कि किसी रिमोट डिवाइस पर कौनसी सुविधाएं (यूयूआईडी) काम करती हैं. fetchUuidsWithSdp()
के मामले में, सिस्टम काम करने वाले यूयूआईडी पाने के लिए, रिमोट डिवाइस पर सेवा खोजता है. इसके बाद, नतीजे को ACTION_UUID
इंटेंट में ब्रॉडकास्ट करता है.
यूज़र इंटरफ़ेस (यूआई) टूलकिट
नए तरीके setUserVisibleHint()
और
getUserVisibleHint()
की मदद से, किसी फ़्रैगमेंट में यह जानकारी सेट की जा सकती है कि वह फ़िलहाल उपयोगकर्ता को दिख रहा है या नहीं. सिस्टम, उपयोगकर्ता को दिखने वाले फ़्रैगमेंट के लोडर के चलने तक, ऐसे फ़्रैगमेंट के लोड होने को रोक देता है जो उपयोगकर्ता को नहीं दिखते. डिफ़ॉल्ट रूप से, दिखने के संकेत की वैल्यू "सही" होती है.
ग्राफ़िक्स
SurfaceTexture
में नया तरीकाsetDefaultBufferSize(int, int)
, इमेज बफ़र का डिफ़ॉल्ट साइज़ सेट करता है. इस तरीके का इस्तेमाल,Canvas
(lockCanvas(Rect)
के ज़रिए) या OpenGL ES (EGLSurface के ज़रिए) की मदद से इमेज जनरेट करते समय, इमेज का साइज़ सेट करने के लिए किया जा सकता है.- GL_OES_EGL_image_external OpenGL ES एक्सटेंशन के एनम के लिए परिभाषाएं जोड़ता है —
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
, औरGL_TEXTURE_EXTERNAL_OES
.
सुलभता
RemoteViews
के क्लाइंट अबsetContentDescription()
तरीके का इस्तेमाल करके, बड़े किए गए लेआउट में किसी भी व्यू का कॉन्टेंट ब्यौरा सेट और पा सकते हैं.getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
, औरsetMaxScrollY()
तरीकों की मदद से, ऐप्लिकेशन किसीAccessibilityRecord
ऑब्जेक्ट के लिए ज़्यादा से ज़्यादा स्क्रोल ऑफ़सेट को ऐक्सेस और सेट कर सकते हैं.- टच-एक्सप्लोरेशन मोड चालू होने पर, एक नई सुरक्षित सेटिंग
ACCESSIBILITY_SPEAK_PASSWORD
से पता चलता है कि उपयोगकर्ता, हेडसेट का इस्तेमाल न करने पर भी, पासवर्ड फ़ील्ड में डाले गए टेक्स्ट को बोलकर सुनाने के लिए IME से अनुरोध करता है या नहीं. डिफ़ॉल्ट रूप से, पासवर्ड का टेक्स्ट तब तक नहीं बोला जाता, जब तक हेडसेट का इस्तेमाल नहीं किया जा रहा हो.
पाठ से वाक्
- नेटवर्क टीटीएस (टेक्स्ट को बोली में बदलने की सुविधा) की सहायता के लिए क्वेरी करने और उसे चालू करने का नया तरीका
getFeatures()
जोड़ा गया. - एक नई लिसनर क्लास,
UtteranceProgressListener
जोड़ता है. इंजन, बोली को टेक्स्ट में बदलने की प्रोसेस में हुई गड़बड़ियों की सूचना पाने के लिए, इसे रजिस्टर कर सकते हैं.
डेटाबेस
- नई
CrossProcessCursorWrapper
क्लास की मदद से, कॉन्टेंट की सेवा देने वाली कंपनियां, क्रॉस-प्रोसेस क्वेरी के लिए ज़्यादा असरदार तरीके से नतीजे दिखा सकती हैं. नई क्लास, कर्सर को रैप करने के लिए एक काम का बिल्डिंग ब्लॉक है. इन कर्सर को रिमोट प्रोसेस पर भेजा जाएगा. यह सामान्यCursor
ऑब्जेक्ट कोCrossProcessCursor
ऑब्जेक्ट में भी बदल सकता है.CrossProcessCursorWrapper
क्लास, परफ़ॉर्मेंस से जुड़ी सामान्य समस्याओं और गड़बड़ियों को ठीक करती है. ये समस्याएं, कॉन्टेंट प्रोवाइडर को लागू करते समय ऐप्लिकेशन में आती हैं. CursorWindow(java.lang.String)
कंस्ट्रक्टर अब इनपुट के तौर पर नाम की स्ट्रिंग लेता है. सिस्टम अब लोकल और रिमोट कर्सर विंडो के बीच अंतर नहीं करता. इसलिए,CursorWindow(boolean)
अब काम नहीं करता.
मूड
डिवाइस पर आम तौर पर इस्तेमाल होने वाले ऐप्लिकेशन को टारगेट करने के लिए, नई कैटगरी जोड़ता है. जैसे, CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
, CATEGORY_APP_MAPS
वगैरह.
कैमरा
MediaMetadataRetriever
एक नया कॉन्स्टैंट जोड़ता हैMETADATA_KEY_LOCATION
, ताकि ऐप्लिकेशन किसी इमेज या वीडियो की जगह की जानकारी ऐक्सेस कर सकें.CamcorderProfile
, QVGA (320x240) रिज़ॉल्यूशन वाली प्रोफ़ाइलें जोड़ता है. क्वालिटी लेवल कोQUALITY_QVGA
.andQUALITY_TIME_LAPSE_QVGA
कॉन्स्टेंट से दिखाया जाता है.setVideoStabilization()
,getVideoStabilization()
, औरisVideoStabilizationSupported()
के नए तरीकों की मदद से,Camera
के लिए वीडियो स्टेबलाइज़ेशन की सुविधा को देखा और मैनेज किया जा सकता है.
अनुमतियां
ये नई अनुमतियां हैं:
- android.Manifest.permission#READ_SOCIAL_STREAM और android.Manifest.permission#WRITE_SOCIAL_STREAM: सिंक करने वाले एडेप्टर को, शेयर किए गए कॉन्टैक्ट प्रोवाइडर में मौजूद किसी संपर्क के सोशल स्ट्रीम डेटा को पढ़ने और उसमें डेटा लिखने की अनुमति दें.
Android 4.0.3 (एपीआई लेवल 15) में एपीआई से जुड़े सभी बदलावों के बारे में ज़्यादा जानने के लिए, एपीआई के बीच अंतर की रिपोर्ट देखें.
एपीआई लेवल
Android 4.0.3 एपीआई को एक पूर्णांक आइडेंटिफ़ायर—15—असाइन किया गया है. इसे सिस्टम में ही सेव किया जाता है. इस आइडेंटिफ़ायर को "एपीआई लेवल" कहा जाता है. इससे सिस्टम को यह पता लगाने में मदद मिलती है कि कोई ऐप्लिकेशन, सिस्टम के साथ काम करता है या नहीं.
अपने ऐप्लिकेशन में Android 4.0.3 में लॉन्च किए गए एपीआई का इस्तेमाल करने के लिए, आपको ऐप्लिकेशन को ऐसे Android प्लैटफ़ॉर्म के लिए कॉम्पाइल करना होगा जो एपीआई लेवल 15 या उससे बाद के वर्शन के साथ काम करता हो. अपनी ज़रूरतों के हिसाब से, आपको <uses-sdk>
एलिमेंट में android:minSdkVersion="15"
एट्रिब्यूट भी जोड़ना पड़ सकता है.
ज़्यादा जानकारी के लिए, एपीआई लेवल वाला दस्तावेज़ देखें.