Android 4.2 के साथ काम करने की जानकारी

दूसरा बदलाव
पिछले अपडेट की तारीख: 17 फ़रवरी, 2013

कॉपीराइट © 2012, Google Inc. सभी अधिकार सुरक्षित हैं.
[email protected]

विषय सूची

1. परिचय
2. संसाधन
3. सॉफ़्टवेयर
3.1. मैनेज किए जा रहे एपीआई के साथ काम करने की सुविधा
3.2. Soft API Compatibility
3.3. नेटिव एपीआई के साथ काम करना
3.4. वेब पर काम करना
3.5. एपीआई के काम करने के तरीके से जुड़ी शर्तें
3.6. एपीआई नेमस्पेस
3.7. वर्चुअल मशीन के साथ काम करने की सुविधा
3.8. यूज़र इंटरफ़ेस के साथ काम करना
3.9 डिवाइस मैनेजमेंट
3.10 सुलभता सेटिंग
3.11 लिखे गए शब्दों को सुनने की सुविधा
4. ऐप्लिकेशन पैकेजिंग के साथ काम करने की सुविधा
5. मल्टीमीडिया कॉन्टेंट के साथ काम करना
6. डेवलपर टूल और विकल्पों के साथ काम करने की सुविधा
7. हार्डवेयर के साथ काम करना
7.1. डिसप्ले और ग्राफ़िक्स
7.2. इनपुट डिवाइस
7.3. सेंसर
7.4. डेटा कनेक्टिविटी
7.5. कैमरे
7.6. मेमोरी और स्टोरेज
7.7. यूएसबी
8. परफ़ॉर्मेंस के हिसाब से काम करना
9. सुरक्षा मॉडल के साथ काम करने की सुविधा
10. सॉफ़्टवेयर के साथ काम करने की जांच
11. अपडेट किया जा सकने वाला सॉफ़्टवेयर
12. हमसे संपर्क करें
अनुबंध A - ब्लूटूथ टेस्ट करने का तरीका

1. परिचय

इस दस्तावेज़ में उन ज़रूरी शर्तों के बारे में बताया गया है जिन्हें पूरा करने पर, डिवाइसों को Android 4.2 के साथ काम करने लायक बनाया जा सकता है.

RFC2119 [संसाधन, 1] में बताए गए IETF स्टैंडर्ड के मुताबिक, "ज़रूरी है", "ज़रूरी नहीं है", "ज़रूरी है", "होगा", "नहीं होगा", "चाहिए", "नहीं चाहिए", "सुझाया गया", "हो सकता है", और "ज़रूरी नहीं" का इस्तेमाल किया जाता है.

इस दस्तावेज़ में, "डिवाइस लागू करने वाला" या "लागू करने वाला" का मतलब ऐसे व्यक्ति या संगठन से है जो Android 4.2 पर चलने वाला हार्डवेयर/सॉफ़्टवेयर सलूशन डेवलप कर रहा है. "डिवाइस पर लागू करना" या "लागू करना", हार्डवेयर/सॉफ़्टवेयर का ऐसा समाधान है जिसे डिवाइस पर लागू किया गया है.

Android 4.2 के साथ काम करने के लिए, डिवाइस के लागू होने की प्रक्रिया को, डिवाइस के साथ काम करने की शर्तों की इस परिभाषा में बताई गई ज़रूरी शर्तों को पूरा करना होगा. इनमें, रेफ़रंस के ज़रिए शामिल किए गए दस्तावेज़ भी शामिल हैं.

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

इस वजह से, Android ओपन सोर्स प्रोजेक्ट [संसाधन, 3] को Android के रेफ़रंस और लागू करने के लिए सबसे सही तरीका माना जाता है. डिवाइस में इस सुविधा को लागू करने वाले लोगों को हमारा सुझाव है कि वे Android Open Source Project से उपलब्ध "अपस्ट्रीम" सोर्स कोड का इस्तेमाल करें. कुछ कॉम्पोनेंट को वैकल्पिक तरीके से लागू करने की कल्पना की जा सकती है. हालांकि, ऐसा करने का सुझाव नहीं दिया जाता, क्योंकि सॉफ़्टवेयर टेस्ट पास करना काफ़ी मुश्किल हो जाएगा. इसे लागू करने वाले व्यक्ति या कंपनी की ज़िम्मेदारी है कि वह यह पक्का करे कि Android के स्टैंडर्ड वर्शन के साथ, इस सुविधा के काम करने का तरीका पूरी तरह से मैच करता हो. इसमें, Compatibility Test Suite के साथ-साथ, इसके अलावा भी अन्य चीज़ें शामिल हैं. आखिर में, ध्यान दें कि इस दस्तावेज़ में कुछ कॉम्पोनेंट के बदले दूसरे कॉम्पोनेंट इस्तेमाल करने और उनमें बदलाव करने की अनुमति नहीं है.

2. संसाधन

  1. IETF आरएफ़सी2119 की ज़रूरी शर्तों के लेवल: http://www.ietf.org/rfc/rfc2119.txt
  2. Android Compatibility Program के बारे में खास जानकारी: http://source.android.com/docs/compatibility/index.html
  3. Android ओपन सोर्स प्रोजेक्ट: http://source.android.com/
  4. एपीआई की परिभाषाएं और दस्तावेज़: http://developer.android.com/reference/packages.html
  5. Android की अनुमतियों के बारे में जानकारी: http://developer.android.com/reference/android/Manifest.permission.html
  6. android.os.Build के बारे में ज़्यादा जानकारी: http://developer.android.com/reference/android/os/Build.html
  7. Android 4.2 के साथ काम करने वाली वर्शन स्ट्रिंग: http://source.android.com/docs/compatibility/4.2/versions.html
  8. Renderscript: http://developer.android.com/guide/topics/graphics/renderscript.html
  9. हार्डवेयर की मदद से वीडियो की रफ़्तार बढ़ाने की सुविधा: http://developer.android.com/guide/topics/graphics/hardware-accel.html
  10. android.webkit.WebView क्लास: http://developer.android.com/reference/android/webkit/WebView.html
  11. HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  12. HTML5 की ऑफ़लाइन सुविधाएं: http://dev.w3.org/html5/spec/Overview.html#offline
  13. HTML5 वीडियो टैग: http://dev.w3.org/html5/spec/Overview.html#video
  14. HTML5/W3C जियोलोकेशन एपीआई: http://www.w3.org/TR/geolocation-API/
  15. HTML5/W3C वेबडेटाबेस एपीआई: http://www.w3.org/TR/webdatabase/
  16. HTML5/W3C IndexedDB API: http://www.w3.org/TR/IndexedDB/
  17. Dalvik वर्चुअल मशीन की खास जानकारी: यह Android के सोर्स कोड में, dalvik/docs पर उपलब्ध है
  18. ऐप्लिकेशन विजेट: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  19. सूचनाएं: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
  20. ऐप्लिकेशन के लिए संसाधन: http://code.google.com/android/reference/available-resources.html
  21. स्टेटस बार के आइकॉन की स्टाइल गाइड: http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
  22. Search Manager: http://developer.android.com/reference/android/app/SearchManager.html
  23. टॉस्ट: http://developer.android.com/reference/android/widget/Toast.html
  24. थीम: http://developer.android.com/guide/topics/ui/themes.html
  25. R.style क्लास: http://developer.android.com/reference/android/R.style.html
  26. लाइव वॉलपेपर: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  27. Android डिवाइस एडमिन: http://developer.android.com/guide/topics/admin/device-admin.html
  28. DevicePolicyManager के बारे में जानकारी: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
  29. Android Accessibility Service के एपीआई: http://developer.android.com/reference/android/accessibilityservice/package-summary.html
  30. Android Accessibility API: http://developer.android.com/reference/android/view/accessibility/package-summary.html
  31. Eyes Free प्रोजेक्ट: http://code.google.com/p/eyes-free
  32. टेक्स्ट-टू-स्पीच एपीआई: http://developer.android.com/reference/android/speech/tts/package-summary.html
  33. टूल के दस्तावेज़ का रेफ़रंस (adb, aapt, ddms, systrace के लिए): http://developer.android.com/guide/developing/tools/index.html
  34. Android APK फ़ाइल के बारे में जानकारी: http://developer.android.com/guide/topics/fundamentals.html
  35. मेनिफ़ेस्ट फ़ाइलें: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  36. Monkey टेस्टिंग टूल: https://developer.android.com/studio/test/other-testing-tools/monkey
  37. Android android.content.pm.PackageManager क्लास और हार्डवेयर की सुविधाओं की सूची: http://developer.android.com/reference/android/content/pm/PackageManager.html
  38. एक से ज़्यादा स्क्रीन के साथ काम करना: http://developer.android.com/guide/practices/screens_support.html
  39. android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
  40. android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
  41. android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
  42. ब्लूटूथ एपीआई: http://developer.android.com/reference/android/bluetooth/package-summary.html
  43. NDEF पुश प्रोटोकॉल: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
  44. MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
  45. MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
  46. MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
  47. MIFARE MF0ICU2: http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
  48. MIFARE AN130511: http://www.nxp.com/documents/application_note/AN130511.pdf
  49. MIFARE AN130411: http://www.nxp.com/documents/application_note/AN130411.pdf
  50. कैमरे के ओरिएंटेशन का एपीआई: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
  51. कैमरा: http://developer.android.com/reference/android/hardware/Camera.html
  52. Android Open Accessories: http://developer.android.com/guide/topics/usb/accessory.html
  53. यूएसबी होस्ट एपीआई: http://developer.android.com/guide/topics/usb/host.html
  54. Android की सुरक्षा और अनुमतियों के बारे में जानकारी: http://developer.android.com/guide/topics/security/security.html
  55. Android के लिए ऐप्लिकेशन: http://code.google.com/p/apps-for-android
  56. Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
  57. Android फ़ाइल ट्रांसफ़र: http://www.android.com/filetransfer
  58. Android के मीडिया फ़ॉर्मैट: http://developer.android.com/guide/appendix/media-formats.html
  59. एचटीटीपी लाइव स्ट्रीमिंग ड्राफ़्ट प्रोटोकॉल: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
  60. एनएफ़सी कनेक्शन हैंडओवर: http://www.nfc-forum.org/specs/spec_list/#conn_handover
  61. एनएफ़सी का इस्तेमाल करके, ब्लूटूथ को सुरक्षित तरीके से आसानी से जोड़ना: http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
  62. वाई-फ़ाई मल्टीकास्ट एपीआई: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
  63. ऐक्शन असिस्ट: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
  64. यूएसबी चार्जिंग स्पेसिफ़िकेशन: http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
  65. Android Beam: http://developer.android.com/guide/topics/nfc/nfc.html
  66. Android यूएसबी ऑडियो: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
  67. Android पर NFC की मदद से फ़ाइलें शेयर करने की सेटिंग: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
  68. वाई-फ़ाई डायरेक्ट (वाई-फ़ाई पी2पी): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
  69. लॉक और होम स्क्रीन विजेट: http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
  70. UserManager का रेफ़रंस: http://developer.android.com/reference/android/os/UserManager.html
  71. बाहरी स्टोरेज का रेफ़रंस: https://source.android.com/docs/core/storage
  72. बाहरी स्टोरेज के लिए एपीआई: http://developer.android.com/reference/android/os/Environment.html
  73. एसएमएस के लिए छोटा कोड: http://en.wikipedia.org/wiki/Short_code
  74. मीडिया रिमोट कंट्रोल क्लाइंट: http://developer.android.com/reference/android/media/RemoteControlClient.html
  75. Display Manager: http://developer.android.com/reference/android/hardware/display/DisplayManager.html
  76. ड्रीम्स: http://developer.android.com/reference/android/service/dreams/DreamService.html
  77. Android ऐप्लिकेशन डेवलपमेंट से जुड़ी सेटिंग: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
  • कैमरा: http://developer.android.com/reference/android/hardware/Camera.Parameters.html
  • इनमें से कई संसाधन, सीधे या किसी अन्य तरीके से Android 4.2 SDK टूल से लिए गए हैं. साथ ही, ये उस SDK टूल के दस्तावेज़ में दी गई जानकारी के काम करने के तरीके से मेल खाएंगे. अगर कंपैटबिलिटी डेफ़िनिशन या कंपैटबिलिटी टेस्ट सुइट, SDK टूल के दस्तावेज़ से मेल नहीं खाता है, तो SDK टूल के दस्तावेज़ को आधिकारिक माना जाता है. ऊपर दिए गए रेफ़रंस में दी गई तकनीकी जानकारी को, इस डिवाइस के साथ काम करने की शर्तों के हिस्से के तौर पर शामिल किया जाता है.

    3. सॉफ़्टवेयर

    3.1. मैनेज किए जा रहे एपीआई के साथ काम करने की सुविधा

    मैनेज किया गया (Dalvik पर आधारित) एक्सीक्यूशन एनवायरमेंट, Android ऐप्लिकेशन के लिए मुख्य साधन है. Android ऐप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई), मैनेज किए जा रहे वर्चुअल मशीन (VM) एनवायरमेंट में चल रहे ऐप्लिकेशन के लिए उपलब्ध Android प्लैटफ़ॉर्म इंटरफ़ेस का सेट है. डिवाइस पर लागू किए गए एपीआई को पूरी तरह से लागू किया जाना चाहिए. इसमें, Android 4.2 SDK [संसाधन, 4] के ज़रिए एक्सपोज़ किए गए, दस्तावेज़ में मौजूद किसी भी एपीआई के सभी व्यवहार शामिल होने चाहिए.

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

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

    3.2. Soft API Compatibility

    सेक्शन 3.1 में बताए गए मैनेज किए जा सकने वाले एपीआई के अलावा, Android में सिर्फ़ रनटाइम के लिए एक अहम "सॉफ़्ट" एपीआई भी शामिल है. यह एपीआई, इंटेंट, अनुमतियों, और Android ऐप्लिकेशन के ऐसे पहलुओं के तौर पर काम करता है जिन्हें ऐप्लिकेशन को कंपाइल करते समय लागू नहीं किया जा सकता.

    3.2.1. अनुमतियां

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

    3.2.2. बिल्ड पैरामीटर

    Android एपीआई में, android.os.Build क्लास [रिसॉर्स, 6] पर कई कॉन्स्टेंट शामिल होते हैं. इनका मकसद, मौजूदा डिवाइस के बारे में बताना होता है. डिवाइस पर लागू करने के लिए, एक जैसी और काम की वैल्यू देने के लिए, नीचे दी गई टेबल में इन वैल्यू के फ़ॉर्मैट पर अतिरिक्त पाबंदियां शामिल हैं. डिवाइस पर लागू करने के लिए, इनका पालन करना ज़रूरी है.

    पैरामीटर टिप्पणियां
    android.os.Build.VERSION.RELEASE फ़िलहाल चल रहे Android सिस्टम का वर्शन, इंसान के पढ़ने लायक फ़ॉर्मैट में. इस फ़ील्ड में, [संसाधन, 7] में दी गई स्ट्रिंग वैल्यू में से कोई एक वैल्यू होनी चाहिए.
    android.os.Build.VERSION.SDK फ़िलहाल चल रहे Android सिस्टम का वर्शन, तीसरे पक्ष के ऐप्लिकेशन कोड के लिए ऐक्सेस किए जा सकने वाले फ़ॉर्मैट में. Android 4.2 के लिए, इस फ़ील्ड की वैल्यू 17 होनी चाहिए.
    android.os.Build.VERSION.SDK_INT फ़िलहाल चल रहे Android सिस्टम का वर्शन, तीसरे पक्ष के ऐप्लिकेशन कोड के लिए ऐक्सेस किए जा सकने वाले फ़ॉर्मैट में. Android 4.2 के लिए, इस फ़ील्ड की वैल्यू 17 होनी चाहिए.
    android.os.Build.VERSION.INCREMENTAL डिवाइस इंप्लीमेंटर की चुनी गई वैल्यू, जो फ़िलहाल चल रहे Android सिस्टम के खास बिल्ड को इंसान के पढ़ने लायक फ़ॉर्मैट में दिखाती है. इस वैल्यू का इस्तेमाल, असली उपयोगकर्ताओं के लिए उपलब्ध कराए गए अलग-अलग बिल्ड के लिए फिर से नहीं किया जाना चाहिए. इस फ़ील्ड का आम तौर पर इस्तेमाल, यह बताने के लिए किया जाता है कि बिल्ड जनरेट करने के लिए, किस बिल्ड नंबर या सोर्स-कंट्रोल में बदलाव करने वाले आइडेंटिफ़ायर का इस्तेमाल किया गया था. इस फ़ील्ड के लिए, किसी खास फ़ॉर्मैट की ज़रूरत नहीं होती. हालांकि, यह शर्त ज़रूरी है कि यह शून्य या खाली स्ट्रिंग ("") न हो.
    android.os.Build.BOARD डिवाइस लागू करने वाले व्यक्ति की चुनी गई वैल्यू, जो डिवाइस में इस्तेमाल किए गए खास इंटरनल हार्डवेयर की पहचान करती है. यह वैल्यू, इंसान के पढ़ने लायक फ़ॉर्मैट में होती है. इस फ़ील्ड का इस्तेमाल, डिवाइस को पावर देने वाले बोर्ड के खास वर्शन की जानकारी देने के लिए किया जा सकता है. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.BRAND डिवाइस लागू करने वाले व्यक्ति या कंपनी की चुनी गई वैल्यू, जिसमें डिवाइस बनाने वाली कंपनी, संगठन, व्यक्ति वगैरह का नाम, आम तौर पर पढ़े जा सकने वाले फ़ॉर्मैट में दिया गया हो. इस फ़ील्ड का इस्तेमाल, डिवाइस बेचने वाले OEM और/या कैरियर की जानकारी देने के लिए किया जा सकता है. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.CPU_ABI नेटिव कोड के निर्देश सेट (सीपीयू टाइप + एबीआई कन्वेंशन) का नाम. सेक्शन 3.3: नेटिव एपीआई के साथ काम करना देखें.
    android.os.Build.CPU_ABI2 नेटिव कोड के दूसरे निर्देश सेट (सीपीयू टाइप + एबीआई कन्वेंशन) का नाम. सेक्शन 3.3: नेटिव एपीआई के साथ काम करना देखें.
    android.os.Build.DEVICE डिवाइस लागू करने वाले व्यक्ति या कंपनी की चुनी गई वैल्यू, जो डिवाइस के बॉडी (इसे कभी-कभी "इंडस्ट्रियल डिज़ाइन" भी कहा जाता है) के खास कॉन्फ़िगरेशन या बदलाव की पहचान करती है. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.FINGERPRINT यह एक स्ट्रिंग है, जो इस बिल्ड की खास तौर पर पहचान करती है. यह पढ़ने में आसान होना चाहिए. यह इस टेंप्लेट के मुताबिक होना चाहिए:
    $(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
    उदाहरण के लिए:
    acme/mydevice/generic:4.2/JRN53/3359:userdebug/test-keys
    फ़िंगरप्रिंट में खाली जगह वाले वर्ण नहीं होने चाहिए. अगर ऊपर दिए गए टेंप्लेट में शामिल अन्य फ़ील्ड में खाली जगह वाले वर्ण हैं, तो उन्हें बिल्ड फ़िंगरप्रिंट में किसी दूसरे वर्ण से बदलना ज़रूरी है. जैसे, अंडरस्कोर ("_") वर्ण. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है.
    android.os.Build.HARDWARE हार्डवेयर का नाम (कर्नल कमांड लाइन या /proc से). इसे किसी व्यक्ति के लिए आसानी से पढ़ा जा सकने वाला होना चाहिए. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.HOST यह एक स्ट्रिंग होती है, जो उस होस्ट की खास पहचान करती है जिस पर बिल्ड बनाया गया था. यह स्ट्रिंग, मनुष्य के पढ़ने लायक फ़ॉर्मैट में होती है. इस फ़ील्ड के फ़ॉर्मैट के लिए कोई ज़रूरी शर्त नहीं है. हालांकि, यह शर्त ज़रूरी है कि यह शून्य या खाली स्ट्रिंग ("") न हो.
    android.os.Build.ID डिवाइस लागू करने वाला व्यक्ति, किसी रिलीज़ को रेफ़र करने के लिए, यह आइडेंटिफ़ायर चुनता है. यह आइडेंटिफ़ायर, लोगों के पढ़ने लायक फ़ॉर्मैट में होता है. यह फ़ील्ड, android.os.Build.VERSION.INCREMENTAL जैसा हो सकता है. हालांकि, यह ज़रूरी है कि यह वैल्यू, उपयोगकर्ताओं के लिए सॉफ़्टवेयर के बिल्ड के बीच अंतर करने के लिए काम की हो. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.MANUFACTURER प्रॉडक्ट के ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (OEM) का ट्रेड नेम. इस फ़ील्ड के फ़ॉर्मैट के लिए कोई ज़रूरी शर्त नहीं है. हालांकि, यह ज़रूरी है कि यह शून्य या खाली स्ट्रिंग ("") न हो.
    android.os.Build.MODEL डिवाइस लागू करने वाले व्यक्ति की चुनी गई वैल्यू, जिसमें डिवाइस का नाम होता है, जैसा कि असली उपयोगकर्ता को पता होता है. यह वही नाम होना चाहिए जिससे डिवाइस को मार्केट में लाया जाता है और असली उपयोगकर्ताओं को बेचा जाता है. इस फ़ील्ड के फ़ॉर्मैट के लिए कोई ज़रूरी शर्त नहीं है. हालांकि, यह शर्त ज़रूरी है कि यह शून्य या खाली स्ट्रिंग ("") न हो.
    android.os.Build.PRODUCT डिवाइस लागू करने वाले व्यक्ति की चुनी गई वैल्यू, जिसमें प्रॉडक्ट (SKU) का डेवलपमेंट नेम या कोड नेम शामिल होता है. यह ऐसा होना चाहिए जिसे कोई भी व्यक्ति पढ़ सके. हालांकि, यह ज़रूरी नहीं है कि इसे असली उपयोगकर्ता देखें. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.SERIAL हार्डवेयर का सीरियल नंबर, अगर उपलब्ध हो. इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^([a-zA-Z0-9]{0,20})$" से मैच करनी चाहिए.
    android.os.Build.TAGS डिवाइस लागू करने वाले व्यक्ति के चुने गए टैग की सूची, जिन्हें कॉमा लगाकर अलग किया गया है. इससे, बिल्ड को और बेहतर तरीके से अलग किया जा सकता है. उदाहरण के लिए, "unsigned,debug". इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.TIME यह वैल्यू, बिल्ड होने के समय का टाइमस्टैंप दिखाती है.
    android.os.Build.TYPE डिवाइस इंप्लीमेंटर की चुनी गई वैल्यू, जो बिल्ड के रनटाइम कॉन्फ़िगरेशन के बारे में बताती है. इस फ़ील्ड में, Android के तीन सामान्य रनटाइम कॉन्फ़िगरेशन में से किसी एक की वैल्यू होनी चाहिए: "user", "userdebug" या "eng". इस फ़ील्ड की वैल्यू को 7-बिट ASCII के तौर पर एन्कोड किया जा सकता है. साथ ही, यह वैल्यू रेगुलर एक्सप्रेशन "^[a-zA-Z0-9.,_-]+$" से मैच करनी चाहिए.
    android.os.Build.USER उस उपयोगकर्ता (या ऑटोमेटेड उपयोगकर्ता) का नाम या यूज़र आईडी जिसने बिल्ड जनरेट किया. इस फ़ील्ड के फ़ॉर्मैट के लिए कोई ज़रूरी शर्त नहीं है. हालांकि, यह ज़रूरी है कि यह शून्य या खाली स्ट्रिंग ("") न हो.

    3.2.3. इंटेंट की कंपैटिबिलिटी

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

    3.2.3.1. ऐप्लिकेशन के मुख्य इन्टेंट

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

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

    इन ऐप्लिकेशन को Android सिस्टम के मुख्य ऐप्लिकेशन माना जाता है:

    • डेस्क क्लॉक
    • ब्राउज़र
    • Calendar
    • संपर्क
    • गैलरी में देखें
    • GlobalSearch
    • लॉन्चर
    • संगीत
    • सेटिंग

    Android के मुख्य सिस्टम ऐप्लिकेशन में कई ऐसी गतिविधियां या सेवाएं शामिल होती हैं जिन्हें "सार्वजनिक" माना जाता है. इसका मतलब है कि "android:exported" एट्रिब्यूट मौजूद न हो या उसकी वैल्यू "सही" हो.

    Android के मुख्य सिस्टम ऐप्लिकेशन में, "गलत" वैल्यू वाले android:exported एट्रिब्यूट की मदद से, किसी भी गतिविधि या सेवा को सार्वजनिक के तौर पर मार्क नहीं किया जाता. ऐसे में, डिवाइस में लागू किए जाने वाले हर ऐप्लिकेशन में, उसी तरह का कॉम्पोनेंट शामिल होना चाहिए जो Android के मुख्य सिस्टम ऐप्लिकेशन के इंटेंट फ़िल्टर पैटर्न को लागू करता हो.

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

    3.2.3.2. इंटेंट ओवरराइड

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

    हालांकि, डिवाइस पर लागू होने पर, कुछ यूआरआई पैटर्न (उदाहरण के लिए, http://play. google.com) के लिए डिफ़ॉल्ट गतिविधियां दी जा सकती हैं.ऐसा तब होता है, जब डिफ़ॉल्ट गतिविधि, डेटा यूआरआई के लिए ज़्यादा सटीक फ़िल्टर देती हो. उदाहरण के लिए, डेटा यूआरआई "http://www.android.com" की जानकारी देने वाला इंटेंट फ़िल्टर, "http://" के लिए ब्राउज़र फ़िल्टर से ज़्यादा सटीक होता है. डिवाइस पर लागू करने के लिए, उपयोगकर्ताओं को यूज़र इंटरफ़ेस देना ज़रूरी है, ताकि वे इंटेंट के लिए डिफ़ॉल्ट गतिविधि में बदलाव कर सकें.

    3.2.3.3. इंटेंट नेमस्पेस

    डिवाइस पर लागू किए जाने वाले टूल में, ऐसा कोई भी Android कॉम्पोनेंट शामिल नहीं होना चाहिए जो android.* या com.android.* नेमस्पेस में ACTION, CATEGORY या किसी दूसरी मुख्य स्ट्रिंग का इस्तेमाल करके, किसी नए इंटेंट या ब्रॉडकास्ट इंटेंट पैटर्न को लागू करता हो. डिवाइस लागू करने वाले लोगों को, ऐसे किसी भी Android कॉम्पोनेंट को शामिल नहीं करना चाहिए जो किसी दूसरे संगठन के पैकेज स्पेस में, ACTION, CATEGORY या अन्य मुख्य स्ट्रिंग का इस्तेमाल करके, किसी नए इंटेंट या ब्रॉडकास्ट इंटेंट पैटर्न का पालन करता हो. डिवाइस लागू करने वाले लोगों को, सेक्शन 3.2.3.1 में दिए गए मुख्य ऐप्लिकेशन के इस्तेमाल किए गए किसी भी इंटेंट पैटर्न में बदलाव नहीं करना चाहिए या उसे बड़ा नहीं करना चाहिए. डिवाइस पर लागू करने के लिए, ऐसे इंटेंट पैटर्न शामिल किए जा सकते हैं जिनमें नेमस्पेस का इस्तेमाल किया गया हो और जो साफ़ तौर पर उनके संगठन से जुड़े हों.

    यह पाबंदी, सेक्शन 3.6 में बताई गई Java भाषा की क्लास के लिए तय की गई पाबंदी से मिलती-जुलती है.

    3.2.3.4. ब्रॉडकास्ट इंटेंट

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

    3.3. नेटिव एपीआई के साथ काम करना

    3.3.1 ऐप्लिकेशन बाइनरी इंटरफ़ेस

    Dalvik में चलने वाला मैनेज किया गया कोड, ऐप्लिकेशन .apk फ़ाइल में दिए गए नेटिव कोड को कॉल कर सकता है. यह कोड, डिवाइस के हार्डवेयर आर्किटेक्चर के हिसाब से, ELF .so फ़ाइल के तौर पर कंपाइल किया जाता है. नेटिव कोड, प्रोसेसर की बुनियादी टेक्नोलॉजी पर काफ़ी निर्भर होता है. इसलिए, Android, Android NDK में कई ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) तय करता है. ये इंटरफ़ेस, docs/CPU-ARCH-ABIS.html फ़ाइल में मौजूद होते हैं. अगर किसी डिवाइस पर, तय किए गए एक या एक से ज़्यादा एबीआई काम करते हैं, तो उसे Android NDK के साथ काम करना चाहिए. इसके लिए, नीचे दिया गया तरीका अपनाएं.

    अगर किसी डिवाइस में Android एबीआई के लिए सहायता शामिल है, तो:

    • इसमें, मैनेज किए जा रहे एनवायरमेंट में चल रहे कोड के लिए, नेटिव कोड को कॉल करने की सुविधा शामिल होनी चाहिए. इसके लिए, स्टैंडर्ड Java नेटिव इंटरफ़ेस (JNI) सेमेंटेटिक्स का इस्तेमाल किया जाना चाहिए.
    • यह ज़रूरी है कि यह नीचे दी गई सूची में मौजूद हर ज़रूरी लाइब्रेरी के साथ, सोर्स के साथ काम करे (यानी हेडर के साथ काम करे) और बाइनरी के साथ काम करे (एबीआई के लिए)
    • android.os.Build.CPU_ABI एपीआई के ज़रिए, डिवाइस पर काम करने वाले नेटिव ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) के बारे में सटीक जानकारी देना ज़रूरी है
    • सिर्फ़ उन एबीआई की जानकारी देनी चाहिए जो docs/CPU-ARCH-ABIS.txt फ़ाइल में, Android NDK के सबसे नए वर्शन में मौजूद हैं
    • इसे, अपस्ट्रीम Android ओपन सोर्स प्रोजेक्ट में मौजूद सोर्स कोड और हेडर फ़ाइलों का इस्तेमाल करके बनाया जाना चाहिए

    नेटिव कोड वाले ऐप्लिकेशन के लिए, यहां दिए गए नेटिव कोड एपीआई उपलब्ध होने चाहिए:

    • libc (C लाइब्रेरी)
    • libm (मैथ लाइब्रेरी)
    • C++ के लिए कम से कम सहायता
    • JNI इंटरफ़ेस
    • liblog (Android लॉगिंग)
    • libz (Zlib कंप्रेशन)
    • libdl (डाइनैमिक लिंकर)
    • libGLESv1_CM.so (OpenGL ES 1.0)
    • libGLESv2.so (OpenGL ES 2.0)
    • libEGL.so (नेटिव OpenGL सरफ़ेस मैनेजमेंट)
    • libjnigraphics.so
    • libOpenSLES.so (OpenSL ES 1.0.1 ऑडियो की सुविधा)
    • libOpenMAXAL.so (OpenMAX AL 1.0.1 के साथ काम करता है)
    • libandroid.so (नेटिव Android गतिविधि के लिए सहायता)
    • OpenGL के लिए सहायता, जैसा कि नीचे बताया गया है

    ध्यान दें कि Android NDK के आने वाले वर्शन में, अन्य एबीआई के लिए सहायता उपलब्ध हो सकती है. अगर किसी डिवाइस पर पहले से तय किए गए किसी मौजूदा एबीआई का इस्तेमाल नहीं किया जा सकता, तो उसे किसी भी एबीआई के साथ काम करने की जानकारी नहीं देनी चाहिए.

    नेटिव कोड के साथ काम करना मुश्किल है. इस वजह से, यह दोहराया जाना चाहिए कि डिवाइस में लागू करने वाले लोगों को ऊपर दी गई लाइब्रेरी के अपस्ट्रीम वर्शन का इस्तेमाल करने का सुझाव दिया जाता है, ताकि यह पक्का किया जा सके कि वे डिवाइसों के साथ काम करती हैं.

    3.4. वेब के साथ काम करना

    3.4.1. वेबव्यू के साथ काम करना

    Android ओपन सोर्स के तहत, android.webkit.WebView को लागू करने के लिए WebKit रेंडरिंग इंजन का इस्तेमाल किया जाता है. वेब रेंडरिंग सिस्टम के लिए, बेहतर टेस्ट सुइट बनाना संभव नहीं है. इसलिए, डिवाइस को लागू करने वाले लोगों को वेबव्यू को लागू करने के लिए, WebKit के खास अपस्ट्रीम बिल्ड का इस्तेमाल करना होगा. खास तौर से:

    • डिवाइस पर android.webkit.WebView इंप्लिकेशन लागू करने के लिए, Android 4.2 के लिए अपस्ट्रीम Android Open Source tree से 534.30 WebKit बिल्ड का इस्तेमाल करना ज़रूरी है. इस बिल्ड में, वेबव्यू के लिए काम करने के तरीके और सुरक्षा से जुड़ी गड़बड़ियों को ठीक करने के तरीके का एक खास सेट शामिल है. डिवाइस पर वेबव्यू लागू करने वाले लोग, WebKit को अपनी पसंद के मुताबिक बना सकते हैं. हालांकि, ऐसा करने पर वेबव्यू के व्यवहार में बदलाव नहीं होना चाहिए. इसमें रेंडरिंग के व्यवहार में भी बदलाव नहीं होना चाहिए.
    • वेबव्यू की रिपोर्ट की गई उपयोगकर्ता एजेंट स्ट्रिंग इस फ़ॉर्मैट में होनी चाहिए:
      Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30
      • $(VERSION) स्ट्रिंग की वैल्यू, android.os.Build.VERSION.RELEASE की वैल्यू के बराबर होनी चाहिए
      • $(LOCALE) स्ट्रिंग की वैल्यू, देश के कोड और भाषा के लिए आईएसओ के नियमों का पालन करनी चाहिए. साथ ही, यह डिवाइस की कॉन्फ़िगर की गई मौजूदा स्थान-भाषा के हिसाब से होनी चाहिए
      • $(MODEL) स्ट्रिंग की वैल्यू, android.os.Build.MODEL की वैल्यू के बराबर होनी चाहिए
      • $(BUILD) स्ट्रिंग की वैल्यू, android.os.Build.ID की वैल्यू के बराबर होनी चाहिए
      • डिवाइस के लागू होने पर, उपयोगकर्ता एजेंट स्ट्रिंग में Mobile को छोड़ा जा सकता है

    वेबव्यू कॉम्पोनेंट में, ज़्यादा से ज़्यादा HTML5 [रिसॉर्स, 11] के लिए सहायता शामिल होनी चाहिए. कम से कम, डिवाइस पर लागू किए गए वेबव्यू में, HTML5 से जुड़े इन सभी एपीआई का इस्तेमाल किया जा सकता है:

    इसके अलावा, डिवाइस में लागू किए गए एपीआई, HTML5/W3C वेबस्टोरेज एपीआई [संसाधन, 15] के साथ काम करने चाहिए. साथ ही, इनमें HTML5/W3C IndexedDB API [संसाधन, 16] के साथ काम करने की सुविधा होनी चाहिए. ध्यान दें कि वेब डेवलपमेंट स्टैंडर्ड से जुड़ी संस्थाएं, वेबस्टोरेज के बजाय IndexedDB का इस्तेमाल करना शुरू कर रही हैं. इसलिए, आने वाले समय में Android के नए वर्शन में IndexedDB का इस्तेमाल करना ज़रूरी हो सकता है.

    सभी JavaScript API की तरह, HTML5 API भी वेबव्यू में डिफ़ॉल्ट रूप से बंद होने चाहिए. हालांकि, अगर डेवलपर सामान्य Android API की मदद से उन्हें साफ़ तौर पर चालू करता है, तो ऐसा नहीं होगा.

    3.4.2. ब्राउज़र किस-किस के साथ काम करता है

    डिवाइस पर लागू किए गए वर्शन में, उपयोगकर्ता के सामान्य वेब ब्राउज़िंग के लिए, स्टैंडअलोन ब्राउज़र ऐप्लिकेशन शामिल होना चाहिए. स्टैंडअलोन ब्राउज़र, WebKit के अलावा किसी दूसरी ब्राउज़र टेक्नोलॉजी पर आधारित हो सकता है. हालांकि, किसी अन्य ब्राउज़र ऐप्लिकेशन का इस्तेमाल करने पर भी, तीसरे पक्ष के ऐप्लिकेशन के लिए उपलब्ध कराया गया android.webkit.WebView कॉम्पोनेंट, WebKit पर आधारित होना चाहिए. इस बारे में सेक्शन 3.4.1 में बताया गया है.

    लागू करने पर, स्टैंडअलोन ब्राउज़र ऐप्लिकेशन में कस्टम उपयोगकर्ता एजेंट स्ट्रिंग भेजी जा सकती है.

    अलग से उपलब्ध ब्राउज़र ऐप्लिकेशन में, जितने हो सके उतने HTML5 [Resources, 11] के लिए सहायता होनी चाहिए. भले ही, यह ऐप्लिकेशन अपस्ट्रीम WebKit ब्राउज़र ऐप्लिकेशन पर आधारित हो या तीसरे पक्ष के किसी ऐप्लिकेशन पर. कम से कम, डिवाइस पर लागू किए गए एपीआई, HTML5 से जुड़े इन सभी एपीआई के साथ काम करने चाहिए:

    इसके अलावा, डिवाइस में लागू किए गए एपीआई, HTML5/W3C वेबस्टोरेज एपीआई [संसाधन, 15] के साथ काम करने चाहिए. साथ ही, इनमें HTML5/W3C IndexedDB API [संसाधन, 16] के साथ काम करने की सुविधा होनी चाहिए. ध्यान दें कि वेब डेवलपमेंट स्टैंडर्ड से जुड़ी संस्थाएं, वेबस्टोरेज के बजाय IndexedDB का इस्तेमाल करना शुरू कर रही हैं. इसलिए, आने वाले समय में Android के नए वर्शन में IndexedDB का इस्तेमाल करना ज़रूरी हो सकता है.

    3.5. एपीआई के काम करने का तरीका

    एपीआई के हर टाइप (मैनेज किया गया, सॉफ़्ट, नेटिव, और वेब) के व्यवहार, अपस्ट्रीम Android ओपन सोर्स प्रोजेक्ट [संसाधन, 3] के पसंदीदा तरीके से मेल खाने चाहिए. साथ काम करने से जुड़ी कुछ खास बातें:

    • डिवाइसों को स्टैंडर्ड इंटेंट के व्यवहार या सेमेटिक्स में बदलाव नहीं करना चाहिए
    • डिवाइसों को किसी खास तरह के सिस्टम कॉम्पोनेंट (जैसे, सेवा, ऐक्टिविटी, ContentProvider वगैरह) के लाइफ़साइकल या लाइफ़साइकल सेमेटिक्स में बदलाव नहीं करना चाहिए
    • डिवाइसों को स्टैंडर्ड अनुमति के सेमेटिक्स में बदलाव नहीं करना चाहिए

    ऊपर दी गई सूची पूरी नहीं है. Compatibility Test Suite (CTS), प्लैटफ़ॉर्म के काम करने के तरीके के हिसाब से, उसके अहम हिस्सों की जांच करता है. हालांकि, वह सभी हिस्सों की जांच नहीं करता. इसे लागू करने वाले व्यक्ति या कंपनी की ज़िम्मेदारी है कि वह Android Open Source Project के साथ, व्यवहार के लिहाज़ से इसकी काम करने की सुविधा को काम के मुताबिक बनाए. इस वजह से, डिवाइस को लागू करने वाले लोगों को सिस्टम के अहम हिस्सों को फिर से लागू करने के बजाय, जहां तक हो सके Android Open Source Project के ज़रिए उपलब्ध सोर्स कोड का इस्तेमाल करना चाहिए.

    3.6. एपीआई नेमस्पेस

    Android, पैकेज और क्लास नेमस्पेस के उन नियमों का पालन करता है जिन्हें Java प्रोग्रामिंग लैंग्वेज ने तय किया है. तीसरे पक्ष के ऐप्लिकेशन के साथ काम करने की सुविधा देने के लिए, डिवाइस इंप्लीमेंटर को इन पैकेज नेमस्पेस में, पाबंदी वाले बदलाव (नीचे देखें) नहीं करने चाहिए:

    • java.*
    • javax.*
    • sun.*
    • android.*
    • com.android.*

    इन बदलावों पर पाबंदी है:

    • डिवाइस के लागू होने पर, Android प्लैटफ़ॉर्म पर सार्वजनिक तौर पर उपलब्ध एपीआई में बदलाव नहीं किया जाना चाहिए. इसके लिए, किसी भी तरीके या क्लास के हस्ताक्षर में बदलाव नहीं किया जाना चाहिए. इसके अलावा, क्लास या क्लास फ़ील्ड को हटाया भी नहीं जाना चाहिए.
    • डिवाइस में एपीआई लागू करने वाले लोग, एपीआई के लागू होने के तरीके में बदलाव कर सकते हैं. हालांकि, ऐसे बदलावों से सार्वजनिक तौर पर उपलब्ध किसी भी एपीआई के बताए गए व्यवहार और Java-language के हस्ताक्षर पर असर नहीं पड़ना चाहिए.
    • डिवाइस लागू करने वाले लोगों को, ऊपर दिए गए एपीआई में सार्वजनिक तौर पर दिखाए जाने वाले एलिमेंट (जैसे कि क्लास या इंटरफ़ेस या मौजूदा क्लास या इंटरफ़ेस में फ़ील्ड या तरीके) नहीं जोड़ने चाहिए.

    "सार्वजनिक तौर पर दिखाया जाने वाला एलिमेंट", ऐसा कोई भी कॉन्स्ट्रक्ट होता है जिसे "@hide" मार्कर से नहीं सजाया गया है. इसका इस्तेमाल, अपस्ट्रीम Android सोर्स कोड में किया जाता है. दूसरे शब्दों में, डिवाइस लागू करने वाले लोगों को ऊपर बताए गए नेमस्पेस में नए एपीआई को एक्सपोज़ नहीं करना चाहिए या मौजूदा एपीआई में बदलाव नहीं करना चाहिए. डिवाइस लागू करने वाले लोग, सिर्फ़ अंदरूनी बदलाव कर सकते हैं. हालांकि, उन बदलावों का विज्ञापन नहीं किया जाना चाहिए या डेवलपर को उनका पता नहीं चलना चाहिए.

    डिवाइस लागू करने वाले लोग, कस्टम एपीआई जोड़ सकते हैं. हालांकि, ऐसा कोई भी एपीआई किसी ऐसे नेमस्पेस में नहीं होना चाहिए जिसका मालिकाना हक किसी दूसरे संगठन के पास हो या जो किसी दूसरे संगठन का रेफ़रंस देता हो. उदाहरण के लिए, डिवाइस को लागू करने वाले लोगों को com.google.* या मिलते-जुलते नेमस्पेस में एपीआई नहीं जोड़ने चाहिए. ऐसा सिर्फ़ Google कर सकता है. इसी तरह, Google को अन्य कंपनियों के नेमस्पेस में एपीआई नहीं जोड़ने चाहिए. इसके अलावा, अगर किसी डिवाइस में स्टैंडर्ड Android नेमस्पेस के बाहर के कस्टम एपीआई शामिल हैं, तो उन एपीआई को Android की शेयर की गई लाइब्रेरी में पैकेज करना ज़रूरी है. इससे, ऐसे एपीआई के ज़्यादा मेमोरी इस्तेमाल करने पर, सिर्फ़ उन ऐप्लिकेशन पर असर पड़ेगा जो <uses-library> प्रोसेस के ज़रिए उनका साफ़ तौर पर इस्तेमाल करते हैं.

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

    ध्यान दें कि ऊपर बताई गई पाबंदियां, Java प्रोग्रामिंग भाषा में एपीआई के नाम रखने के लिए तय किए गए स्टैंडर्ड नियमों के मुताबिक हैं. इस सेक्शन का मकसद, उन नियमों को और बेहतर बनाना है. साथ ही, इस काम के लिए, इस सेक्शन को काम करने के तरीके की परिभाषा में शामिल किया गया है.

    3.7. वर्चुअल मशीन के साथ काम करने की सुविधा

    डिवाइस पर लागू किए गए वर्शन में, Dalvik Executable (DEX) के पूरी तरह से काम करने वाले बाइटकोड स्पेसिफ़िकेशन और Dalvik वर्चुअल मशीन के सेमेटिक्स [संसाधन, 17] का इस्तेमाल किया जाना चाहिए.

    डिवाइस में Dalvik को कॉन्फ़िगर करना ज़रूरी है, ताकि वह अपस्ट्रीम Android प्लैटफ़ॉर्म के मुताबिक और नीचे दी गई टेबल में बताए गए तरीके के हिसाब से, मेमोरी को ऐलोकेट कर सके. (स्क्रीन साइज़ और स्क्रीन डिन्सिटी की परिभाषाओं के लिए, सेक्शन 7.1.1 देखें.)

    ध्यान दें कि यहां दी गई मेमोरी वैल्यू को कम से कम वैल्यू माना जाता है. साथ ही, डिवाइस पर हर ऐप्लिकेशन के लिए ज़्यादा मेमोरी असाइन की जा सकती है.

    स्क्रीन का साइज़ स्क्रीन की डेंसिटी ऐप्लिकेशन मेमोरी
    छोटा / सामान्य / बड़ा ldpi / mdpi 16 एमबी
    छोटा / सामान्य / बड़ा tvdpi / hdpi 32 एमबी
    छोटा / सामान्य / बड़ा xhdpi 64 एमबी
    xlarge mdpi 32 एमबी
    xlarge tvdpi / hdpi 64 एमबी
    xlarge xhdpi 128 एमबी

    3.8. यूज़र इंटरफ़ेस किस-किस के साथ काम करता है

    3.8.1. विजेट

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

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

    डिवाइस पर लागू होने वाले टूल, स्टैंडर्ड ग्रिड साइज़ में 4 x 4 वाले विजेट को रेंडर कर सकते हों. ज़्यादा जानकारी के लिए, Android SDK टूल के दस्तावेज़ [संसाधन, 18] में ऐप्लिकेशन विजेट के डिज़ाइन से जुड़े दिशा-निर्देश देखें.

    3.8.2. सूचनाएं

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

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

    इसके अलावा, एपीआई [रिसॉर्स, 20] या स्टेटस/सिस्टम बार आइकॉन स्टाइल गाइड [रिसॉर्स, 21] में दिए गए सभी रिसॉर्स (आइकॉन, साउंड फ़ाइलें वगैरह) को सही तरीके से रेंडर करना ज़रूरी है. डिवाइस में सूचनाएं दिखाने की सुविधा लागू करने वाले लोग या कंपनियां, उपयोगकर्ताओं को सूचनाओं के लिए, Android ओपन सोर्स के रेफ़रंस के मुकाबले बेहतर अनुभव दे सकती हैं. हालांकि, सूचनाओं के लिए उपलब्ध अन्य सिस्टम को ऊपर बताए गए मौजूदा सूचना संसाधनों के साथ काम करना चाहिए.

    Android 4.2 में रिच नोटिफ़िकेशन की सुविधा शामिल है. जैसे, चल रही सूचनाओं के लिए इंटरैक्टिव व्यू. डिवाइस पर रिच सूचनाएं सही तरीके से दिखनी चाहिए और उन्हें ठीक से लागू किया जाना चाहिए. इस बारे में Android API में बताया गया है.

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

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

    3.8.4. टोस्ट

    ऐप्लिकेशन, "Toast" API का इस्तेमाल करके, असली उपयोगकर्ता को छोटी और बिना मोडल वाली स्ट्रिंग दिखा सकते हैं. ये स्ट्रिंग कुछ समय बाद अपने-आप हट जाती हैं. [संसाधन, 23] में इस API के बारे में बताया गया है. डिवाइस पर लागू होने वाले टूल, ऐप्लिकेशन से असली उपयोगकर्ताओं को टॉस्ट दिखाते समय, उन्हें साफ़ तौर पर दिखाने चाहिए.

    3.8.5. थीम

    Android, ऐप्लिकेशन के लिए "थीम" उपलब्ध कराता है, ताकि वे पूरी गतिविधि या ऐप्लिकेशन में स्टाइल लागू कर सकें. Android 4.2 में "होलो" या "होलोग्राफ़िक" थीम, तय की गई स्टाइल के सेट के तौर पर शामिल है. ऐप्लिकेशन डेवलपर इसका इस्तेमाल तब कर सकते हैं, जब उन्हें Android SDK [संसाधन, 24] में बताई गई होलो थीम के लुक और स्टाइल को मैच करना हो. डिवाइस पर लागू करने के दौरान, ऐप्लिकेशन के लिए दिखाए गए Holo थीम एट्रिब्यूट में बदलाव नहीं किया जाना चाहिए [संसाधन, 25].

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

    3.8.6. लाइव वॉलपेपर

    Android, कॉम्पोनेंट टाइप और उससे जुड़े एपीआई और लाइफ़साइकल तय करता है. इससे ऐप्लिकेशन, असली उपयोगकर्ता को एक या एक से ज़्यादा "लाइव वॉलपेपर" दिखा सकते हैं [संसाधन, 26]. लाइव वॉलपेपर, ऐनिमेशन, पैटर्न या ऐसी ही इमेज होती हैं जिनमें इनपुट की सुविधाएं सीमित होती हैं. ये अन्य ऐप्लिकेशन के पीछे, वॉलपेपर के तौर पर दिखती हैं.

    किसी हार्डवेयर को लाइव वॉलपेपर को भरोसेमंद तरीके से चलाने की क्षमता वाला माना जाता है, अगर वह सभी लाइव वॉलपेपर को बिना किसी पाबंदी के, सही फ़्रेमरेट पर चला सकता है. साथ ही, इससे दूसरे ऐप्लिकेशन पर कोई बुरा असर नहीं पड़ता. अगर हार्डवेयर की सीमाओं की वजह से वॉलपेपर और/या ऐप्लिकेशन क्रैश हो जाते हैं, ठीक से काम नहीं करते हैं, सीपीयू या बैटरी की ज़्यादा खपत करते हैं या बहुत कम फ़्रेम रेट पर चलते हैं, तो माना जाता है कि हार्डवेयर पर लाइव वॉलपेपर नहीं चल सकता. उदाहरण के लिए, कुछ लाइव वॉलपेपर अपने कॉन्टेंट को रेंडर करने के लिए, Open GL 1.0 या 2.0 के कॉन्टेक्स्ट का इस्तेमाल कर सकते हैं. लाइव वॉलपेपर, ऐसे हार्डवेयर पर ठीक से काम नहीं करेगा जो एक से ज़्यादा OpenGL कॉन्टेक्स्ट के साथ काम नहीं करता. ऐसा इसलिए, क्योंकि लाइव वॉलपेपर में OpenGL कॉन्टेक्स्ट का इस्तेमाल करने से, उन दूसरे ऐप्लिकेशन के साथ समस्या आ सकती है जो OpenGL कॉन्टेक्स्ट का इस्तेमाल करते हैं.

    ऊपर बताए गए तरीके से लाइव वॉलपेपर चलाने वाले डिवाइसों को, लाइव वॉलपेपर की सुविधा लागू करनी चाहिए. जिन डिवाइसों पर ऊपर बताए गए तरीके से लाइव वॉलपेपर ठीक से काम नहीं करते उन्हें लाइव वॉलपेपर की सुविधा नहीं देनी चाहिए.

    3.8.7. हाल ही में इस्तेमाल किए गए ऐप्लिकेशन का डिसप्ले

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

    3.8.8. इनपुट मैनेजमेंट की सेटिंग

    Android 4.2 में इनपुट मैनेजमेंट इंजन के लिए सहायता शामिल है. Android 4.2 के एपीआई की मदद से, कस्टम ऐप्लिकेशन आईएमई, उपयोगकर्ता के हिसाब से सेटिंग तय कर सकते हैं. डिवाइस पर लागू करने के लिए, यह ज़रूरी है कि उपयोगकर्ता को IME की सेटिंग को ऐक्सेस करने का तरीका हमेशा उपलब्ध हो. ऐसा तब ज़रूरी है, जब उपयोगकर्ता सेटिंग देने वाला कोई IME डिवाइस पर दिख रहा हो.

    3.8.9. लॉक और होम स्क्रीन विजेट

    Android 4.2 में, ऐप्लिकेशन विजेट की सुविधा शामिल है. उपयोगकर्ता, इन विजेट को होम स्क्रीन या लॉक स्क्रीन में जोड़ सकते हैं. ज़्यादा जानकारी के लिए, Android SDK दस्तावेज़ [संसाधन, 69] में ऐप्लिकेशन विजेट के डिज़ाइन से जुड़े दिशा-निर्देश देखें. ऐप्लिकेशन विजेट की मदद से, नई गतिविधि लॉन्च किए बिना ऐप्लिकेशन के डेटा और सेवाओं को तुरंत ऐक्सेस किया जा सकता है. विजेट, होम स्क्रीन या लॉक स्क्रीन पर इस्तेमाल किए जा सकते हैं. इसके लिए, विजेट में android:widgetCategory मेनिफ़ेस्ट टैग का इस्तेमाल किया जाता है. इससे सिस्टम को पता चलता है कि विजेट को कहां रखा जा सकता है. खास तौर पर, डिवाइस पर लागू किए गए टूल को इन ज़रूरी शर्तों को पूरा करना होगा.

    • डिवाइस में, होम स्क्रीन पर ऐप्लिकेशन विजेट काम करने चाहिए.
    • डिवाइस पर लॉक स्क्रीन की सुविधा काम करनी चाहिए. अगर डिवाइस में लॉक स्क्रीन की सुविधा काम करती है, तो डिवाइस में लॉक स्क्रीन पर ऐप्लिकेशन विजेट काम करने चाहिए.

    3.8.10. लॉक स्क्रीन पर मीडिया को रिमोट कंट्रोल से चलाना

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

    3.8.11. स्वप्न

    Android 4.2 में, ड्रीम [संसाधन, 76] नाम के इंटरैक्टिव स्क्रीनसेवर की सुविधा शामिल है. Dreams की मदद से, उपयोगकर्ता चार्जिंग में लगे डिवाइस के कुछ समय से इस्तेमाल में न होने या डेस्क डॉक में डॉक किए जाने पर, ऐप्लिकेशन के साथ इंटरैक्ट कर सकते हैं. डिवाइस पर लागू करने के लिए, इसमें Dreams की सुविधा का होना ज़रूरी है. साथ ही, उपयोगकर्ताओं को Dreams को कॉन्फ़िगर करने के लिए सेटिंग का विकल्प भी देना होगा.

    3.9 डिवाइस का एडमिन ऐक्सेस

    Android 4.2 में ऐसी सुविधाएं शामिल हैं जिनकी मदद से, सुरक्षा के बारे में जानकारी रखने वाले ऐप्लिकेशन, सिस्टम लेवल पर डिवाइस मैनेजमेंट फ़ंक्शन कर सकते हैं. जैसे, Android डिवाइस मैनेजमेंट एपीआई [संसाधन, 27] की मदद से, पासवर्ड की नीतियों को लागू करना या डिवाइस का डेटा रिमोट तौर पर मिटाना. डिवाइस पर लागू करने के लिए, DevicePolicyManager क्लास [संसाधन, 28] को लागू करना ज़रूरी है. साथ ही, Android SDK टूल के दस्तावेज़ [संसाधन, 27] में बताई गई, डिवाइस को मैनेज करने से जुड़ी सभी नीतियों के साथ काम करना चाहिए.

    ध्यान दें: ऊपर बताई गई कुछ ज़रूरी शर्तों को Android 4.2 के लिए "चाहिए" के तौर पर बताया गया है. हालांकि, लॉक स्क्रीन की सुविधा वाले डिवाइसों को लॉक स्क्रीन पर विजेट मैनेज करने के लिए, डिवाइस की नीतियों का पालन करना ज़रूरी है. इस बारे में Android SDK के दस्तावेज़ [संसाधन, 27] में बताया गया है.

    ध्यान दें: ऊपर बताई गई कुछ ज़रूरी शर्तों को Android 4.2 के लिए "इसका होना ज़रूरी है" के तौर पर बताया गया है. हालांकि, आने वाले वर्शन के लिए, इन शर्तों को "इसका होना ज़रूरी है" के तौर पर बदलने का प्लान है. इसका मतलब है कि Android 4.2 में ये ज़रूरी शर्तें लागू नहीं होतीं. हालांकि, आने वाले वर्शन में इन शर्तों को लागू करना ज़रूरी होगा. Android 4.2 पर काम करने वाले मौजूदा और नए डिवाइसों के लिए, Android 4.2 में इन ज़रूरी शर्तों को पूरा करना ज़रूरी है. ऐसा न करने पर, आने वाले समय में डिवाइसों को Android के नए वर्शन पर अपग्रेड नहीं किया जा सकेगा.

    3.10 सुलभता

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

    • डिवाइस पर, android.accessibilityservice एपीआई [संसाधन, 30] के ज़रिए, तीसरे पक्ष की सुलभता सेवा के लागू होने की सुविधा होनी चाहिए.
    • डिवाइस पर लागू होने वाले टूल को AccessibilityEvents जनरेट करना ज़रूरी है. साथ ही, इन इवेंट को रजिस्टर किए गए सभी AccessibilityService लागू करने वाले टूल को डिफ़ॉल्ट Android के मुताबिक डिलीवर करना ज़रूरी है.
    • डिवाइस में सुलभता सेवाओं को चालू और बंद करने के लिए, उपयोगकर्ता के ऐक्सेस करने लायक तरीका होना चाहिए. साथ ही, android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS के इंटेंट के जवाब में, यह इंटरफ़ेस दिखाना ज़रूरी है.

    इसके अलावा, डिवाइस पर सुलभता सेवा को लागू करना ज़रूरी है. साथ ही, डिवाइस के सेटअप के दौरान, उपयोगकर्ताओं को सुलभता सेवा को चालू करने का तरीका भी देना चाहिए. सुलभता सेवा को ओपन सोर्स के तौर पर लागू करने के लिए, EyesFree प्रोजेक्ट [संसाधन, 31] उपलब्ध है.

    3.11 लिखाई को बोली में बदलने की सुविधा

    Android 4.2 में ऐसे एपीआई शामिल हैं जिनकी मदद से, ऐप्लिकेशन लिखाई को बोली में बदलने की सुविधा (टीटीएस) का इस्तेमाल कर सकते हैं. साथ ही, सेवा देने वाली कंपनियां, टीटीएस सेवाओं को लागू कर सकती हैं [संसाधन, 32]. डिवाइस पर लागू किए गए एआई को Android के टीटीएस फ़्रेमवर्क से जुड़ी इन ज़रूरी शर्तों को पूरा करना होगा:

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

    4. ऐप्लिकेशन को पैकेज करने की सुविधा के साथ काम करने की क्षमता

    डिवाइस पर, Android ".apk" फ़ाइलें इंस्टॉल और चलानी ज़रूरी हैं. ये फ़ाइलें, आधिकारिक Android SDK [संसाधन, 33] में शामिल "aapt" टूल से जनरेट होती हैं.

    डिवाइसों पर लागू होने वाले वर्शन में, .apk [