<html devsite>
<head>
<title>Android 4.2 Compatibility Definition</title>
<link rel="stylesheet" type="text/css" href="cdd.css"/>
</head>
<body>
<!--
<span style="color: red; font-weight: bold;"><h2>Revision 1</h2></span><br/>
<span style="color: red;">Last updated: October 17, 2012</span>
-->
<p><b><font color="red">Revision 2</font></b><br/>
Last updated: Feb 17, 2013
</p>
<p>Copyright &copy; 2012, Google Inc. All rights reserved.<br/>
<a href="mailto:compatibility@android.com">compatibility@android.com</a>
</p>

<h2> Table of Contents</h2>
<div style="margin-left: 2em;">
  <a href="#section-1">1. Introduction</a><br/>
  <a href="#section-2">2. Resources</a><br/>
  <a href="#section-3">3. Software</a><br/>
  <div style="margin-left: 2em;">
    <a href="#section-3.1">3.1. Managed API Compatibility</a><br/>
    <a href="#section-3.2">3.2. Soft API Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-3.2.1">3.2.1. Permissions</a><br/>
      <a href="#section-3.2.2">3.2.2. Build Parameters</a><br/>
      <a href="#section-3.2.3">3.2.3. Intent Compatibility</a><br/>
      <div style="margin-left: 2em;">
        <a href="#section-3.2.3.1">3.2.3.1. Core Application Intents</a><br/>
        <a href="#section-3.2.3.2">3.2.3.2. Intent Overrides</a><br/>
        <a href="#section-3.2.3.3">3.2.3.3. Intent Namespaces</a><br/>
        <a href="#section-3.2.3.4">3.2.3.4. Broadcast Intents</a><br/>
      </div>
    </div>
    <a href="#section-3.3">3.3. Native API Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-3.3.1">3.3.1 Application Binary Interfaces</a><br/>
    </div>
    <a href="#section-3.4">3.4. Web Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-3.4.1">3.4.1. WebView Compatibility</a><br/>
      <a href="#section-3.4.2">3.4.2. Browser Compatibility</a><br/>
    </div>
    <a href="#section-3.5">3.5. API Behavioral Compatibility</a><br/>
    <a href="#section-3.6">3.6. API Namespaces</a><br/>
    <a href="#section-3.7">3.7. Virtual Machine Compatibility</a><br/>
    <a href="#section-3.8">3.8. User Interface Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-3.8.1">3.8.1. Widgets</a><br/>
      <a href="#section-3.8.2">3.8.2. Notifications</a><br/>
      <a href="#section-3.8.3">3.8.3. Search</a><br/>
      <a href="#section-3.8.4">3.8.4. Toasts</a><br/>
      <a href="#section-3.8.5">3.8.5. Themes</a><br/>
      <a href="#section-3.8.6">3.8.6. Live Wallpapers</a><br/>
      <a href="#section-3.8.7">3.8.7. Recent Application Display</a><br/>
      <a href="#section-3.8.8">3.8.8. Input Management Settings</a><br/>
      <a href="#section-3.8.9">3.8.9. Lock and Home Screen Widgets</a><br/>
      <a href="#section-3.8.10">3.8.10. Lock Screen Media Remote Control</a><br/>
      <a href="#section-3.8.11">3.8.11. Dreams</a><br/>
    </div>
    <a href="#section-3.9">3.9 Device Administration</a><br/>
    <a href="#section-3.10">3.10 Accessibility</a><br/>
    <a href="#section-3.11">3.11 Text-to-Speech</a><br/>
  </div>
  <a href="#section-4">4. Application Packaging Compatibility</a><br/>
  <a href="#section-5">5. Multimedia Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-5.1">5.1. Media Codecs</a><br/>
      <a href="#section-5.2">5.2. Video Encoding</a><br/>
      <a href="#section-5.3">5.3. Video Decoding</a><br/>
      <a href="#section-5.4">5.4. Audio Recording</a><br/>
      <a href="#section-5.5">5.5. Audio Latency</a><br/>
      <a href="#section-5.6">5.6. Network Protocols</a><br/>
    </div>
  <a href="#section-6">6. Developer Tools and Options Compatibility</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-6.1">6.1. Developer Tools</a><br/>
      <a href="#section-6.2">6.2. Developer Options</a><br/>
    </div>
  <a href="#section-7">7. Hardware Compatibility</a><br/>
  <div style="margin-left: 2em;">
    <a href="#section-7.1">7.1. Display and Graphics</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.1.1">7.1.1. Screen Configuration</a><br/>
      <a href="#section-7.1.2">7.1.2. Display Metrics</a><br/>
      <a href="#section-7.1.3">7.1.3. Screen Orientation</a><br/>
      <a href="#section-7.1.4">7.1.4. 2D and 3D Graphics Accleration</a><br/>
      <a href="#section-7.1.5">7.1.5. Legacy Application Compatibility Mode</a><br/>
      <a href="#section-7.1.6">7.1.6. Screen Types</a><br/>
      <a href="#section-7.1.7">7.1.7. Screen Technology</a><br/>
      <a href="#section-7.1.8">7.1.8. External Displays</a><br/>
    </div>
    <a href="#section-7.2">7.2. Input Devices</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.2.1">7.2.1. Keyboard</a><br/>
      <a href="#section-7.2.2">7.2.2. Non-touch Navigation</a><br/>
      <a href="#section-7.2.3">7.2.3. Navigation keys</a><br/>
      <a href="#section-7.2.4">7.2.4. Touchscreen input</a><br/>
    </div>
    <a href="#section-7.3">7.3. Sensors</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.3.1">7.3.1. Accelerometer</a><br/>
      <a href="#section-7.3.2">7.3.2. Magnetometer</a><br/>
      <a href="#section-7.3.3">7.3.3. GPS</a><br/>
      <a href="#section-7.3.4">7.3.4. Gyroscope</a><br/>
      <a href="#section-7.3.5">7.3.5. Barometer</a><br/>
      <a href="#section-7.3.6">7.3.6. Thermometer</a><br/>
      <a href="#section-7.3.7">7.3.7. Photometer</a><br/>
      <a href="#section-7.3.8">7.3.8. Proximity Sensor</a><br/>
    </div>
    <a href="#section-7.4">7.4. Data Connectivity</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.4.1">7.4.1. Telephony</a><br/>
      <a href="#section-7.4.2">7.4.2. IEEE 802.11 (WiFi)</a><br/>
      <div style="margin-left: 2em;">
        <a href="#section-7.4.2.1">7.4.2.1. WiFi Direct</a><br/>
      </div>
      <a href="#section-7.4.3">7.4.3. Bluetooth</a><br/>
      <a href="#section-7.4.4">7.4.4. Near-Field Communications</a><br/>
      <a href="#section-7.4.5">7.4.5. Minimum Network Capability</a><br/>
    </div>
    <a href="#section-7.5">7.5. Cameras</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.5.1">7.5.1. Rear-Facing Camera</a><br/>
      <a href="#section-7.5.2">7.5.2. Front-Facing Camera</a><br/>
      <a href="#section-7.5.3">7.5.3. Camera API Behavior</a><br/>
      <a href="#section-7.5.4">7.5.4. Camera Orientation</a><br/>
    </div>
    <a href="#section-7.6">7.6. Memory and Storage</a><br/>
    <div style="margin-left: 2em;">
      <a href="#section-7.6.1">7.6.1. Minimum Memory and Storage</a><br/>
      <a href="#section-7.6.2">7.6.2. Application Shared Storage</a><br/>
    </div>
    <a href="#section-7.7">7.7. USB</a><br/>
  </div>
  <a href="#section-8">8. Performance Compatibility</a><br/>
  <a href="#section-9">9. Security Model Compatibility</a><br/>
  <div style="margin-left: 2em;">
    <a href="#section-9.1">9.1. Permissions</a><br/>
    <a href="#section-9.2">9.2. UID and Process Isolation</a><br/>
    <a href="#section-9.3">9.3. Filesystem Permissions</a><br/>
    <a href="#section-9.4">9.4. Alternate Execution Environments</a><br/>
    <a href="#section-9.5">9.5. Multi-User Support</a><br/>
    <a href="#section-9.6">9.6. Premium SMS Warning</a><br/>
  </div>
  <a href="#section-10">10. Software Compatibility Testing</a><br/>
  <div style="margin-left: 2em;">
    <a href="#section-10.1">10.1. Compatibility Test Suite</a><br/>
    <a href="#section-10.2">10.2. CTS Verifier</a><br/>
    <a href="#section-10.3">10.3. Reference Applications</a><br/>
  </div>
  <a href="#section-11">11. Updatable Software</a><br/>
  <a href="#section-12">12. Contact Us</a><br/>
  <a href="#appendix-A">Appendix A - Bluetooth Test Procedure</a><br/>
</div>

<div style="page-break-before: always;"></div>

<a name="section-1"></a><h2>1. Introduction</h2>
<p>This document enumerates the requirements that must be met in order for
devices to be compatible with Android 4.2.</p>
<p>The use of "must", "must not", "required", "shall", "shall not", "should",
"should not", "recommended", "may" and "optional" is per the IETF standard
defined in RFC2119 [<a href="#resources01">Resources, 1</a>].</p>
<p>As used in this document, a "device implementer" or "implementer" is a
person or organization developing a hardware/software solution running Android
4.2. A "device implementation" or "implementation" is the hardware/software
solution so developed.</p>
<p>To be considered compatible with Android 4.2, device implementations
MUST meet the requirements presented in this Compatibility Definition,
including any documents incorporated via reference.</p>
<p>Where this definition or the software tests described in <a
href="#section-10">Section 10</a> is silent, ambiguous, or incomplete, it is
the responsibility of the device implementer to ensure compatibility with
existing implementations.</p>
<p>For this reason, the Android Open Source Project [<a
href="#resources03">Resources, 3</a>] is both the reference and preferred
implementation of Android. Device implementers are strongly encouraged to base
their implementations to the greatest extent possible on the "upstream" source
code available from the Android Open Source Project. While some components can
hypothetically be replaced with alternate implementations this practice is
strongly discouraged, as passing the software tests will become substantially
more difficult. It is the implementer's responsibility to ensure full
behavioral compatibility with the standard Android implementation, including
and beyond the Compatibility Test Suite. Finally, note that certain component
substitutions and modifications are explicitly forbidden by this document.</p>
<a name="section-2"></a><h2>2. Resources</h2>
<ol>
<a name="resources01"></a><li>IETF RFC2119 Requirement Levels: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a></li>
<a name="resources02"></a><li>Android Compatibility Program Overview: <a href="http://source.android.com/compatibility/index.html">http://source.android.com/compatibility/index.html</a></li>
<a name="resources03"></a><li>Android Open Source Project: <a href="http://source.android.com/">http://source.android.com/</a></li>
<a name="resources04"></a><li>API definitions and documentation: <a href="http://developer.android.com/reference/packages.html">http://developer.android.com/reference/packages.html</a></li>
<a name="resources05"></a><li>Android Permissions reference: <a href="http://developer.android.com/reference/android/Manifest.permission.html">http://developer.android.com/reference/android/Manifest.permission.html</a></li>
<a name="resources06"></a><li>android.os.Build reference: <a href="http://developer.android.com/reference/android/os/Build.html">http://developer.android.com/reference/android/os/Build.html</a></li>
<a name="resources07"></a><li>Android 4.2 allowed version strings: <a href="http://source.android.com/compatibility/4.2/versions.html">http://source.android.com/compatibility/4.2/versions.html</a></li>
<a name="resources08"></a><li>Renderscript: <a href="http://developer.android.com/guide/topics/graphics/renderscript.html">http://developer.android.com/guide/topics/graphics/renderscript.html</a></li>
<a name="resources09"></a><li>Hardware Acceleration: <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">http://developer.android.com/guide/topics/graphics/hardware-accel.html</a></li>
<a name="resources10"></a><li>android.webkit.WebView class: <a href="http://developer.android.com/reference/android/webkit/WebView.html">http://developer.android.com/reference/android/webkit/WebView.html</a></li>
<a name="resources11"></a><li>HTML5: <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">http://www.whatwg.org/specs/web-apps/current-work/multipage/</a></li>
<a name="resources12"></a><li>HTML5 offline capabilities: <a href="http://dev.w3.org/html5/spec/Overview.html#offline">http://dev.w3.org/html5/spec/Overview.html#offline</a></li>
<a name="resources13"></a><li>HTML5 video tag: <a href="http://dev.w3.org/html5/spec/Overview.html#video">http://dev.w3.org/html5/spec/Overview.html#video</a></li>
<a name="resources14"></a><li>HTML5/W3C geolocation API: <a href="http://www.w3.org/TR/geolocation-API/">http://www.w3.org/TR/geolocation-API/</a></li>
<a name="resources15"></a><li>HTML5/W3C webdatabase API: <a href="http://www.w3.org/TR/webdatabase/">http://www.w3.org/TR/webdatabase/</a></li>
<a name="resources16"></a><li>HTML5/W3C IndexedDB API: <a href="http://www.w3.org/TR/IndexedDB/">http://www.w3.org/TR/IndexedDB/</a></li>
<a name="resources17"></a><li>Dalvik Virtual Machine specification: available in the Android source code, at dalvik/docs</li>
<a name="resources18"></a><li>AppWidgets: <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">http://developer.android.com/guide/practices/ui_guidelines/widget_design.html</a></li>
<a name="resources19"></a><li>Notifications: <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">http://developer.android.com/guide/topics/ui/notifiers/notifications.html</a></li>
<a name="resources20"></a><li>Application Resources: <a href="http://code.google.com/android/reference/available-resources.html">http://code.google.com/android/reference/available-resources.html</a></li>
<a name="resources21"></a><li>Status Bar icon style guide: <a href="http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html">http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html</a></li>
<a name="resources22"></a><li>Search Manager: <a href="http://developer.android.com/reference/android/app/SearchManager.html">http://developer.android.com/reference/android/app/SearchManager.html</a></li>
<a name="resources23"></a><li>Toasts: <a href="http://developer.android.com/reference/android/widget/Toast.html">http://developer.android.com/reference/android/widget/Toast.html</a></li>
<a name="resources24"></a><li>Themes: <a href="http://developer.android.com/guide/topics/ui/themes.html">http://developer.android.com/guide/topics/ui/themes.html</a></li>
<a name="resources25"></a><li>R.style class: <a href="http://developer.android.com/reference/android/R.style.html">http://developer.android.com/reference/android/R.style.html</a></li>
<a name="resources26"></a><li>Live Wallpapers: <a href="http://developer.android.com/resources/articles/live-wallpapers.html">http://developer.android.com/resources/articles/live-wallpapers.html</a></li>
<a name="resources27"></a><li>Android Device Administration: <a href="http://developer.android.com/guide/topics/admin/device-admin.html">http://developer.android.com/guide/topics/admin/device-admin.html</a></li>
<a name="resources28"></a><li>DevicePolicyManager reference: <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html</a></li>
<a name="resources29"></a><li>Android Accessibility Service APIs: <a href="http://developer.android.com/reference/android/accessibilityservice/package-summary.html">http://developer.android.com/reference/android/accessibilityservice/package-summary.html</a></li>
<a name="resources30"></a><li>Android Accessibility APIs: <a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">http://developer.android.com/reference/android/view/accessibility/package-summary.html</a></li>
<a name="resources31"></a><li>Eyes Free project: <a href="http://http://code.google.com/p/eyes-free">http://code.google.com/p/eyes-free</a></li>
<a name="resources32"></a><li>Text-To-Speech APIs: <a href="http://developer.android.com/reference/android/speech/tts/package-summary.html">http://developer.android.com/reference/android/speech/tts/package-summary.html</a></li>
<a name="resources33"></a><li>Reference tool documentation (for adb, aapt, ddms, systrace): <a href="http://developer.android.com/guide/developing/tools/index.html">http://developer.android.com/guide/developing/tools/index.html</a></li>
<a name="resources34"></a><li>Android apk file description: <a href="http://developer.android.com/guide/topics/fundamentals.html">http://developer.android.com/guide/topics/fundamentals.html</a></li>
<a name="resources35"></a><li>Manifest files: <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">http://developer.android.com/guide/topics/manifest/manifest-intro.html</a></li>
<a name="resources36"></a><li>Monkey testing tool: <a href="http://developer.android.com/guide/developing/tools/monkey.html">http://developer.android.com/guide/developing/tools/monkey.html</a></li>
<a name="resources37"></a><li>Android android.content.pm.PackageManager class and Hardware Features List: <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">http://developer.android.com/reference/android/content/pm/PackageManager.html</a></li>
<a name="resources38"></a><li>Supporting Multiple Screens: <a href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html</a></li>
<a name="resources39"></a><li>android.util.DisplayMetrics: <a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">http://developer.android.com/reference/android/util/DisplayMetrics.html</a></li>
<a name="resources40"></a><li>android.content.res.Configuration: <a href="http://developer.android.com/reference/android/content/res/Configuration.html">http://developer.android.com/reference/android/content/res/Configuration.html</a></li>
<a name="resources41"></a><li>android.hardware.SensorEvent: <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">http://developer.android.com/reference/android/hardware/SensorEvent.html</a></li>
<a name="resources42"></a><li>Bluetooth API: <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">http://developer.android.com/reference/android/bluetooth/package-summary.html</a></li>
<a name="resources43"></a><li>NDEF Push Protocol: <a href="http://source.android.com/compatibility/ndef-push-protocol.pdf">http://source.android.com/compatibility/ndef-push-protocol.pdf</a></li>
<a name="resources44"></a><li>MIFARE MF1S503X: <a href="http://www.nxp.com/documents/data_sheet/MF1S503x.pdf">http://www.nxp.com/documents/data_sheet/MF1S503x.pdf</a></li>
<a name="resources45"></a><li>MIFARE MF1S703X: <a href="http://www.nxp.com/documents/data_sheet/MF1S703x.pdf">http://www.nxp.com/documents/data_sheet/MF1S703x.pdf</a></li>
<a name="resources46"></a><li>MIFARE MF0ICU1: <a href="http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf">http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf</a></li>
<a name="resources47"></a><li>MIFARE MF0ICU2: <a href="http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf">http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf</a></li>
<a name="resources48"></a><li>MIFARE AN130511: <a href="http://www.nxp.com/documents/application_note/AN130511.pdf">http://www.nxp.com/documents/application_note/AN130511.pdf</a></li>
<a name="resources49"></a><li>MIFARE AN130411: <a href="http://www.nxp.com/documents/application_note/AN130411.pdf">http://www.nxp.com/documents/application_note/AN130411.pdf</a></li>
<a name="resources50"></a><li>Camera orientation API: <a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)">http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)</a></li>
<a name="resources51"></a><li>Camera: <a href="http://developer.android.com/reference/android/hardware/Camera.html">http://developer.android.com/reference/android/hardware/Camera.html</a></li>
<a name="resources52"></a><li>Android Open Accessories: <a href="http://developer.android.com/guide/topics/usb/accessory.html">http://developer.android.com/guide/topics/usb/accessory.html</a></li>
<a name="resources53"></a><li>USB Host API: <a href="http://developer.android.com/guide/topics/usb/host.html">http://developer.android.com/guide/topics/usb/host.html</a></li>
<a name="resources54"></a><li>Android Security and Permissions reference: <a href="http://developer.android.com/guide/topics/security/security.html">http://developer.android.com/guide/topics/security/security.html</a></li>
<a name="resources55"></a><li>Apps for Android: <a href="http://code.google.com/p/apps-for-android">http://code.google.com/p/apps-for-android</a></li>
<a name="resources56"></a><li>Android DownloadManager: <a href="http://developer.android.com/reference/android/app/DownloadManager.html">http://developer.android.com/reference/android/app/DownloadManager.html</a></li>
<a name="resources57"></a><li>Android File Transfer: <a href="http://www.android.com/filetransfer">http://www.android.com/filetransfer</a></li>
<a name="resources58"></a><li>Android Media Formats: <a href="http://developer.android.com/guide/appendix/media-formats.html">http://developer.android.com/guide/appendix/media-formats.html</a></li>
<a name="resources59"></a><li>HTTP Live Streaming Draft Protocol: <a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-03">http://tools.ietf.org/html/draft-pantos-http-live-streaming-03</a></li>
<a name="resources60"></a><li>NFC Connection Handover: <a href="http://www.nfc-forum.org/specs/spec_list/#conn_handover/">http://www.nfc-forum.org/specs/spec_list/#conn_handover</a></li>
<a name="resources61"></a><li>Bluetooth Secure Simple Pairing Using NFC: <a href="http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf">http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf</a></li>
<a name="resources62"></a><li>Wifi Multicast API: <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html">http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html</a></li>
<a name="resources63"></a><li>Action Assist: <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST</a></li>
<a name="resources64"></a><li>USB Charging Specification: <a href="http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf">http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf</a></li>
<a name="resources65"></a><li>Android Beam: <a href="http://developer.android.com/guide/topics/nfc/nfc.html">http://developer.android.com/guide/topics/nfc/nfc.html</a></li>
<a name="resources66"></a><li>Android USB Audio: <a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO</a></li>
<a name="resources67"></a><li>Android NFC Sharing Settings: <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS">http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS</a></li>
<a name="resources68"></a><li>Wifi Direct (Wifi P2P): <a href="http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html">http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html</a></li>
<a name="resources69"></a><li>Lock and Home Screen Widget: <a href="http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html">http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html</a></li>
<a name="resources70"></a><li>UserManager reference: <a href="http://developer.android.com/reference/android/os/UserManager.html">http://developer.android.com/reference/android/os/UserManager.html</a></li>
<a name="resources71"></a><li>External Storage reference: <a href="http://source.android.com/tech/storage">http://source.android.com/tech/storage</a></li>
<a name="resources72"></a><li>External Storage APIs: <a href="http://developer.android.com/reference/android/os/Environment.html">http://developer.android.com/reference/android/os/Environment.html</a></li>
<a name="resources73"></a><li>SMS Short Code: <a href="http://en.wikipedia.org/wiki/Short_code">http://en.wikipedia.org/wiki/Short_code</a></li>
<a name="resources74"></a><li>Media Remote Control Client: <a href="http://developer.android.com/reference/android/media/RemoteControlClient.html">http://developer.android.com/reference/android/media/RemoteControlClient.html</a></li>
<a name="resources75"></a><li>Display Manager: <a href="http://developer.android.com/reference/android/hardware/display/DisplayManager.html">http://developer.android.com/reference/android/hardware/display/DisplayManager.html</a></li>
<a name="resources76"></a><li>Dreams: <a href="http://developer.android.com/reference/android/service/dreams/DreamService.html">http://developer.android.com/reference/android/service/dreams/DreamService.html</a></li>
<a name="resources77"></a><li>Android Application Development-Related Settings: <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS">http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS</a></li>
</ol>
<a name="resources78"></a><li>Camera: <a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">http://developer.android.com/reference/android/hardware/Camera.Parameters.html</a></li>
<p>Many of these resources are derived directly or indirectly from the Android
4.2 SDK, and will be functionally identical to the information in that SDK's
documentation. In any cases where this Compatibility Definition or the
Compatibility Test Suite disagrees with the SDK documentation, the SDK
documentation is considered authoritative. Any technical details provided in
the references included above are considered by inclusion to be part of this
Compatibility Definition.</p>

<a name="section-3"></a><h2>3. Software</h2>
<a name="section-3.1"></a><h3>3.1. Managed API Compatibility</h3>
<p>The managed (Dalvik-based) execution environment is the primary vehicle for
Android applications. The Android application programming interface (API) is
the set of Android platform interfaces exposed to applications running in the
managed VM environment. Device implementations MUST provide complete
implementations, including all documented behaviors, of any documented API
exposed by the Android 4.2 SDK [<a href="#resources04">Resources, 4</a>].</p>
<p>Device implementations MUST NOT omit any managed APIs, alter API interfaces
or signatures, deviate from the documented behavior, or include no-ops, except
where specifically allowed by this Compatibility Definition.</p>
<p>This Compatibility Definition permits some types of hardware for which
Android includes APIs to be omitted by device implementations. In such cases,
the APIs MUST still be present and behave in a reasonable way. See
<a href="#section-7">Section 7</a> for specific requirements for this scenario.
</p>

<a name="section-3.2"></a><h3>3.2. Soft API Compatibility</h3>
<p>In addition to the managed APIs from Section 3.1, Android also includes a
significant runtime-only "soft" API, in the form of such things such as
Intents, permissions, and similar aspects of Android applications that cannot
be enforced at application compile time.</p>
<a name="section-3.2.1"></a><h4>3.2.1. Permissions</h4>
<p>Device implementers MUST support and enforce all permission constants as
documented by the Permission reference page [<a
href="#resources05">Resources, 5</a>]. Note that Section 10 lists additional
requirements related to the Android security model.</p>
<a name="section-3.2.2"></a><h4>3.2.2. Build Parameters</h4>
<p>The Android APIs include a number of constants on the <code>android.os.Build</code>
class [<a href="#resources06">Resources, 6</a>] that are intended to describe
the current device. To provide consistent, meaningful values across device
implementations, the table below includes additional restrictions on the
formats of these values to which device implementations MUST conform.</p>
<table>
<tbody>
<tr>
<td><b>Parameter</b></td>
<td><b>Comments</b></td>
</tr>
<tr>
<td>android.os.Build.VERSION.RELEASE</td>
<td>The version of the currently-executing Android system, in human-readable
format. This field MUST have one of the string values defined in [<a
href="#resources07">Resources, 7</a>].</td>
</tr>
<tr>
<td>android.os.Build.VERSION.SDK</td>
<td>The version of the currently-executing Android system, in a format
accessible to third-party application code. For Android 4.2, this
field MUST have the integer value 17.</td>
</tr>
<tr>
<td>android.os.Build.VERSION.SDK_INT</td>
<td>The version of the currently-executing Android system, in a format
accessible to third-party application code. For Android 4.2, this
field MUST have the integer value 17.</td>
</tr>
<tr>
<td>android.os.Build.VERSION.INCREMENTAL</td>
<td>A value chosen by the device implementer designating the specific build of
the currently-executing Android system, in human-readable format. This value
MUST NOT be re-used for different builds made available to end users. A typical use
of this field is to indicate which build number or source-control change
identifier was used to generate the build. There are no requirements on the
specific format of this field, except that it MUST NOT be null or the empty
string ("").</td>
</tr>
<tr>
<td>android.os.Build.BOARD</td>
<td>A value chosen by the device implementer identifying the specific internal
hardware used by the device, in human-readable format. A possible use of this
field is to indicate the specific revision of the board powering the device.
The value of this field MUST be encodable as 7-bit ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.BRAND</td>
<td>A value chosen by the device implementer identifying the name of the
company, organization, individual, etc. who produced the device, in
human-readable format. A possible use of this field is to indicate the OEM
and/or carrier who sold the device. The value of this field MUST be
encodable as 7-bit ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.
</td>
</tr>
<tr>
<td>android.os.Build.CPU_ABI</td>
<td>The name of the instruction set (CPU type + ABI convention) of native code.
See <a href="#section-3.3">Section 3.3: Native API Compatibility</a>.
</td>
</tr>
<tr>
<td>android.os.Build.CPU_ABI2</td>
<td>The name of the second instruction set (CPU type + ABI convention) of native code.
See <a href="#section-3.3">Section 3.3: Native API Compatibility</a>.
</td>
</tr>
<tr>
<td>android.os.Build.DEVICE</td>
<td>A value chosen by the device implementer identifying the specific
configuration or revision of the body (sometimes called "industrial design")
of the device. The value of this field MUST be encodable as 7-bit ASCII and
match the regular expression <code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.FINGERPRINT</td>
<td>A string that uniquely identifies this build. It SHOULD be reasonably
human-readable. It MUST follow this template:
<br/><code>$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)</code><br/>
For example:
<br/><code>acme/mydevice/generic:4.2/JRN53/3359:userdebug/test-keys</code><br/>
The fingerprint MUST NOT include whitespace characters. If other fields included in the
template above have whitespace characters, they MUST be replaced in the build
fingerprint with another character, such as the underscore ("_") character.
The value of this field MUST be encodable as 7-bit ASCII.</td>
</tr>
<tr>
<td>android.os.Build.HARDWARE</td>
<td>The name of the hardware (from the kernel command line or /proc).  It SHOULD be
reasonably human-readable. The value of this field MUST be encodable as 7-bit ASCII and
match the regular expression <code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.HOST</td>
<td>A string that uniquely identifies the host the build was built on, in
human readable format. There are no requirements on the specific format of
this field, except that it MUST NOT be null or the empty string ("").</td>
</tr>
<tr>
<td>android.os.Build.ID</td>
<td>An identifier chosen by the device implementer to refer to a specific
release, in human readable format. This field can be the same as
android.os.Build.VERSION.INCREMENTAL, but SHOULD be a value sufficiently
meaningful for end users to distinguish between software builds. The value of
this field MUST be encodable as 7-bit ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.
</td>
</tr>
<tr>
<td>android.os.Build.MANUFACTURER</td>
<td>The trade name of the Original Equipment Manufacturer (OEM) of the product.
There are no requirements on the specific format of this field, except that it
MUST NOT be null or the empty string ("").</td>
</tr>
<tr>
<td>android.os.Build.MODEL</td>
<td>A value chosen by the device implementer containing the name of the device
as known to the end user. This SHOULD be the same name under which the device
is marketed and sold to end users. There are no requirements on the specific
format of this field, except that it MUST NOT be null or the empty string
("").</td>
</tr>
<tr>
<td>android.os.Build.PRODUCT</td>
<td>A value chosen by the device implementer containing the development name
or code name of the product (SKU). MUST be human-readable, but is not necessarily
intended for view by end users. The value of this field MUST be encodable as 7-bit
ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.SERIAL</td>
<td>A hardware serial number, if available. The value of this field MUST be encodable
as 7-bit ASCII and match the regular expression
<code>"^([a-zA-Z0-9]{0,20})$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.TAGS</td>
<td>A comma-separated list of tags chosen by the device implementer that
further distinguish the build. For example, "unsigned,debug". The value of
this field MUST be encodable as 7-bit ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.TIME</td>
<td>A value representing the timestamp of when the build occurred.</td>
</tr>
<tr>
<td>android.os.Build.TYPE</td>
<td>A value chosen by the device implementer specifying the runtime
configuration of the build. This field SHOULD have one of the values
corresponding to the three typical Android runtime configurations: "user",
"userdebug", or "eng". The value of this field MUST be
encodable as 7-bit ASCII and match the regular expression
<code>"^[a-zA-Z0-9.,_-]+$"</code>.</td>
</tr>
<tr>
<td>android.os.Build.USER</td>
<td>A name or user ID of the user (or automated user) that generated the
build. There are no requirements on the specific format of this field, except
that it MUST NOT be null or the empty string ("").</td>
</tr>
</tbody>
</table>
<a name="section-3.2.3"></a><h4>3.2.3. Intent Compatibility</h4>
<p>
Device implementations MUST honor Android's loose-coupling Intent system, as
described in the sections below. By "honored", it is meant that the device
implementer MUST provide an Android Activity or Service that specifies a
matching Intent filter and binds to and implements correct behavior for each
specified Intent pattern.</p>
<a name="section-3.2.3.1"></a><h4>3.2.3.1. Core Application Intents</h4>
<p>The Android upstream project defines a number of core applications, such as
contacts, calendar, photo gallery, music player, and so on. Device implementers
MAY replace these applications with alternative versions.</p>
<p>However, any such alternative versions MUST honor the same Intent patterns
provided by the upstream project. For example, if a device contains an
alternative music player, it must still honor the Intent pattern issued by
third-party applications to pick a song.</p>
<p>The following applications are considered core Android system
applications:</p>
<ul>
<li>Desk Clock</li>
<li>Browser</li>
<li>Calendar</li>
<li>Contacts</li>
<!--<li>Email</li>-->
<li>Gallery</li>
<li>GlobalSearch</li>
<li>Launcher</li>
<!-- <li>LivePicker (that is, the Live Wallpaper picker application; MAY be omitted
if the device does not support Live Wallpapers, per Section 3.8.5.)</li> -->
<!-- <li>Messaging (AKA "Mms")</li> -->
<li>Music</li>
<!-- <li>Phone</li> -->
<li>Settings</li>
<!-- <li>SoundRecorder</li> -->
</ul>
<p>The core Android system applications include various Activity, or Service
components that are considered "public".  That is, the attribute
"android:exported" may be absent, or may have the value "true".</p>
<p>For every Activity or Service defined
in one of the core Android system apps that is not marked as non-public via an
android:exported attribute with the value "false", device implementations MUST
include a compontent of the same type implementing the same Intent filter
patterns as the core Android system app.</p>
<p>In other words, a device implementation MAY replace core Android system
apps; however, if it does, the device implementation MUST support all Intent
patterns defined by each core Android system app being replaced.</p>
<a name="section-3.2.3.2"></a><h4>3.2.3.2. Intent Overrides</h4>
<p>As Android is an extensible platform, device implementations MUST allow each
Intent pattern referenced in Section 3.2.3.2 to be overridden by third-party
applications. The upstream Android open source implementation allows this by
default; device implementers MUST NOT attach special privileges to system
applications' use of these Intent patterns, or prevent third-party
applications from binding to and assuming control of these patterns. This
prohibition specifically includes but is not limited to disabling the
"Chooser" user interface which allows the user to select between multiple
applications which all handle the same Intent pattern.</p>
<p>However, device implementations MAY provide default activities for specific
URI patterns (eg. http://play.google.com) if the default activity provides a
more specific filter for the data URI. For example, an intent filter specifying
the data URI "http://www.android.com" is more specific than the browser filter
for "http://". Device implementations MUST provide a user interface for users
to modify the default activity for intents.</p>

<a name="section-3.2.3.3"></a><h4>3.2.3.3. Intent Namespaces</h4>
<p>Device implementations MUST NOT include any Android component that honors any
new Intent or Broadcast Intent patterns using an ACTION, CATEGORY, or other
key string in the android.* or com.android.* namespace. Device implementers
MUST NOT include any Android components that honor any new Intent or Broadcast
Intent patterns using an ACTION, CATEGORY, or other key string in a package
space belonging to another organization. Device implementers MUST NOT alter or
extend any of the Intent patterns used by the core apps listed in Section
3.2.3.1. Device implementations MAY include Intent patterns using
namespaces clearly and obviously associated with their own organization.</p>
<p>This prohibition is analogous to that specified for Java language classes
in Section 3.6.</p>
<a name="section-3.2.3.4"></a><h4>3.2.3.4. Broadcast Intents</h4>
<p>Third-party applications rely on the platform to broadcast certain Intents
to notify them of changes in the hardware or software environment.
Android-compatible devices MUST broadcast the public broadcast Intents in
response to appropriate system events. Broadcast Intents are described in the
SDK documentation.</p>

<a name="section-3.3"></a><h3>3.3. Native API Compatibility</h3>
<a name="section-3.3.1"></a><h4>3.3.1 Application Binary Interfaces</h4>
<p>Managed code running in Dalvik can call into native code provided in the
application .apk file as an ELF .so file compiled for the appropriate device
hardware architecture. As native code is highly dependent on the underlying
processor technology, Android defines a number of Application Binary
Interfaces (ABIs) in the Android NDK, in the file
<code>docs/CPU-ARCH-ABIS.html</code>. If a device implementation is compatible
with one or more defined ABIs, it SHOULD implement compatibility with the
Android NDK, as below.</p>
<p>If a device implementation includes support for an Android ABI, it:</p>
<ul>
<li>MUST include support for code running in the managed environment to call
into native code, using the standard Java Native Interface (JNI)
semantics.</li>
<li>MUST be source-compatible (i.e. header compatible) and binary-compatible
(for the ABI) with each required library in the list below</li>
<li>MUST accurately report the native Application Binary Interface (ABI)
supported by the device, via the <code>android.os.Build.CPU_ABI</code>
API</li>
<li>MUST report only those ABIs documented in the latest version of the
Android NDK, in the file <code>docs/CPU-ARCH-ABIS.txt</code></li>
<li>SHOULD be built using the source code and header files available in the
upstream Android open source project</li>
</ul>
<p>The following native code APIs MUST be available to apps that include
native code:</p>
<ul>
<li>libc (C library)</li>
<li>libm (math library)</li>
<li>Minimal support for C++</li>
<li>JNI interface</li>
<li>liblog (Android logging)</li>
<li>libz (Zlib compression)</li>
<li>libdl (dynamic linker)</li>
<li>libGLESv1_CM.so (OpenGL ES 1.0)</li>
<li>libGLESv2.so (OpenGL ES 2.0)</li>
<li>libEGL.so (native OpenGL surface management)</li>
<li>libjnigraphics.so</li>
<li>libOpenSLES.so (OpenSL ES 1.0.1 audio support)</li>
<li>libOpenMAXAL.so (OpenMAX AL 1.0.1 support)</li>
<li>libandroid.so (native Android activity support)</li>
<li>Support for OpenGL, as described below</li>
</ul>
<p>Note that future releases of the Android NDK may introduce support for
additional ABIs. If a device implementation is not compatible with an existing
predefined ABI, it MUST NOT report support for any ABI at all.</p>
<p>Native code compatibility is challenging. For this reason, it should be
repeated that device implementers are VERY strongly encouraged to use the
upstream implementations of the libraries listed above to help ensure
compatibility.</p>

<a name="section-3.4"></a><h3>3.4. Web Compatibility</h3>
<a name="section-3.4.1"></a><h4>3.4.1. WebView Compatibility</h4>
<p>The Android Open Source implementation uses the WebKit rendering engine to
implement the <code>android.webkit.WebView</code>. Because it is not feasible
to develop a comprehensive test suite for a web rendering system, device
implementers MUST use the specific upstream build of WebKit in the WebView
implementation.  Specifically:</p>
<ul>
<li>Device implementations' <code>android.webkit.WebView</code>
implementations MUST be based on the 534.30 WebKit build from the upstream
Android Open Source tree for Android 4.2. This build includes a specific set
of functionality and security fixes for the WebView. Device implementers MAY
include customizations to the WebKit implementation; however, any such
customizations MUST NOT alter the behavior of the WebView, including rendering
behavior.</li>
<li>The user agent string reported by the WebView MUST be in this format:<br/>
    <code>Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30</code>
  <ul>
  <li>The value of the $(VERSION) string MUST be the same as the value for <code>android.os.Build.VERSION.RELEASE</code></li>
  <li>The value of the $(LOCALE) string SHOULD follow the ISO conventions for country code and language, and SHOULD refer to the current configured locale of the device</li>
  <li>The value of the $(MODEL) string MUST be the same as the value for <code>android.os.Build.MODEL</code></li>
  <li>The value of the $(BUILD) string MUST be the same as the value for <code>android.os.Build.ID</code></li>
  <li>Device implementations MAY omit <code>Mobile</code> in the user agent string</li>
  </ul>
</li>
</ul>
<p>The WebView component SHOULD include support for as much of HTML5 [<a
href="#resources11">Resources, 11</a>] as possible.
Minimally, device implementations MUST support each of these APIs associated
with HTML5 in the WebView:</p>
<ul>
<li>application cache/offline operation [<a href="#resources12">Resources, 12</a>]</li>
<li>the &lt;video&gt; tag [<a href="#resources13">Resources, 13</a>]</li>
<li>geolocation [<a href="#resources14">Resources, 14</a>]</li>
</ul>
<p>Additionally, device implementations MUST support the HTML5/W3C webstorage
API [<a href="#resources15">Resources, 15</a>], and SHOULD support the
HTML5/W3C IndexedDB API [<a href="#resources16">Resources, 16</a>]. <i>Note
that as the web development standards bodies are transitioning to favor
IndexedDB over webstorage, IndexedDB is expected to become a required
component in a future version of Android.</i></p>
<p>HTML5 APIs, like all JavaScript APIs, MUST be disabled by default in a
WebView, unless the developer explicitly enables them via the usual Android
APIs.</p>

<a name="section-3.4.2"></a><h4>3.4.2. Browser Compatibility</h4>
<p>Device implementations MUST include a standalone Browser application for
general user web browsing. The standalone Browser MAY be based on a
browser technology other than WebKit. However, even if an alternate Browser
application is used, the <code>android.webkit.WebView</code> component
provided to third-party applications MUST be based on WebKit, as described in
Section 3.4.1.</p>
<p>Implementations MAY ship a custom user agent string in the standalone
Browser application.</p>
<p>The standalone Browser application (whether based on the upstream
WebKit Browser application or a third-party replacement) SHOULD include support
for as much of HTML5 [<a href="#resources11">Resources, 11</a>] as possible.
Minimally, device implementations MUST support each of these APIs associated
with HTML5:</p>
<ul>
<li>application cache/offline operation [<a href="#resources12">Resources, 12</a>]</li>
<li>the &lt;video&gt; tag [<a href="#resources13">Resources, 13</a>]</li>
<li>geolocation [<a href="#resources14">Resources, 14</a>]</li>
</ul>
<p>Additionally, device implementations MUST support the HTML5/W3C webstorage
API [<a href="#resources15">Resources, 15</a>], and SHOULD support the
HTML5/W3C IndexedDB API [<a href="#resources16">Resources, 16</a>]. <i>Note
that as the web development standards bodies are transitioning to favor
IndexedDB over webstorage, IndexedDB is expected to become a required
component in a future version of Android.</i></p>

<a name="section-3.5"></a><h3>3.5. API Behavioral Compatibility</h3>
<p>The behaviors of each of the API types (managed, soft, native, and web)
must be consistent with the preferred implementation of the upstream Android
open source project [<a href="#resources03">Resources, 3</a>]. Some specific areas
of compatibility are:</p>
<ul>
<li>Devices MUST NOT change the behavior or semantics of a standard Intent</li>
<li>Devices MUST NOT alter the lifecycle or lifecycle semantics of a
    particular type of system component (such as Service, Activity,
    ContentProvider, etc.)</li>
<li>Devices MUST NOT change the semantics of a standard permission</li>
</ul>
<p>The above list is not comprehensive. The Compatibility Test Suite (CTS)
tests significant portions of the platform for behavioral compatibility, but
not all. It is the responsibility of the implementer to ensure behavioral
compatibility with the Android Open Source Project.  For this reason, device
implementers SHOULD use the source code available via the Android Open Source
Project where possible, rather than re-implement significant parts of the
system.</p>


<a name="section-3.6"></a><h3>3.6. API Namespaces</h3>
<p>Android follows the package and class namespace conventions defined by the
Java programming language. To ensure compatibility with third-party
applications, device implementers MUST NOT make any prohibited modifications
(see below) to these package namespaces:</p>
<ul>
<li>java.*</li>
<li>javax.*</li>
<li>sun.*</li>
<li>android.*</li>
<li>com.android.*</li>
</ul>
<p>Prohibited modifications include:</p>
<ul>
<li>Device implementations MUST NOT modify the publicly exposed APIs on the
Android platform by changing any method or class signatures, or by removing
classes or class fields.</li>
<li>Device implementers MAY modify the underlying implementation of the APIs,
but such modifications MUST NOT impact the stated behavior and Java-language
signature of any publicly exposed APIs.</li>
<li>Device implementers MUST NOT add any publicly exposed elements (such as
classes or interfaces, or fields or methods to existing classes or interfaces)
to the APIs above.</li>
</ul>
<p>A "publicly exposed element" is any construct which is not decorated with
the "@hide" marker as used in the upstream Android source code. In other
words, device implementers MUST NOT expose new APIs or alter existing APIs in
the namespaces noted above. Device implementers MAY make internal-only
modifications, but those modifications MUST NOT be advertised or otherwise
exposed to developers.</p>
<p>Device implementers MAY add custom APIs, but any such APIs MUST NOT be in a
namespace owned by or referring to another organization. For instance, device
implementers MUST NOT add APIs to the com.google.* or similar namespace; only
Google may do so. Similarly, Google MUST NOT add APIs to other companies'
namespaces. Additionally, if a device implementation includes custom APIs
outside the standard Android namespace, those APIs MUST be packaged in an
Android shared library so that only apps that explicitly use them (via the
<code>&lt;uses-library&gt;</code> mechanism) are affected by the increased
memory usage of such APIs.</p>
<p>If a device implementer proposes to improve one of the package namespaces
above (such as by adding useful new functionality to an existing API, or
adding a new API), the implementer SHOULD visit source.android.com and begin
the process for contributing changes and code, according to the information on
that site.</p>
<p>Note that the restrictions above correspond to standard conventions for
naming APIs in the Java programming language; this section simply aims to
reinforce those conventions and make them binding through inclusion in this
compatibility definition.</p>

<a name="section-3.7"></a><h3>3.7. Virtual Machine Compatibility</h3>
<p>Device implementations MUST support the full Dalvik Executable (DEX)
bytecode specification and Dalvik Virtual Machine semantics [<a
href="#resources17">Resources, 17</a>].</p>
<p>Device implementations MUST configure Dalvik to allocate memory in
accordance with the upstream Android platform, and as specified by the following
table.  (See <a href="#section-7.1.1">Section 7.1.1</a> for screen size and screen
density definitions.)</p>

<p>Note that memory values specified below are considered minimum values,
and device implementations MAY allocate more memory per application.</p>
<table>
<tbody>
<tr>
<td><b>Screen Size</b></td>
<td><b>Screen Density</b></td>
<td><b>Application Memory</b></td>
</tr>
<tr>
<td>small / normal / large</td>
<td>ldpi / mdpi</td>
<td>16MB</td>
</tr>
<tr>
<td>small / normal / large</td>
<td>tvdpi / hdpi</td>
<td>32MB</td>
</tr>
<tr>
<td>small / normal / large</td>
<td>xhdpi</td>
<td>64MB</td>
</tr>
<tr>
<td>xlarge</td>
<td>mdpi</td>
<td>32MB</td>
</tr>
<tr>
<td>xlarge</td>
<td>tvdpi / hdpi</td>
<td>64MB</td>
</tr>
<tr>
<td>xlarge</td>
<td>xhdpi</td>
<td>128MB</td>
</tr>
</tbody>
</table>

<a name="section-3.8"></a><h3>3.8. User Interface Compatibility</h3>
<a name="section-3.8.1"></a><h4>3.8.1. Widgets</h4>
<p>Android defines a component type and corresponding API and lifecycle that
allows applications to expose an "AppWidget" to the end user [<a
href="#resources18">Resources, 18</a>].
The Android Open Source reference release includes a Launcher application that
includes user interface affordances allowing the user to add, view, and remove
AppWidgets from the home screen.</p>
<p>Device implementations MAY substitute an alternative to the reference Launcher
(i.e. home screen).  Alternative Launchers SHOULD include built-in support for
AppWidgets, and expose user interface affordances to add, configure, view, and
remove AppWidgets directly within the Launcher. Alternative Launchers MAY omit
these user interface elements; however, if they are omitted, the device
implementation MUST provide a separate application accessible from the Launcher
that allows users to add, configure, view, and remove AppWidgets.</p>
<p>Device implementations MUST be capable of rendering widgets that are 4 x 4
in the standard grid size. (See the App Widget Design Guidelines in the Android
SDK documentation [<a href="#resources18">Resources, 18</a>] for details.</p>
<p>
<a name="section-3.8.2"></a><h4>3.8.2. Notifications</h4>
<p>Android includes APIs that allow developers to notify users of notable
events [<a href="#resources19">Resources, 19</a>], using hardware and software
features of the device.</p>
<p>Some APIs allow applications to perform notifications or attract attention
using hardware, specifically sound, vibration, and light. Device implementations
MUST support notifications that use hardware features, as described in the SDK
documentation, and to the extent possible with the device implementation
hardware. For instance, if a device implementation includes a vibrator, it
MUST correctly implement the vibration APIs. If a device implementation lacks
hardware, the corresponding APIs MUST be implemented as no-ops. Note that this
behavior is further detailed in <a href="#section-7">Section 7.</a></p>
<p>Additionally, the implementation MUST correctly render all resources
(icons, sound files, etc.) provided for in the APIs [<a
href="#resources20">Resources, 20</a>], or in the
Status/System Bar icon style guide [<a href="#resources21">Resources, 21</a>].
Device implementers MAY provide an alternative user experience for
notifications than that provided by the reference Android Open Source
implementation; however, such alternative notification systems MUST support
existing notification resources, as above.</p>
<p>Android 4.2 includes support for rich notifications, such as interactive
Views for ongoing notifications. Device implementations MUST properly display
and execute rich notifications, as documented in the Android APIs.</p>
<a name="section-3.8.3"></a><h4>3.8.3. Search</h4>
<p>Android includes APIs [<a href="#resources22">Resources, 22</a>] that allow
developers to incorporate search into their applications, and expose their
application's data into the global system search. Generally speaking, this
functionality consists of a single, system-wide user interface that allows users
to enter queries, displays suggestions as users type, and displays results. The
Android APIs allow developers to reuse this interface to provide search within
their own apps, and allow developers to supply results to the common global
search user interface.</p>
<p>Device implementations MUST include a single, shared, system-wide search
user interface capable of real-time suggestions in response to user input.
Device implementations MUST implement the APIs that allow developers to reuse
this user interface to provide search within their own applications. Device
implementations MUST implement the APIs that allow third-party applications to
add suggestions to the search box when it is run in global search mode. If no
third-party applications are installed that make use of this functionality,
the default behavior SHOULD be to display web search engine results and
suggestions.</p>
<a name="section-3.8.4"></a><h4>3.8.4. Toasts</h4>
<p>Applications can use the "Toast" API (defined in [<a
href="#resources23">Resources, 23</a>]) to
display short non-modal strings to the end user, that disappear after a brief
period of time. Device implementations MUST display Toasts from applications
to end users in some high-visibility manner.</p>

<a name="section-3.8.5"></a><h4>3.8.5. Themes</h4>
<p>Android provides "themes" as a mechanism for applications to apply styles
across an entire Activity or application. Android 4.2 includes a "Holo"
or "holographic" theme as a set of defined styles for application developers to
use if they want to match the Holo theme look and feel as defined by the Android
SDK [<a href="#resources24">Resources, 24</a>]. Device implementations MUST NOT
alter any of the Holo theme attributes exposed to applications
[<a href="#resources25">Resources, 25</a>].</p>
<p>Android 4.2 includes a new "Device Default" theme as a set of defined
styles for application developers to use if they want to match the look and feel
of the device theme as defined by the device implementer. Device implementations
MAY modify the DeviceDefault theme attributes exposed to applications
[<a href="#resources25">Resources, 25</a>].</p>

<a name="section-3.8.6"></a><h4>3.8.6. Live Wallpapers</h4>
<p>Android defines a component type and corresponding API and lifecycle that
allows applications to expose one or more "Live Wallpapers" to the end user
[<a href="#resources26">Resources, 26</a>]. Live Wallpapers are animations,
patterns, or similar images with limited input capabilities that display as a
wallpaper, behind other applications.</p>
<p>Hardware is considered capable of reliably running live wallpapers if it
can run all live wallpapers, with no limitations on functionality, at a
reasonable framerate with no adverse affects on other applications. If
limitations in the hardware cause wallpapers and/or applications to crash,
malfunction, consume excessive CPU or battery power, or run at unacceptably
low frame rates, the hardware is considered incapable of running live
wallpaper. As an example, some live wallpapers may use an Open GL 1.0 or 2.0
context to render their content. Live wallpaper will not run reliably on
hardware that does not support multiple OpenGL contexts because the live
wallpaper use of an OpenGL context may conflict with other applications that
also use an OpenGL context.</p>
<p>Device implementations capable of running live wallpapers reliably as
described above SHOULD implement live wallpapers. Device implementations
determined to not run live wallpapers reliably as described above MUST NOT
implement live wallpapers.</p>
<a name="section-3.8.7"></a><h4>3.8.7. Recent Application Display</h4>
<p>The upstream Android 4.2 source code includes a user interface for
displaying recent applications using a thumbnail image of the application's
graphical state at the moment the user last left the application. Device
implementations MAY alter or eliminate this user interface; however, a future
version of Android is planned to make more extensive use of this
functionality. Device implementations are strongly encouraged to use the
upstream Android 4.2 user interface (or a similar thumbnail-based interface)
for recent applications, or else they may not be compatible with a future
version of Android.</p>
<a name="section-3.8.8"></a><h4>3.8.8. Input Management Settings</h4>
<p>Android 4.2 includes support for Input Management Engines. The Android 4.2
APIs allow custom app IMEs to specify user-tunable settings. Device
implementations MUST include a way for the user to access IME settings at all
times when an IME that provides such user settings is displayed.</p>

<a name="section-3.8.9"></a><h4>3.8.9. Lock and Home Screen Widgets</h4>
<p>Android 4.2 includes support for application widgets that users can embed in the home screen or the lock screen
(See the App Widget Design Guidelines in the Android SDK documentation [<a href="#resources69">Resources, 69</a>] for details).
Application widgets allow quick access to application data and services without launching a new activity. Widgets declare support
for usage on the home screen or the lock screen by declaring the <code>android:widgetCategory</code> manifest tag that tells the system
where the widget can be placed. Specifically, device implementations MUST meet the following requirements.</p>
<ul>
 <li>Device implementations MUST support application widgets on the home screen.</li>
 <li>Device implementations SHOULD support lock screen. If device implementations include support for lock screen
     then device implementations MUST support application widgets on the lock screen.</li>
</ul>

<a name="section-3.8.10"></a><h4>3.8.10. Lock Screen Media Remote Control</h4>
<p>Android 4.2 includes support for Remote Control API that lets media applications integrate with playback controls
that are displayed in a remote view like the device lock screen[<a href="#resources74">Resources, 74</a>]. Device implementations MUST
include support for embedding remote controls in the device lock screen.
</p>
<a name="section-3.8.11"></a><h4>3.8.11. Dreams</h4>
<p>Android 4.2 includes support for interactive screensavers called Dreams [<a href="#resources76">Resources, 76</a>].
Dreams allows users to interact with applications when a charging device is idle, or docked in a desk dock. Device implementations
MUST include support for Dreams and provide a settings option for users to configure Dreams.</p>

<a name="section-3.9"></a><h3>3.9 Device Administration</h3>
<p>Android 4.2 includes features that allow security-aware applications
to perform device administration functions at the system level, such as enforcing
password policies or performing remote wipe, through the Android Device
Administration API [<a href="#resources27">Resources, 27</a>]. Device
implementations MUST provide an implementation of the <code>DevicePolicyManager
</code> class [<a href="#resources28">Resources, 28</a>], and SHOULD support
the full range of device administration policies defined in the Android SDK
documentation [<a href="#resources27">Resources, 27</a>].
</p>
<p><b>Note:</b> while some of the requirements outlined above are stated as "SHOULD"
for Android 4.2, device implementations that support lock screen MUST support device policies to manage widgets
on the lock screen as defined in the Android SDK documentation [<a href="#resources27">Resources, 27</a>].
</p>
<p><b>Note:</b> while some of the requirements outlined above are stated as "SHOULD"
for Android 4.2, the Compatibility Definition for a future version is planned
to change these to "MUST". That is, these requirements are optional in Android
4.2 but <b>will be required</b> by a future version. Existing and new devices
that run Android 4.2 are <b>very strongly encouraged to meet
these requirements in Android 4.2</b>, or they will not be able to attain
Android compatibility when upgraded to the future version.</p>

<a name="section-3.10"></a><h3>3.10 Accessibility</h3>
<p>Android 4.2 provides an accessibility layer that helps users with disabilities
to navigate their devices more easily. In addition, Android 4.2 provides
platform APIs that enable accessibility service implementations to receive
callbacks for user and system events and generate alternate feedback mechanisms,
such as text-to-speech, haptic feedback, and trackball/d-pad navigation
[<a href="#resources29">Resources, 29</a>]. Device implementations MUST provide an
implementation of the Android accessibility framework consistent with the
default Android implementation.  Specifically, device implementations MUST meet
the following requirements.</p>
<ul>
 <li>Device implementations MUST support third party accessibility service
     implementations through the <code>android.accessibilityservice</code>
     APIs [<a href="#resources30">Resources, 30</a>].</li>
 <li>Device implementations MUST generate <code>AccessibilityEvents</code>
     and deliver these events to all registered <code>AccessibilityService
     </code> implementations in a manner consistent with the default Android
     implementation.</li>
 <li>Device implementations MUST provide a user-accessible mechanism to enable
     and disable accessibility services, and MUST display this interface in
     response to the
     <code>android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS</code>
     intent.</li>
</ul>
<p>Additionally, device implementations SHOULD provide an implementation
of an accessibility service on the device, and SHOULD provide a mechanism
for users to enable the accessibility service during device setup.  An open
source implementation of an accessibility service is available from the Eyes
Free project [<a href="#resources31">Resources, 31</a>].</p>

<a name="section-3.11"></a><h3>3.11 Text-to-Speech</h3>
<p>Android 4.2 includes APIs that allow applications to make use of
text-to-speech (TTS) services, and allows service providers to provide
implementations of TTS services [<a href="#resources32">Resources, 32</a>].
Device implementations MUST meet these requirements related to the Android TTS
framework:</p>
<ul>
  <li>Device implementations MUST support the Android TTS framework APIs and
      SHOULD include a TTS engine supporting the languages available on the
      device. Note that the upstream Android open source software includes a
      full-featured TTS engine implementation.</li>
  <li>Device implementations MUST support installation of third-party TTS
      engines.</li>
  <li>Device implementations MUST provide a user-accessible interface that allows
      users to select a TTS engine for use at the system level.</li>
</ul>

<a name="section-4"></a><h2>4. Application Packaging Compatibility</h2>
<p>Device implementations MUST install and run Android ".apk" files as
generated by the "aapt" tool included in the official Android SDK [<a
href="#resources33">Resources, 33</a>].</p>
<p>Devices implementations MUST NOT extend either the .apk [<a
href="#resources34">Resources, 34</a>], Android Manifest [<a
href="#resources35">Resources, 35</a>],
Dalvik bytecode [<a href="#resources17">Resources, 17</a>], or renderscript
bytecode formats in such a way that would prevent those files from installing
and running correctly on other compatible devices. Device implementers SHOULD
use the reference upstream implementation of Dalvik, and the reference
implementation's package management system.</p>

<a name="section-5"></a><h2>5. Multimedia Compatibility</h2>
<p>Device implementations MUST include at least one form of audio output, such as
speakers, headphone jack, external speaker connection, etc.</p>
<a name="section-5.1"></a><h3>5.1. Media Codecs</h3>
<p>Device implementations MUST support the core media formats specified
in the Android SDK documentation [<a href="#resources58">Resources, 58</a>] except
where explicitly permitted in this document. Specifically, device implementations
MUST support the media formats, encoders, decoders, file types and container
formats defined in the tables below. All of these codecs are provided as
software implementations in the preferred Android implementation from the Android
Open Source Project.</p>

<p><strong>Please note that neither Google nor the Open Handset Alliance make any
representation that these codecs are unencumbered by third-party patents.
Those intending to use this source code in hardware or software products are
advised that implementations of this code, including in open source software
or shareware, may require patent licenses from the relevant patent
holders.</strong></p>

<p>Note that these tables do not list specific bitrate requirements for
most video codecs because current device hardware does not necessarily support
bitrates that map exactly to the required bitrates specified by the relevant
standards. Instead, device implementations SHOULD support the highest bitrate
practical on the hardware, up to the limits defined by the specifications.</p>
<div style="page-break-before: always;"></div>
<table>
<tbody>

<tr>
<th>Type</th>
<th>Format / Codec</th>
<th>Encoder</th>
<th>Decoder</th>
<th>Details</th>
<th>File Type(s) / Container Formats</th>
</tr>

<tr>
<td rowspan="11">Audio</td>
<td>MPEG-4 AAC Profile (AAC LC)</td>
<td style="text-align: center;">REQUIRED<br/>
<small>Required for device implementations that include microphone hardware
and define <code>android.hardware.microphone</code>.</small></td>
<td style="text-align: center;">REQUIRED</td>
<td rowspan="1"> Support for mono/stereo/5.0/5.1* content with standard sampling rates from 8 to 48 kHz.</td>
<td rowspan="4">
  <ul>
    <li>3GPP (.3gp)</li>
    <li>MPEG-4 (.mp4, .m4a)</li>
    <li>ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)</li>
    <li>MPEG-TS (.ts, not seekable, Android 3.0+)</li>
  </ul>
</td>
</tr>

<tr>
<td>MPEG-4 HE AAC Profile (AAC+)</td>
<td>REQUIRED for device implementations that include microphone hardware and define android.hardware.microphone</td>
<td style="text-align: center;">REQUIRED</td>
<td>Support for mono/stereo/5.0/5.1* content with standard sampling rates from 16 to 48 kHz.</td>
</tr>

<tr>
<td>MPEG-4 HE AAC v2 Profile (enhanced AAC+)</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>Support for mono/stereo/5.0/5.1* content with standard sampling rates from 16 to 48 kHz.</td>
</tr>

<tr>
<td>MPEG-4 Audio Object Type ER AAC ELD (Enhanced Low Delay AAC)</td>
<td>REQUIRED for device implementations that include microphone hardware and define android.hardware.microphone</td>
<td style="text-align: center;">REQUIRED</td>
<td>Support for mono/stereo content with standard
sampling rates from 16 to 48 kHz.</td>
</tr>

<tr>
<td>AMR-NB</td>
<td style="text-align: center;">REQUIRED<br/>
<small>Required for device implementations that include microphone hardware
and define <code>android.hardware.microphone</code>.</small></td>
<td style="text-align: center;">REQUIRED</td>
<td>4.75 to 12.2 kbps sampled @ 8kHz</td>
<td>3GPP (.3gp)
</td>
</tr>

<tr>
<td>AMR-WB</td>
<td style="text-align: center;">REQUIRED<br/>
<small>Required for device implementations that include microphone hardware
and define <code>android.hardware.microphone</code>.</small></td>
<td style="text-align: center;">REQUIRED</td>
<td>9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz</td>
<td>3GPP (.3gp)</td>
</tr>

<tr>
<td>FLAC</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED<br/><small>(Android 3.1+)</small></td>
<td>Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1
kHz is recommended on devices with 44.1 kHz output, as the 48 to 44.1 kHz
downsampler does not include a low-pass filter). 16-bit recommended;
no dither applied for 24-bit.
</td>
<td>FLAC (.flac) only</td>
</tr>

<tr>
<td>MP3</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>Mono/Stereo 8-320Kbps constant (CBR) or variable bit-rate (VBR)
</td>
<td>MP3 (.mp3)</td>
</tr>

<tr>
<td>MIDI</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody </td>
<td>
  <ul>
    <li>Type 0 and 1 (.mid, .xmf, .mxmf)</li>
    <li>RTTTL/RTX (.rtttl, .rtx)</li>
    <li>OTA (.ota)</li>
    <li>iMelody (.imy)</li>
  </ul>
</td>
</tr>

<tr>
<td>Vorbis</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>
  <ul>
    <li>Ogg (.ogg)</li>
    <li>Matroska (.mkv)</li>
  </ul>
</td>
</tr>

<tr>
<td>PCM/WAVE</td>
<td style="text-align: center;">REQUIRED</td>
<td style="text-align: center;">REQUIRED</td>
<td>8-bit and 16-bit linear PCM** (rates up to limit of hardware).Devices MUST support sampling rates
for raw PCM recording at 8000,16000 and 44100 Hz frequencies</td>
<td>WAVE (.wav)</td>
</tr>

<tr>
<td rowspan="5">Image</td>
<td>JPEG</td>
<td style="text-align: center;">REQUIRED</td>
<td style="text-align: center;">REQUIRED</td>
<td>Base+progressive</td>
<td>JPEG (.jpg)</td>
</tr>

<tr>
<td>GIF</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>GIF (.gif)</td>
</tr>

<tr>
<td>PNG</td>
<td style="text-align: center;">REQUIRED</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>PNG (.png)</td>
</tr>

<tr>
<td>BMP</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>BMP (.bmp)</td>
</tr>


<tr>
<td>WEBP</td>
<td style="text-align: center;">REQUIRED</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>WebP (.webp)</td>
</tr>

<tr>
<td rowspan="4">Video</td>
<td>H.263</td>
<td style="text-align: center;">REQUIRED<br/>
<small>Required for device implementations that include camera hardware
and define <code>android.hardware.camera</code> or
<code>android.hardware.camera.front</code>.</small></td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>
  <ul>
    <li>3GPP (.3gp)</li>
    <li>MPEG-4 (.mp4)</li>
  </ul>
</td>
</tr>

<tr>
<td>H.264 AVC</td>
<td style="text-align: center;">REQUIRED<br/>
<small>Required for device implementations that include camera hardware
and define <code>android.hardware.camera</code> or
<code>android.hardware.camera.front</code>.</small></td>
<td style="text-align: center;">REQUIRED</td>
<td>Baseline Profile (BP)</td>
<td>
  <ul>
    <li>3GPP (.3gp)</li>
    <li>MPEG-4 (.mp4)</li>
    <li>MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+)</li>
  </ul>
</td>
</tr>

<tr>
<td>MPEG-4 SP</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED</td>
<td>&nbsp;</td>
<td>3GPP (.3gp)</td>
</tr>

<tr>
<td>VP8</td>
<td>&nbsp;</td>
<td style="text-align: center;">REQUIRED<br/><small>(Android 2.3.3+)</small></td>
<td>&nbsp;</td>
<td><a href="http://www.webmproject.org/">WebM</a> (.webm) and Matroska (.mkv, Android 4.0+)</td>
</tr>

</tbody></table>
*Note: Only downmix of 5.0/5.1 content is required; recording or rendering more than 2 channels is optional.
**Note: 16-bit linear PCM capture is mandatory. 8-bit linear PCM capture is not mandatory.

<a name="section-5.2"></a><h3>5.2 Video Encoding</h3>
<p>Android device implementations that include a rear-facing camera and declare
<code>android.hardware.camera</code> SHOULD support the following video encoding
profiles.</p>
<table>
  <thead>
  <tr>
    <th>&nbsp;</th>
    <th>SD (Low quality)</th>
    <th>SD (High quality)</th>
    <th>HD (When supported by hardware)</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <th>Video codec</th>
    <td>H.264 Baseline Profile</td>
    <td>H.264 Baseline Profile</td>
    <td>H.264 Baseline Profile</td>
  </tr>
  <tr>
    <th>Video resolution</th>
    <td>176 x 144 px</td>
    <td>480 x 360 px</td>
    <td>1280 x 720 px</td>
  </tr>
  <tr>
    <th>Video frame rate</th>
    <td>12 fps</td>
    <td>30 fps</td>
    <td>30 fps</td>
  </tr>
  <tr>
    <th>Video bitrate</th>
    <td>56 Kbps</td>
    <td>500 Kbps or higher</td>
    <td>2 Mbps or higher</td>
  </tr>
  <tr>
    <th>Audio codec</th>
    <td>AAC-LC</td>
    <td>AAC-LC</td>
    <td>AAC-LC</td>
  </tr>
  <tr>
    <th>Audio channels</th>
    <td>1 (mono)</td>
    <td>2 (stereo)</td>
    <td>2 (stereo)</td>
  </tr>
  <tr>
    <th>Audio bitrate</th>
    <td>24 Kbps</td>
    <td>128 Kbps</td>
    <td>192 Kbps</td>
  </tr>
  </tbody>
</table>

<a name="section-5.3"></a><h3>5.3 Video Decoding</h3>
<p>Android device implementations SHOULD support the following VP8 video decoding profiles.</p>
<div style="page-break-before: always;"></div>
<table>
  <thead>
  <tr>
    <th>&nbsp;</th>
    <th>SD (Low quality)</th>
    <th>SD (High quality)</th>
    <th>HD 720p <br/> (When supported by hardware)</th>
    <th>HD 1080p <br/>(When supported by hardware)</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <th>Video resolution</th>
    <td>320 x 180 px</td>
    <td>640 x 360 px</td>
    <td>1280 x 720 px</td>
    <td>1920 x 1080 px</td>
  </tr>
  <tr>
    <th>Video frame rate</th>
    <td>30 fps</td>
    <td>30 fps</td>
    <td>30 fps</td>
    <td>30 fps</td>
  </tr>
  <tr>
    <th>Video bitrate</th>
    <td>800 Kbps</td>
    <td>2 Mbps</td>
    <td>8 Mbps</td>
    <td>20 Mbps</td>
  </tr>
  </tbody>
</table>
<a name="section-5.4"></a><h3>5.4. Audio Recording</h3>
<p>When an application has used the <code>android.media.AudioRecord</code> API to
start recording an audio stream, device implementations that include microphone
hardware and declare <code>android.hardware.microphone</code> MUST sample and
record audio with each of these behaviors:</p>
<ul>
<li>The device SHOULD exhibit approximately flat amplitude versus frequency
    characteristics; specifically, &plusmn;3 dB, from 100 Hz to 4000 Hz</li>
<li>Audio input sensitivity SHOULD be set such that a 90 dB sound power level
    (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.</li>
<li>PCM amplitude levels SHOULD linearly track input SPL changes over at least
    a 30 dB range from -18 dB to +12 dB re 90 dB SPL at the microphone.</li>
<li>Total harmonic distortion SHOULD be less than 1% for 1Khz at 90 dB SPL input level.</li>
</ul>
<p>In addition to the above recording specifications, when an application has
started recording an audio stream using the
<code>android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION</code> audio
source:</p>
<ul>
<li>Noise reduction processing, if present, MUST be disabled.</li>
<li>Automatic gain control, if present, MUST be disabled.</li>
</ul>
<p><b>Note:</b> while some of the requirements outlined above are stated as "SHOULD"
for Android 4.2, the Compatibility Definition for a future version is planned
to change these to "MUST". That is, these requirements are optional in Android
4.2 but <b>will be required</b> by a future version. Existing and new devices
that run Android 4.2 are <b>very strongly encouraged to meet
these requirements in Android 4.2</b>, or they will not be able to attain
Android compatibility when upgraded to the future version.</p>

<a name="section-5.5"></a><h3>5.5. Audio Latency</h3>
<p>Audio latency is the time delay as an audio signal passes through a system.
Many classes of
applications rely on short latencies, to achieve real-time effects such sound
effects or VOIP communication.</p>
<p>For the purposes of this section:</p>
<ul>
<li>"output latency" is defined as the interval between when an application
writes a frame of PCM-coded data and when the corresponding sound can be heard
by an external listener or observed by a transducer</li>
<li>"cold output latency" is defined as the output latency for the first frame, when
    the audio output system has been idle and powered down prior to the request</li>
<li>"continuous output latency" is defined as the output latency for subsequent frames,
    after the device is already playing audio</li>
<li>"input latency" is the interval between when an external sound is presented
to the device and when an application reads the corresponding frame of PCM-coded data</li>
<li>"cold input latency" is defined as the sum of lost input time
    and the input latency for the first frame, when
    the audio input system has been idle and powered down prior to the request</li>
<li>"continuous input latency" is defined as the input latency for subsequent frames,
    while the device is already capturing audio</li>
<li>"OpenSL ES PCM buffer queue API" is the set of PCM-related OpenSL ES APIs within Android NDK;
see <i>NDK_root</i><code>/docs/opensles/index.html</code></li>
</ul>
<p>Per <a href="#section-5">Section 5</a>,
all compatible device implementations MUST include at least one form of audio output.
Device implementations SHOULD meet or exceed these output latency requirements:</p>
<ul>
<li>cold output latency of 100 milliseconds or less</li>
<li>continuous output latency of 45 milliseconds or less</li>
</ul>
<p>If a device implementation meets the requirements of this section
after any initial calibration
when using the OpenSL ES PCM buffer queue API,
for continuous output latency and cold output latency
over at least one supported audio output device, it MAY
report support for low-latency audio, by reporting the feature
"android.hardware.audio.low-latency" via the
<code>android.content.pm.PackageManager</code> class. [<a
href="#resources37">Resources, 37</a>] Conversely, if the device
implementation does not meet these requirements it MUST NOT report support for
low-latency audio.</p>
<p>
Per <a href="#section-7.2.5">Section 7.2.5</a>,
microphone hardware may be omitted by device implementations.</p>
<p>
Device implementations that include microphone
hardware and declare <code>android.hardware.microphone</code> SHOULD
meet these input audio latency requirements:</p>
<ul>
<li>cold input latency of 100 milliseconds or less</li>
<li>continuous input latency of 50 milliseconds or less</li>
</ul>

<a name="section-5.6"></a><h3>5.6. Network Protocols</h3>
<p>Devices MUST support the media network protocols for audio and video playback
as specified in the Android SDK documentation
[<a href="#resources58">Resources, 58</a>].  Specifically, devices MUST support
the following media network protocols:</p>
<ul>
<li>RTSP (RTP, SDP)</li>
<li>HTTP(S) progressive streaming</li>
<li>HTTP(S) Live Streaming draft protocol, Version 3 [<a href="#resources59">Resources, 59</a>]</li>
</ul>
<a name="section-6"></a><h2>6. Developer Tools and Options Compatibility</h2>

<a name="section-6.1"></a><h3>6.1 Developer Tools</h3>
<p>Device implementations MUST support the Android Developer Tools provided in the Android SDK.
Specifically, Android-compatible devices MUST be compatible with:</p>
<ul>
<li><b>Android Debug Bridge (known as adb)</b> [<a href="#resources33">Resources, 33</a>]<br/>
Device implementations MUST support all <code>adb</code> functions as
documented in the Android SDK. The device-side <code>adb</code> daemon MUST
be inactive by default, and there MUST be a user-accessible mechanism to turn
on the Android Debug Bridge.</li>
<p>Android 4.2.2 includes support for secure adb. Secure adb enables adb on known authenticated hosts.
Existing and new devices that run Android 4.2.2 are <b>very strongly encouraged to meet
this requirement in Android 4.2</b>, or they will not be able to attain
Android compatibility when upgraded to the future version.</p>
<li><b>Dalvik Debug Monitor Service (known as ddms)</b> [<a href="#resources33">Resources, 33</a>]<br/>
Device implementations MUST support all <code>ddms</code> features as documented in the
Android SDK. As <code>ddms</code> uses <code>adb</code>, support for
<code>ddms</code> SHOULD be inactive by default,
but MUST be supported whenever the user has activated the Android Debug
Bridge, as above.</li>
<li><b>Monkey</b> [<a href="#resources36">Resources, 36</a>]<br/>
Device implementations MUST include the Monkey framework, and make it
available for applications to use.</li>
<li><b>SysTrace</b> [<a href="#resources33">Resources, 33</a>]<br/>
Device implementations MUST support systrace tool as documented in the Android SDK.
Systrace must be inactive by default, and there MUST be a user-accessible mechanism to turn
on Systrace.</li>
</ul>
<p>Most Linux-based systems and Apple Macintosh systems recognize Android
devices using the standard Android SDK tools, without additional support;
however Microsoft Windows systems typically require a driver for new Android
devices. (For instance, new vendor IDs and sometimes new device IDs require
custom USB drivers for Windows systems.) If a device implementation is
unrecognized by the <code>adb</code> tool as provided in the standard Android
SDK, device implementers MUST provide Windows drivers allowing developers to
connect to the device using the <code>adb</code> protocol. These drivers MUST
be provided for Windows XP, Windows Vista, Windows 7, and Windows 8, in both 32-bit and
64-bit versions.</p>

<a name="section-6.2"></a><h3>6.2 Developer Options</h3>
<p>Android 4.2 includes support for developers to configure application development-related settings.
Device implementations MUST honor the android.settings.APPLICATION_DEVELOPMENT_SETTINGS intent to show
application development-related settings [<a href="#resources77">Resources, 77</a>]. The upstream Android
implementation hides the Developer Options menu by default, and enables users to launch Developer Options
after pressing seven (7) times on the Settings > About Device > Build Number menu item. Device implementations
MUST provide a consistent experience for Developer Options. Specifically, device implementations MUST hide
Developer Options by default and MUST provide a mechanism to enable Developer Options that is consistent with
the upstream Android implementation.</p>

<a name="section-7"></a><h2>7. Hardware Compatibility</h2>
<p>If a device includes a particular hardware component that has a
corresponding API for third-party developers, the device implementation MUST
implement that API as described in the Android SDK documentation. If an API in
the SDK interacts with a hardware component that is stated to be optional and
the device implementation does not possess that component:</p>
<ul>
<li>complete class definitions (as documented by the SDK) for the component's
APIs MUST still be present</li>
<li>the API's behaviors MUST be implemented as no-ops in some reasonable
fashion</li>
<li>API methods MUST return null values where permitted by the SDK
documentation</li>
<li>API methods MUST return no-op implementations of classes where null
values are not permitted by the SDK documentation</li>
<li>API methods MUST NOT throw exceptions not documented by the SDK
documentation</li>
</ul>
<p>A typical example of a scenario where these requirements apply is the
telephony API: even on non-phone devices, these APIs must be implemented as
reasonable no-ops.</p>
<p>Device implementations MUST accurately report accurate hardware configuration
information via the <code>getSystemAvailableFeatures()</code> and
<code>hasSystemFeature(String)</code> methods on the
<code>android.content.pm.PackageManager</code> class. [<a
href="#resources37">Resources, 37</a>]</p>

<a name="section-7.1"></a><h3>7.1. Display and Graphics</h3>
<p>Android 4.2 includes facilities that automatically adjust application
assets and UI layouts appropriately for the device, to ensure that third-party
applications run well on a variety of hardware configurations [<a
href="#resources38">Resources, 38</a>]. Devices MUST properly implement these
APIs and behaviors, as detailed in this section.</p>

<p>The units referenced by the requirements in this section are defined as follows:</p>
<ul>
<li>"Physical diagonal size" is the distance in inches between two opposing
corners of the illuminated portion of the display.</li>
<li>"dpi" (meaning "dots per inch") is the number of pixels encompassed by a
linear horizontal or vertical span of 1". Where dpi values are listed, both
horizontal and vertical dpi must fall within the range.</li>
<li>"Aspect ratio" is the ratio of the longer dimension of the screen to the
shorter dimension. For example, a display of 480x854 pixels would be 854 / 480
= 1.779, or roughly "16:9".</li>
<li>A "density-independent pixel" or ("dp") is the virtual pixel unit normalized to a
160 dpi screen, calculated as:
<code>pixels = dps * (density / 160)</code>.</li>
</ul>


<a name="section-7.1.1"></a><h4>7.1.1. Screen Configuration</h4>

<p style="font-weight:bold;">Screen Size</p>
<p>The Android UI framework supports a variety of different screen sizes, and
allows applications to query the device screen size (aka "screen layout") via
<code>android.content.res.Configuration.screenLayout</code> with the
<code>SCREENLAYOUT_SIZE_MASK</code>. Device implementations MUST report the
correct screen size as defined in the Android SDK documentation
[<a href="#resources38">Resources, 38</a>] and determined by the upstream
Android platform. Specifically, device implementations must report the correct
screen size according to the following logical density-independent pixel (dp)
screen dimensions.</p>
<ul>
<li>Devices MUST have screen sizes of at least 426 dp x 320 dp ('small')</li>
<li>Devices that report screen size 'normal' MUST have screen sizes of at least
480 dp x 320 dp</li>
<li>Devices that report screen size 'large' MUST have screen sizes of at least
640 dp x 480 dp</li>
<li>Devices that report screen size 'xlarge' MUST have screen sizes of at least
960 dp x 720 dp</li>
</ul>
<p>In addition, devices MUST have screen sizes of at least 2.5 inches in
physical diagonal size.</p>

<p>Devices MUST NOT change their reported screen size at any time.</p>
<p>Applications optionally indicate which screen sizes they support via the
<code>&lt;supports-screens&gt;</code> attribute in the AndroidManifest.xml
file. Device implementations MUST correctly honor applications' stated support
for small, normal, large, and xlarge screens, as described in the Android
SDK documentation.</p>

<p style="font-weight:bold;">Screen Aspect Ratio</p>
<p>The aspect ratio MUST be between 1.3333 (4:3) and 1.85 (16:9).</p>

<p style="font-weight:bold;">Screen Density</p>
<p>The Android UI framework defines a set of standard logical densities to
help application developers target application resources. Device
implementations MUST report one of the following logical Android framework
densities through the <code>android.util.DisplayMetrics</code> APIs, and MUST
execute applications at this standard density.
<ul>
<li>120 dpi, known as 'ldpi'</li>
<li>160 dpi, known as 'mdpi'</li>
<li>213 dpi, known as 'tvdpi'</li>
<li>240 dpi, known as 'hdpi'</li>
<li>320 dpi, known as 'xhdpi'</li>
<li>480 dpi, known as 'xxhdpi'</li>
</ul>
Device implementations SHOULD define the standard Android framework density
that is numerically closest to the physical density of the screen, unless that
logical density pushes the reported screen size below the minimum supported.
If the standard Android framework density that is numerically closest to the
physical density results in a screen size that is smaller than the smallest
supported compatible screen size (320 dp width), device implementations SHOULD
report the next lowest standard Android framework density.</p>

<a name="section-7.1.2"></a><h4>7.1.2. Display Metrics</h4>
<p>Device implementations MUST report correct values for all display metrics
defined in <code>android.util.DisplayMetrics</code> [<a
href="#resources39">Resources, 39</a>].</p>

<a name="section-7.1.3"></a><h4>7.1.3. Screen Orientation</h4>
<p>Devices MUST support dynamic orientation by applications to
either portrait or landscape screen orientation. That is, the device must
respect the application's request for a specific screen orientation. Device
implementations MAY select either portrait or landscape orientation as the
default.</p>
<p>Devices MUST report the correct value for the device's current orientation,
whenever queried via the android.content.res.Configuration.orientation,
android.view.Display.getOrientation(), or other APIs.</p>
<p>Devices MUST NOT change the reported screen size or density when changing
orientation.</p>
<p>Devices MUST report which screen orientations they support (
<code>android.hardware.screen.portrait</code> and/or
<code>android.hardware.screen.landscape</code>) and MUST report at least one
supported orientation.  For example, a device with a fixed-orientation
landscape screen, such as a television or laptop, MUST only report
<code>android.hardware.screen.landscape</code>.</p>

<a name="section-7.1.4"></a><h4>7.1.4. 2D and 3D Graphics Acceleration</h4>
<p>Device implementations MUST support both OpenGL ES 1.0 and 2.0, as embodied
and detailed in the Android SDK documentations. Device implementations MUST
also support Android Renderscript, as detailed in the Android SDK
documentation [<a href="#resources08">Resources, 8</a>].</p>
<p>Device implementations MUST also correctly identify themselves as
supporting OpenGL ES 1.0 and 2.0. That is:</p>
<ul>
<li>The managed APIs (such as via the <code>GLES10.getString()</code> method)
MUST report support for OpenGL ES 1.0 and 2.0</li>
<li>The native C/C++ OpenGL APIs (that is, those available to apps via
libGLES_v1CM.so, libGLES_v2.so, or libEGL.so) MUST report support for
OpenGL ES 1.0 and 2.0.</li>
</ul>
<p>Device implementations MAY implement any desired OpenGL ES extensions.
However, device implementations MUST report via the OpenGL ES managed and
native APIs all extension strings that they do support, and conversely MUST
NOT report extension strings that they do not support.</p>
<p>Note that Android 4.2 includes support for applications to optionally
specify that they require specific OpenGL texture compression formats. These
formats are typically vendor-specific. Device implementations are not required
by Android 4.2 to implement any specific texture compression format. However,
they SHOULD accurately report any texture compression formats that they do
support, via the <code>getString()</code> method in the OpenGL API.</p>

<p>Android 4.2 includes a mechanism for applications to declare that they
wanted to enable hardware acceleration for 2D graphics at the Application,
Activity, Window or View level through the use of a manifest tag
<code>android:hardwareAccelerated</code> or direct API calls
[<a href="#resources09">Resources, 9</a>].</p>
<p>In Android 4.2, device implementations MUST enable hardware acceleration by
default, and MUST disable hardware acceleration if the developer so requests
by setting <code>android:hardwareAccelerated="false"</code> or disabling
hardware acceleration directly through the Android View APIs.</p>
<p>In addition, device implementations MUST exhibit behavior consistent with the
Android SDK documentation on hardware acceleration
[<a href="#resources09">Resources, 9</a>].</p>
<p>Android 4.2 includes a <code>TextureView</code> object that lets developers
directly integrate hardware-accelerated OpenGL ES textures as rendering targets
in a UI hierarchy. Device implementations MUST support the <code>TextureView
</code> API, and MUST exhibit consistent behavior with the upstream Android
implementation.</p>

<a name="section-7.1.5"></a><h4>7.1.5. Legacy Application Compatibility Mode</h4>
<p>Android 4.2 specifies a "compatibility mode" in which the framework
operates in an 'normal' screen size equivalent (320dp width) mode for the benefit
of legacy applications not developed for old versions of Android that pre-date
screen-size independence. Device implementations MUST include support for legacy
application compatibility mode as implemented by the upstream Android open source
code. That is, device implementations MUST NOT alter the triggers or thresholds at
which compatibility mode is activated, and MUST NOT alter the behavior of the
compatibility mode itself.</p>

<a name="section-7.1.6"></a><h4>7.1.6. Screen Types</h4>
<p>Device implementation screens are classified as one of two types:</p>
<ul>
<li>Fixed-pixel display implementations: the screen is a single panel that supports only a
single pixel width and height. Typically the screen is physically integrated with
the device. Examples include mobile phones, tablets, and so on.</li>
<li>Variable-pixel display implementations: the device implementation either has no
embedded screen and includes a video output port such as VGA, HDMI or a wireless port
for display, or has an embedded screen that can change pixel dimensions. Examples
include televisions, set-top boxes, and so on.</li>
</ul>
<p style="font-weight: bold;">Fixed-Pixel Device Implementations</p>
<p>Fixed-pixel device implementations MAY use screens of any pixel dimensions, provided
that they meet the requirements defined this Compatibility Definition.</p>
<p>Fixed-pixel implementations MAY include a video output port for use with an
external display. However, if that display is ever used for running apps, the
device MUST meet the following requirements:</p>
<ul>
<li>The device MUST report the same screen configuration and display metrics, as detailed
in Sections 7.1.1 and 7.1.2, as the fixed-pixel display.</li>
<li>The device MUST report the same logical density as the fixed-pixel display.</li>
<li>The device MUST report screen dimensions that are the same as, or very close to,
the fixed-pixel display.</li>
</ul>
<p>For example, a tablet that is 7" diagonal size with a 1024x600 pixel resolution is
considered a fixed-pixel large mdpi display implementation.  If it contains a video
output port that displays at 720p or 1080p, the device implementation MUST scale the output so that
applications are only executed in a large mdpi window, regardless of whether the fixed-pixel display
or video output port is in use.</p>

<p style="font-weight: bold;">Variable-Pixel Device Implementations</p>
<p>Variable-pixel device implementations MUST support one or both of 1280x720,
or 1920x1080 (that is, 720p or 1080p). Device implementations with
variable-pixel displays MUST NOT support any other screen configuration or
mode. Device implementations with variable-pixel screens MAY change screen
configuration or mode at runtime or boot-time. For example, a user of a
set-top box may replace a 720p display with a 1080p display, and the device
implementation may adjust accordingly.</p>

<p>Additionally, variable-pixel device implementations MUST report the following
configuration buckets for these pixel dimensions:</p>
<ul>
<li>1280x720 (also known as 720p): 'large' screen size, 'tvdpi' (213 dpi)
density</li>
<li>1920x1080 (also known as 1080p): 'large' screen size, 'xhdpi' (320 dpi)
density</li>
</ul>
<p>For clarity, device implementations with variable pixel dimensions are
restricted to 720p or 1080p in Android 4.2, and MUST be configured to report
screen size and density buckets as noted above.</p>

<a name="section-7.1.7"></a><h4>7.1.7. Screen Technology</h4>
<p>The Android platform includes APIs that allow applications to render rich
graphics to the display. Devices MUST support all of these APIs as defined by
the Android SDK unless specifically allowed in this document.  Specifically:</p>
<ul>
<li>Devices MUST support displays capable of rendering 16-bit color graphics and
SHOULD support displays capable of 24-bit color graphics.</li>
<li>Devices MUST support displays capable of rendering animations.</li>
<li>The display technology used MUST have a pixel aspect ratio (PAR) between
    0.9 and 1.1. That is, the pixel aspect ratio MUST be near square (1.0) with
    a 10% tolerance.</li>
</ul>
<a name="section-7.1.8"></a><h4>7.1.8. External Displays</h4>
<p>Android 4.2 includes support for secondary display to enable media sharing capabilities and
developer APIs for accessing external displays. If a device supports an external display either via
a wired, wireless or an embedded additional display connection then the device implementation MUST
implement the display manager API as described in the Android SDK documentation [<a href="#resources75">Resources, 75</a>].
Device implementations that support secure video output and are capable of supporting secure surfaces MUST declare support
for <code>Display.SECURE_FLAG</code>. Specifically, device implementations that declare support for <code>Display.SECURE_FLAG</code>,
MUST support <b>HDCP 2.x or higher</b> for Miracast wireless displays or <b>HDCP 1.2 or higher</b> for wired displays. The upstream
Android open source implementation includes support for wireless (Miracast) and wired (HDMI) displays that satisfies this requirement.</p>

<a name="section-7.2"></a><h3>7.2. Input Devices</h3>
<a name="section-7.2.1"></a><h4>7.2.1. Keyboard</h4>
<p>Device implementations:</p>
<ul>
<li>MUST include support for the Input Management Framework (which allows third
party developers to create Input Management Engines - i.e. soft keyboard) as
detailed at <a href="http://developer.android.com">http://developer.android.com</a>
</li>
<li>MUST provide at least one soft keyboard implementation (regardless of whether
a hard keyboard is present)</li>
<li>MAY include additional soft keyboard implementations</li>
<li>MAY include a hardware keyboard</li>
<li>MUST NOT include a hardware keyboard that does not match one of the
formats specified in <code>android.content.res.Configuration.keyboard</code>
[<a href="#resources40">Resources, 40</a>] (that is, QWERTY, or 12-key)</li>
</ul>
<a name="section-7.2.2"></a><h4>7.2.2. Non-touch Navigation</h4>
<p>Device implementations:</p>
<ul>
<li>MAY omit a non-touch navigation option (that is, may omit a trackball, d-pad,
or wheel)</li>
<li>MUST report the correct value for
<code>android.content.res.Configuration.navigation</code>
[<a href="#resources40">Resources, 40</a>]</li>
<li>MUST provide a reasonable alternative user interface mechanism for the
selection and editing of text, compatible with Input Management Engines. The
upstream Android open source implementation includes a selection mechanism suitable
for use with devices that lack non-touch navigation inputs.</li>
</ul>
<a name="section-7.2.3"></a><h4>7.2.3. Navigation keys</h4>
<p>The Home, Menu and Back functions are essential to the Android navigation
paradigm. Device implementations MUST make these functions available to the
user at all times when running applications. These functions MAY be implemented
via dedicated physical buttons (such as mechanical or capacitive touch buttons),
or MAY be implemented using dedicated software keys, gestures, touch panel, etc.
Android 4.2 supports both implementations.</p>

<p>Android 4.2 includes support for assist action [<a href="#resources63">Resources, 63</a>].
Device implementations MUST make the assist action available to the user at all times when running applications.
This function MAY be implemented via hardware or software keys.</p>

<p>Device implementations MAY use a distinct portion of the screen to display
the navigation keys, but if so, MUST meet these requirements:</p>

<ul>
  <li>Device implementation navigation keys MUST use a distinct portion of the
      screen, not available to applications, and MUST NOT obscure or otherwise
      interfere with the portion of the screen available to applications.</li>
  <li>Device implementations MUST make available a portion of the display to
      applications that meets the requirements defined in
      <a href="section-7.1.1">Section 7.1.1</a>.</li>
  <li>Device implementations MUST display the navigation keys when applications
      do not specify a system UI mode, or specify
      <code>SYSTEM_UI_FLAG_VISIBLE</code>.</li>
  <li>Device implementations MUST present the navigation keys in an unobtrusive
      "low profile" (eg. dimmed) mode when applications specify
      <code>SYSTEM_UI_FLAG_LOW_PROFILE</code>.</li>
  <li>Device implementations MUST hide the navigation keys when applications
      specify <code>SYSTEM_UI_FLAG_HIDE_NAVIGATION</code>.</li>
  <li>Device implementation MUST present a Menu key to applications when
      targetSdkVersion &lt;= 10 and SHOULD NOT present a Menu key when the
      targetSdkVersion &gt; 10.</li>
</ul>

<a name="section-7.2.4"></a><h4>7.2.4. Touchscreen input</h4>
<p>Device implementations:</p>
<ul>
<li>MUST have a pointer input system of some kind (either mouse-like, or
touch)</li>
<li>MAY have a touchscreen of any modality (such as capacitive or resistive)</li>
<li>SHOULD support fully independently tracked pointers, if a touchscreen
supports multiple pointers</li>
<li>MUST report the value of <code>android.content.res.Configuration</code>
[<a href="#resources40">Resources, 39</a>]
reflecting corresponding to the type of the specific touchscreen on the
device</li>
</ul>
<p>Device implementations MUST report the correct feature corresponding to the
type of input used. Note that Android 4.2 includes the feature
<code>android.hardware.faketouch</code>, which corresponds to a high-fidelity
non-touch (that is, pointer-based) input device such as a mouse or trackpad that
can adequately emulate touch-based input (including basic gesture support),
and indicates that the device supports an emulated subset of touchscreen
functionality.
Device implementations that include a touchscreen (single-touch or better)
MUST also report android.hardware.faketouch. Device implementations that do
not include a touchscreen (and rely on a pointer device only) MUST NOT report
any touchscreen feature, and MUST report only
<code>android.hardware.faketouch</code>.</p>
<a name="section-7.2.5"></a><h4>7.2.5. Microphone</h4>
<p>Device implementations MAY omit a microphone. However, if a device
implementation omits a microphone, it MUST NOT report the
<code>android.hardware.microphone</code> feature constant, and must implement
the audio recording API as no-ops, per <a href="section-7">Section 7</a>.
Conversely, device implementations that do possess a microphone:</p>
<ul>
<li>MUST report the <code>android.hardware.microphone</code> feature constant</li>
<li>SHOULD meet the audio quality requirements in <a href="section-5.4">Section 5.4</a></li>
<li>SHOULD meet the audio latency requirements in <a href="section-5.5">Section 5.5</a></li>
</ul>

<a name="section-7.3"></a><h3>7.3. Sensors</h3>
<p>Android 4.2 includes APIs for accessing a variety of sensor types. Devices
implementations generally MAY omit these sensors, as provided for in the
following subsections. If a device includes a particular sensor type that has a
corresponding API for third-party developers, the device implementation MUST
implement that API as described in the Android SDK documentation. For example,
device implementations:</p>
<ul>
<li>MUST accurately report the presence or absence of sensors per the
<code>android.content.pm.PackageManager</code> class. [<a
href="#resources37">Resources, 37</a>]</li>
<li>MUST return an accurate list of supported sensors via the
<code>SensorManager.getSensorList()</code> and similar methods</li>
<li>MUST behave reasonably for all other sensor APIs (for example, by
returning true or false as appropriate when applications attempt to register
listeners, not calling sensor listeners when the corresponding sensors are not
present; etc.)</li>
<li>MUST report all sensor measurements using the relevant International System
of Units (i.e. metric) values for each sensor type as defined in the Android SDK
documentation [<a href="#resources41">Resources, 41</a>]</li>
</ul>
<p>The list above is not comprehensive; the documented behavior of the Android
SDK is to be considered authoritative.</p>
<p>Some sensor types are synthetic, meaning they can be derived from data
provided by one or more other sensors. (Examples include the orientation
sensor, and the linear acceleration sensor.) Device implementations SHOULD
implement these sensor types, when they include the prerequisite physical
sensors.</p>
<p>The Android 4.2 includes a notion of a "streaming" sensor, which is
one that returns data continuously, rather than only when the data changes.
Device implementations MUST continuously provide periodic data samples for any
API indicated by the Android 4.2 SDK documentation to be a streaming
sensor. Note that the device implementations MUST ensure that the sensor stream must not
prevent the device CPU from entering a suspend state or waking up from a suspend state.</p>

<a name="section-7.3.1"></a><h4>7.3.1. Accelerometer</h4>
<p>Device implementations SHOULD include a 3-axis accelerometer. If a device
implementation does include a 3-axis accelerometer, it:</p>
<ul>
<li>SHOULD be able to deliver events at 120 Hz or greater. Note that while the
accelerometer frequency above is stated as "SHOULD" for Android 4.2, the Compatibility Definition
for a future version is planned to change these to "MUST". That is, these standards are
optional in Android 4.2 but <b>will be required</b> in future versions. Existing and
new devices that run Android 4.2 are <b>very strongly encouraged to meet these requirements
in Android 4.2</b> so they will be able to upgrade to the future platform releases
</li>
<li>MUST comply with the Android sensor coordinate system as detailed
in the Android APIs (see [<a href="#resources41">Resources, 41</a>])</li>
<li>MUST be capable of measuring from freefall up to twice gravity (2g) or
more on any three-dimensional vector</li>
<li>MUST have 8-bits of accuracy or more</li>
<li>MUST have a standard deviation no greater than 0.05 m/s^2</li>
</ul>
<a name="section-7.3.2"></a><h4>7.3.2. Magnetometer</h4>
<p>Device implementations SHOULD include a 3-axis magnetometer (i.e. compass.)
If a device does include a 3-axis magnetometer, it:</p>
<ul>
<li>MUST be able to deliver events at 10 Hz or greater</li>
<li>MUST comply with the Android sensor coordinate system as detailed
in the Android APIs (see [<a href="#resources41">Resources, 41</a>]).</li>
<li>MUST be capable of sampling a range of field strengths adequate to cover the
geomagnetic field</li>
<li>MUST have 8-bits of accuracy or more</li>
<li>MUST have a standard deviation no greater than 0.5 &micro;T</li>
</ul>
<a name="section-7.3.3"></a><h4>7.3.3. GPS</h4>
<p>Device implementations SHOULD include a GPS receiver. If a device
implementation does include a GPS receiver, it SHOULD include
some form of "assisted GPS" technique to minimize GPS lock-on time.</p>
<a name="section-7.3.4"></a><h4>7.3.4. Gyroscope</h4>
<p>Device implementations SHOULD include a gyroscope (i.e. angular change
sensor.) Devices SHOULD NOT include a gyroscope sensor unless a 3-axis
accelerometer is also included. If a device implementation includes a
gyroscope, it:</p>
<ul>
<li>MUST be temperature compensated</li>
<li>MUST be capable of measuring orientation changes up to 5.5*Pi
radians/second (that is, approximately 1,000 degrees per second)</li>
<li>SHOULD be able to deliver events at 200 Hz or greater. Note that while the
gyroscope frequency above is stated as "SHOULD" for Android 4.2, the Compatibility Definition
for a future version is planned to change these to "MUST". That is, these standards are
optional in Android 4.2 but <b>will be required</b> in future versions. Existing and
new devices that run Android 4.2 are <b>very strongly encouraged to meet these requirements
in Android 4.2</b> so they will be able to upgrade to the future platform releases
</li>
<li>MUST have 12-bits of accuracy or more</li>
<li>MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz, or rad^2 / s).
The variance is allowed to vary with the sampling rate, but must be constrained by this value.
In other words, if you measure the variance of the gyro at 1 Hz sampling rate it should be no
greater than 1e-7 rad^2/s^2. </li>
<li>MUST have timestamps as close to when the hardware event happened as possible. The constant latency must be removed.</li>
</ul>
<a name="section-7.3.5"></a><h4>7.3.5. Barometer</h4>
<p>Device implementations MAY include a barometer (i.e. ambient air pressure
sensor.) If a device implementation includes a barometer, it:</p>
<ul>
<li>MUST be able to deliver events at 5 Hz or greater</li>
<li>MUST have adequate precision to enable estimating altitude</li>
<li>MUST be temperature compensated</li>
</ul>
<a name="section-7.3.6"></a><h4>7.3.7. Thermometer</h4>
<p>Device implementations MAY but SHOULD NOT include a thermometer (i.e.
temperature sensor.) If a device implementation does include a thermometer, it
MUST measure the temperature of the device CPU. It MUST NOT measure any other
temperature. (Note that this sensor type is deprecated in the Android 4.2
APIs.)</p>
<a name="section-7.3.7"></a><h4>7.3.7. Photometer</h4>
<p>Device implementations MAY include a photometer (i.e. ambient light
sensor.)</p>
<a name="section-7.3.8"></a><h4>7.3.8. Proximity Sensor</h4>
<p>Device implementations MAY include a proximity sensor.  If a device
implementation does include a proximity sensor, it MUST measure the proximity
of an object in the same direction as the screen. That is, the proximity
sensor MUST be oriented to detect objects close to the screen, as the
primary intent of this sensor type is to detect a phone in use by the
user. If a device implementation includes a proximity sensor with any other
orientation, it MUST NOT be accessible through this API. If a device
implementation has a proximity sensor, it MUST be have 1-bit of accuracy or
more.</p>

<a name="section-7.4"></a><h3>7.4. Data Connectivity</h3>
<a name="section-7.4.1"></a><h4>7.4.1. Telephony</h4>
<p>"Telephony" as used by the Android 4.2 APIs and this document refers
specifically to hardware related to placing voice calls and sending SMS
messages via a GSM or CDMA network. While these voice calls may or may not be
packet-switched, they are for the purposes of Android 4.2 considered
independent of any data connectivity that may be implemented using the same
network. In other words, the Android "telephony" functionality and APIs refer
specifically to voice calls and SMS; for instance, device implementations that
cannot place calls or send/receive SMS messages MUST NOT report the
"android.hardware.telephony" feature or any sub-features, regardless of
whether they use a cellular network for data connectivity.</p>
<p>Android 4.2 MAY be used on devices that do not include telephony hardware.
That is, Android 4.2 is compatible with devices that are not phones.
However, if a device implementation does include GSM or CDMA telephony, it
MUST implement full support for the API for that technology. Device
implementations that do not include telephony hardware MUST implement the full
APIs as no-ops.</p>
<a name="section-7.4.2"></a><h4>7.4.2. IEEE 802.11 (WiFi)</h4>
<p>Android 4.2 device implementations SHOULD include support for one or more
forms of 802.11 (b/g/a/n, etc.) If a device implementation does include
support for 802.11, it MUST implement the corresponding Android API.</p>
<p>Device implementations MUST implement the multicast API as described in
the SDK documentation [<a href="#resources62">Resources, 62</a>]. Device
implementations that do include Wifi support MUST support multicast DNS (mDNS).
Device implementations MUST not filter mDNS packets (224.0.0.251) at any time
of operation including when the screen is not in an active state.</p>

<a name="section-7.4.2.1"></a><h4>7.4.2.1. WiFi Direct</h4>
<p>Device implementations SHOULD include support for Wifi direct (Wifi peer-to-peer).
If a device implementation does include support for Wifi direct, it MUST implement the corresponding 
Android API as described in the SDK documentation [<a href="#resources68">Resources, 68</a>].
If a device implementation includes support for Wifi direct, then it:</p>
<ul>
  <li>MUST support regular Wifi operation</li>
  <li>SHOULD support concurrent wifi and wifi Direct operation</li>
</ul>

<a name="section-7.4.3"></a><h4>7.4.3. Bluetooth</h4>
<p>Device implementations SHOULD include a Bluetooth transceiver. Device
implementations that do include a Bluetooth transceiver MUST enable the
RFCOMM-based Bluetooth API as described in the SDK documentation [<a
href="#resources42">Resources, 42</a>]. Device implementations SHOULD
implement relevant Bluetooth profiles, such as A2DP, AVRCP, OBEX, etc. as
appropriate for the device.</p>
<p>The Compatibility Test Suite includes cases that cover basic operation of
the Android RFCOMM Bluetooth API. However, since Bluetooth is a communications
protocol between devices, it cannot be fully tested by unit tests running on a
single device. Consequently, device implementations MUST also pass the
human-driven Bluetooth test procedure described in Appendix A.</p>

<a name="section-7.4.4"></a><h4>7.4.4. Near-Field Communications</h4>
<p>Device implementations SHOULD include a transceiver and related hardware
for Near-Field Communications (NFC). If a device implementation does include
NFC hardware, then it:</p>
<ul>
  <li>MUST report the android.hardware.nfc feature from the
      <code>android.content.pm.PackageManager.hasSystemFeature()</code> method.
      [<a href="#resources37">Resources, 37</a>]</li>
  <li>MUST be capable of reading and writing NDEF messages via the following NFC
      standards:
   <ul>
    <li>MUST be capable of acting as an NFC Forum reader/writer
        (as defined by the NFC Forum technical specification
        NFCForum-TS-DigitalProtocol-1.0) via the following NFC standards:
     <ul>
      <li>NfcA (ISO14443-3A)</li>
      <li>NfcB (ISO14443-3B) </li>
      <li>NfcF (JIS 6319-4)</li>
      <li>IsoDep (ISO 14443-4)</li>
      <li>NFC Forum Tag Types 1, 2, 3, 4 (defined by the NFC Forum)</li>
     </ul>
    </li>
   </ul>
  </li>
  <li>SHOULD be capable of reading and writing NDEF messages via the following
      NFC standards. Note that while the NFC standards below are stated as
      "SHOULD" for Android 4.2, the Compatibility Definition for a future
      version is planned to change these to "MUST". That is, these standards are
      optional in Android 4.2 but <b>will be required</b> in future versions.
      Existing and new devices that run Android 4.2 are <b>very strongly
      encouraged to meet these requirements in Android 4.2</b> so they will be
      able to upgrade to the future platform releases.
    <ul>
      <li>NfcV (ISO 15693)</li>
    </ul>
  </li>
  <li>MUST be capable of transmitting and receiving data via the following
      peer-to-peer standards and protocols:
    <ul>
      <li>ISO 18092</li>
      <li>LLCP 1.0 (defined by the NFC Forum)</li>
      <li>SDP 1.0 (defined by the NFC Forum)</li>
      <li>NDEF Push Protocol [<a href="#resources43">Resources, 43</a>]</li>
      <li>SNEP 1.0 (defined by the NFC Forum)</li>
    </ul>
  </li>
  <li>MUST include support for Android Beam [<a href="#resources65">Resources, 65</a>]:
   <ul>
    <li>MUST implement the SNEP default server. Valid NDEF messages received
        by the default SNEP server MUST be dispatched to applications using
        the android.nfc.ACTION_NDEF_DISCOVERED intent. Disabling Android Beam
        in settings MUST NOT disable dispatch of incoming NDEF message.</li>
    <li>Device implementations MUST honor the android.settings.NFCSHARING_SETTINGS intent
        to show NFC sharing settings [<a href="#resources67">Resources, 67</a>].</li>
    <li>MUST implement the NPP server. Messages received by the NPP server MUST
        be processed the same way as the SNEP default server.</li>
    <li>MUST implement a SNEP client and attempt to send outbound P2P NDEF to
        the default SNEP server when Android Beam is enabled. If no default
        SNEP server is found then the client MUST attempt to send to an NPP
        server.</li>
    <li>MUST allow foreground activities to set the outbound P2P NDEF message
        using android.nfc.NfcAdapter.setNdefPushMessage, and
        android.nfc.NfcAdapter.setNdefPushMessageCallback, and
        android.nfc.NfcAdapter.enableForegroundNdefPush.</li>
    <li>SHOULD use a gesture or on-screen confirmation, such as 'Touch to Beam',
        before sending outbound P2P NDEF messages.</li>
    <li>SHOULD enable Android Beam by default</li>
    <li>MUST support NFC Connection handover to Bluetooth when the device supports Bluetooth Object Push Profile.
        Device implementations must support connection handover to Bluetooth when using android.nfc.NfcAdapter.setBeamPushUris,
        by implementing the "Connection Handover version 1.2" [<a href="#resources60">Resources, 60</a>]
        and "Bluetooth Secure Simple Pairing Using NFC version 1.0" [<a href="#resources61">Resources, 61</a>]
        specs from the NFC Forum. Such an implementation SHOULD use SNEP GET
        requests for exchanging the handover request / select records over NFC, and it MUST
        use the Bluetooth Object Push Profile for the actual Bluetooth data transfer.</li>
   </ul>
  </li>
  <li>MUST poll for all supported technologies while in NFC discovery mode.</li>
  <li>SHOULD be in NFC discovery mode while the device is awake with the screen active
      and the lock-screen unlocked.</li>
</ul>

<p>(Note that publicly available links are not available for the JIS, ISO, and
NFC Forum specifications cited above.)</p>
<p>Additionally, device implementations MAY include reader/writer support for
the following MIFARE technologies.</p>
<ul>
  <li>MIFARE Classic (NXP MF1S503x [<a href="#resources44">Resources, 44</a>],
      MF1S703x [<a href="#resources44">Resources, 44</a>])</li>
  <li>MIFARE Ultralight (NXP MF0ICU1 [<a href="#resources46">Resources, 46</a>],
      MF0ICU2 [<a href="#resources46">Resources, 46</a>])</li>
  <li>NDEF on MIFARE Classic (NXP AN130511 [<a href="#resources48">Resources, 48</a>],
      AN130411 [<a href="#resources49">Resources, 49</a>])</li>
</ul>
<p>Note that Android 4.2 includes APIs for these MIFARE types. If a
device implementation supports MIFARE in the reader/writer role, it:</p>
<ul>
  <li>MUST implement the corresponding Android APIs as documented by the
  Android SDK</li>
  <li>MUST report the feature com.nxp.mifare from the
  <code>android.content.pm.PackageManager.hasSystemFeature()</code> method.
  [<a href="#resources37">Resources, 37</a>] Note that this is not a standard
  Android feature, and as such does not appear as a constant on the
  <code>PackageManager</code> class.</li>
  <li>MUST NOT implement the corresponding Android APIs nor report the
  com.nxp.mifare feature unless it also implements general NFC support as
  described in this section</li>
</ul>
<p>If a device implementation does not include NFC hardware, it MUST NOT
declare the android.hardware.nfc feature from the
<code>android.content.pm.PackageManager.hasSystemFeature()</code> method [<a
href="#resources37">Resources, 37</a>], and MUST implement the Android 4.2 NFC
API as a no-op.</p>
<p>As the classes <code>android.nfc.NdefMessage</code> and
<code>android.nfc.NdefRecord</code> represent a protocol-independent data
representation format, device implementations MUST implement these APIs even
if they do not include support for NFC or declare the android.hardware.nfc
feature.</p>
<a name="section-7.4.5"></a><h4>7.4.5. Minimum Network Capability</h4>
<p>Device implementations MUST include support for one or more forms of data
networking. Specifically, device implementations MUST include support for at
least one data standard capable of 200Kbit/sec or greater. Examples of
technologies that satisfy this requirement include EDGE, HSPA, EV-DO, 802.11g,
Ethernet, etc.</p>
<p>Device implementations where a physical networking standard (such as
Ethernet) is the primary data connection SHOULD also include support for at
least one common wireless data standard, such as 802.11 (WiFi).</p>
<p>Devices MAY implement more than one form of data connectivity.</p>


<a name="section-7.5"></a><h3>7.5. Cameras</h3>
<p>Device implementations SHOULD include a rear-facing camera, and MAY include
a front-facing camera. A rear-facing camera is a camera located on the side of
the device opposite the display; that is, it images scenes on the far side of
the device, like a traditional camera. A front-facing camera is a camera
located on the same side of the device as the display; that is, a camera
typically used to image the user, such as for video conferencing and similar
applications.</p>
<a name="section-7.5.1"></a><h4>7.5.1. Rear-Facing Camera</h4>
<p>Device implementations SHOULD include a rear-facing camera. If a device
implementation includes a rear-facing camera, it:</p>
<ul>
<li>MUST have a resolution of at least 2 megapixels</li>
<li>SHOULD have either hardware auto-focus, or software auto-focus implemented
in the camera driver (transparent to application software)</li>
<li>MAY have fixed-focus or EDOF (extended depth of field) hardware</li>
<li>MAY include a flash. If the Camera includes a flash, the flash lamp MUST
NOT be lit while an android.hardware.Camera.PreviewCallback instance has been
registered on a Camera preview surface, unless the application has explicitly
enabled the flash by enabling the <code>FLASH_MODE_AUTO</code> or
<code>FLASH_MODE_ON</code> attributes of a <code>Camera.Parameters</code>
object. Note that this constraint does not apply to the device's built-in
system camera application, but only to third-party applications using
<code>Camera.PreviewCallback</code>.</li>
</ul>
<a name="section-7.5.2"></a><h4>7.5.2. Front-Facing Camera</h4>
<p>Device implementations MAY include a front-facing camera. If a device
implementation includes a front-facing camera, it:</p>
<ul>
<li>MUST have a resolution of at least VGA (that is, 640x480 pixels)</li>
<li>MUST NOT use a front-facing camera as the default for the Camera API.
That is, the camera API in Android 4.2 has specific support for front-facing
cameras, and device implementations MUST NOT configure the API to to treat a
front-facing camera as the default rear-facing camera, even if it is the only
camera on the device.</li>
<li>MAY include features (such as auto-focus, flash, etc.)
available to rear-facing cameras as described in Section 7.5.1.</li>
<li>MUST horizontally reflect (i.e. mirror) the stream displayed by an app in a
CameraPreview, as follows:</li>
<ul>
<li>If the device implementation is capable of being rotated by user (such as
automatically via an accelerometer or manually via user input), the camera
preview MUST be mirrored horizontally relative to the device's current
orientation.</li>
<li>If the current application has explicitly requested that the Camera
display be rotated via a call to the
<code>android.hardware.Camera.setDisplayOrientation()</code> [<a
href="#resources50">Resources, 50</a>] method, the camera preview MUST be
mirrored horizontally relative to the orientation specified by the
application.</li>
<li>Otherwise, the preview MUST be mirrored along the device's default horizontal axis.</li>
</ul>
<li>MUST mirror the image displayed by the postview in the same manner as
the camera preview image stream. (If the device implementation does not
support postview, this requirement obviously does not apply.)</li>
<li>MUST NOT mirror the final captured still image or video streams returned
to application callbacks or committed to media storage</li>
</ul>
<a name="section-7.5.3"></a><h4>7.5.3. Camera API Behavior</h4>
<p>Device implementations MUST implement the following behaviors for the
camera-related APIs, for both front- and rear-facing cameras:</p>
<ol>
<li>If an application has never called
<code>android.hardware.Camera.Parameters.setPreviewFormat(int)</code>, then the
device MUST use <code>android.hardware.PixelFormat.YCbCr_420_SP</code> for
preview data provided to application callbacks.</li>
<li>If an application registers an <code>android.hardware.Camera.PreviewCallback
</code> instance and the system calls the <code>onPreviewFrame()</code> method
when the preview format is YCbCr_420_SP, the data in the <code>byte[]</code>
passed into <code>onPreviewFrame()</code> must further be in the NV21 encoding
format. That is, NV21 MUST be the default.</li>
<li>Device implementations MUST support the YV12 format (as denoted by the
<code>android.graphics.ImageFormat.YV12</code> constant) for camera previews
for both front- and rear-facing cameras.  (The hardware video encoder and camera
may use any native pixel format, but the device implementation MUST support conversion
to YV12.)</li>
</ol>
<p>Device implementations MUST implement the full Camera API included in the
Android 4.2 SDK documentation [<a href="#resources51">Resources, 51</a>]),
regardless of whether the device includes hardware autofocus or other
capabilities. For instance, cameras that lack autofocus MUST still call any
registered <code>android.hardware.Camera.AutoFocusCallback</code> instances (even though
this has no relevance to a non-autofocus camera.) Note that this does apply
to front-facing cameras; for instance, even though most front-facing cameras
do not support autofocus, the API callbacks must still be "faked" as
described.</p>
<p>Device implementations MUST recognize and honor each parameter name defined
as a constant on the <code>android.hardware.Camera.Parameters</code> class, if the
underlying hardware supports the feature. If the device hardware does not
support a feature, the API must behave as documented. Conversely, Device
implementations MUST NOT honor or recognize string constants passed
to the <code>android.hardware.Camera.setParameters()</code> method other than
those documented as constants on the
<code>android.hardware.Camera.Parameters</code>.  That is,
device implementations MUST support all standard Camera parameters if the
hardware allows, and MUST NOT support custom Camera parameter types.
For instance, device implementations that support image capture using high dynamic range (HDR)
imaging techniques MUST support camera parameter <code>Camera.SCENE_MODE_HDR</code>
[<a href="#resources78">Resources, 78</a>]).</p>
<p>Device implementations MUST broadcast the <code>Camera.ACTION_NEW_PICTURE</code>
intent whenever a new picture is taken by the camera and the entry of the picture
has been added to the media store.</p>
<p>Device implementations MUST broadcast the <code>Camera.ACTION_NEW_VIDEO</code>
intent whenever a new video is recorded by the camera and the entry of the picture
has been added to the media store.</p>
<a name="section-7.5.4"></a><h4>7.5.4. Camera Orientation</h4>
<p>Both front- and rear-facing cameras, if present, MUST be oriented so that
the long dimension of the camera aligns with the screen's long dimention. That
is, when the device is held in the landscape orientation, cameras MUST
capture images in the landscape orientation. This applies regardless of the
device's natural orientation; that is, it applies to landscape-primary devices
as well as portrait-primary devices.</p>

<a name="section-7.6"></a><h3>7.6. Memory and Storage</h3>
<a name="section-7.6.1"></a><h4>7.6.1. Minimum Memory and Storage</h4>
<p>Device implementations MUST have at least 340MB of memory available to the
kernel and userspace. The 340MB MUST be in addition to any memory dedicated to
hardware components such as radio, video, and so on that is not under the
kernel's control.</p>
<p>Device implementations MUST have at least 350MB of non-volatile storage
available for application private data. That is, the <code>/data</code> partition MUST be at
least 350MB.</p>
<p>The Android APIs include a Download Manager that applications may use to
download data files [<a href="#resources56">Resources, 56</a>]. The device
implementation of the Download Manager MUST be capable of downloading individual
files of at least 100MB in size to the default "cache" location.</p>
<a name="section-7.6.2"></a><h4>7.6.2. Application Shared Storage</h4>
<p>Device implementations MUST offer shared storage for applications. The
shared storage provided MUST be at least 1GB in size.</p>
<p>Device implementations MUST be configured with shared storage mounted by
default, "out of the box". If the shared storage is not mounted on the Linux
path <code>/sdcard</code>, then the device MUST include a Linux symbolic link
from <code>/sdcard</code> to the actual mount point.</p>
<p>Device implementations MUST enforce as documented the
<code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission on this
shared storage. Shared storage MUST otherwise be writable by any application
that obtains that permission.</p>
<p>Device implementations MAY have hardware for user-accessible removable
storage, such as a Secure Digital card. Alternatively, device implementations
MAY allocate internal (non-removable) storage as shared storage for apps.</p>
<p>Regardless of the form of shared storage used, device implementations MUST
provide some mechanism to access the contents of shared storage from a host
computer, such as USB mass storage (UMS) or Media Transfer Protocol (MTP). Device
implementations MAY use USB mass storage, but SHOULD use Media Transfer
Protocol. If the device implementation supports Media Transfer Protocol:</p>
<ul>
<li>The device implementation SHOULD be compatible with the reference Android
MTP host, Android File Transfer [<a href="#resources57">Resources, 57</a>].</li>
<li>The device implementation SHOULD report a USB device class of <code>0x00</code>.</li>
<li>The device implementation SHOULD report a USB interface name of 'MTP'.</li>
</ul>
<p>If the device implementation lacks USB ports, it MUST provide a host
computer with access to the contents of shared storage by some other means,
such as a network file system.</p>
<p>It is illustrative to consider two common examples. If a device
implementation includes an SD card slot to satisfy the shared storage
requirement, a FAT-formatted SD card 1GB in size or larger MUST be included
with the device as sold to users, and MUST be mounted by default.
Alternatively, if a device implementation uses internal fixed storage to
satisfy this requirement, that storage MUST be 1GB in size or larger
and mounted on <code>/sdcard</code> (or <code>/sdcard</code>
MUST be a symbolic link to the physical location if it is mounted elsewhere.)</p>
<p>Device implementations that include multiple shared storage paths (such as
both an SD card slot and shared internal storage) SHOULD modify the core
applications such as the media scanner and ContentProvider to transparently
support files placed in both locations.</p>

<a name="section-7.7"></a><h3>7.7. USB</h3>
<p>Device implementations SHOULD include a USB client port, and SHOULD include
a USB host port.</p>
<p>If a device implementation includes a USB client port:</p>
<ul>
<li>the port MUST be connectable to a USB host with a standard USB-A port</li>
<li>the port SHOULD use the micro USB form factor on the device side. Existing and
new devices that run Android 4.2 are <b>very strongly encouraged to meet these requirements
in Android 4.2</b> so they will be able to upgrade to the future platform releases</li>
<li>the port SHOULD be centered in the middle of an edge. Device implementations SHOULD either
locate the port on the bottom of the device (according to natural orientation) or enable software
screen rotation for all apps (including home screen), so that the display draws correctly when the device
is oriented with the port at bottom. Existing and new devices that run Android 4.2 are <b>very strongly
encouraged to meet these requirements in Android 4.2</b> so they will be able to upgrade to future platform releases.</li>
<li>if the device has other ports (such as a non-USB charging port) it SHOULD be on the same edge as the
micro-USB port</li>
<li>it MUST allow a host connected to the device to access the contents of the
shared storage volume using either USB mass storage or Media Transfer
Protocol</li>
<li>it MUST implement the Android Open Accessory API and specification as documented
in the Android SDK documentation, and MUST declare support for the hardware
feature <code>android.hardware.usb.accessory</code> [<a href="#resources52">Resources,
52</a>]</li>
<li>it MUST implement the USB audio class as documented in the Android SDK documentation [<a href="#resources66">Resources, 66</a>]</li>
<li>it SHOULD implement support for USB battery charging specification [<a href="#resources64">Resources, 64</a>]
Existing and new devices that run Android 4.2 are <b>very strongly encouraged to meet these requirements in Android 4.2</b>
so they will be able to upgrade to the future platform releases</li>

</ul>
<p>If a device implementation includes a USB host port:</p>
<ul>
<li>it MAY use a non-standard port form factor, but if so MUST ship with a
cable or cables adapting the port to standard USB-A</li>
<li>it MUST implement the Android USB host API as documented in the Android
SDK, and MUST declare support for the hardware feature
<code>android.hardware.usb.host</code> [<a href="#resources53">Resources, 53</a>]</li>
</ul>
<p>Device implementations MUST implement the Android Debug Bridge. If a device
implementation omits a USB client port, it MUST implement the Android Debug
Bridge via local-area network (such as Ethernet or 802.11)</p>

<a name="section-8"></a><h2>8. Performance Compatibility</h2>
<p>Device implementations MUST meet the key performance metrics of an Android
4.2 compatible device defined in the table below:</p>
<table><tbody><tr>
<td><b>Metric</b></td>
<td><b>Performance Threshold</b></td>
<td><b>Comments</b></td>
</tr>
<tr>
<td>Application Launch Time</td>
<td>The following applications should launch within the specified time.<ul>
<li>Browser: less than 1300ms</li>
<li>Contacts: less than 700ms</li>
<li>Settings: less than 700ms</li>
</ul></td>
<td>The launch time is measured as the total time to
complete loading the default activity for the application, including the time
it takes to start the Linux process, load the Android package into the Dalvik
VM, and call onCreate.</td>
</tr>
<tr>
<td>Simultaneous Applications</td>
<td>When multiple applications have been launched, re-launching an
already-running application after it has been launched must take less than the
original launch time.</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>

<a name="section-9"></a><h2>9. Security Model Compatibility</h2>
<p>Device implementations MUST implement a security model consistent with the
Android platform security model as defined in Security and Permissions
reference document in the APIs [<a href="#resources54">Resources, 54</a>] in the
Android developer documentation. Device implementations MUST support
installation of self-signed applications without requiring any additional
permissions/certificates from any third parties/authorities.  Specifically,
compatible devices MUST support the security mechanisms described in the
follow sub-sections.</p>
<a name="section-9.1"></a><h3>9.1. Permissions</h3>
<p>Device implementations MUST support the Android permissions model as
defined in the Android developer documentation [<a
href="#resources54">Resources, 54</a>]. Specifically,
implementations MUST enforce each permission defined as described in the SDK
documentation; no permissions may be omitted, altered, or ignored.
Implementations MAY add additional permissions, provided the new permission ID
strings are not in the android.* namespace.</p>
<a name="section-9.2"></a><h3>9.2. UID and Process Isolation</h3>
<p>Device implementations MUST support the Android application sandbox model,
in which each application runs as a unique Unix-style UID and in a separate
process.  Device implementations MUST support running multiple applications as
the same Linux user ID, provided that the applications are properly signed and
constructed, as defined in the Security and Permissions reference [<a
href="#resources54">Resources, 54</a>].</p>
<a name="section-9.3"></a><h3>9.3. Filesystem Permissions</h3>
<p>Device implementations MUST support the Android file access permissions
model as defined in as defined in the Security and Permissions reference [<a
href="#resources54">Resources, 54</a>].</p>
<a name="section-9.4"></a><h3>9.4. Alternate Execution Environments</h3>
<p>Device implementations MAY include runtime environments that execute
applications using some other software or technology than the Dalvik virtual
machine or native code. However, such alternate execution environments MUST
NOT compromise the Android security model or the security of installed Android
applications, as described in this section.</p>
<p>Alternate runtimes MUST themselves be Android applications, and abide by
   the standard Android security model, as described elsewhere in Section 9.</p>
<p>Alternate runtimes MUST NOT be granted access to resources protected by
   permissions not requested in the runtime's AndroidManifest.xml file via the
   <code>&lt;uses-permission&gt;</code> mechanism.</p>
<p>Alternate runtimes MUST NOT permit applications to make use of features
   protected by Android permissions restricted to system applications.</p>
<p>Alternate runtimes MUST abide by the Android sandbox model.  Specifically:</p>
<ul>
<li>Alternate runtimes SHOULD install apps via the PackageManager into
    separate Android sandboxes (that is, Linux user IDs, etc.)</li>
<li>Alternate runtimes MAY provide a single Android sandbox shared by all
    applications using the alternate runtime</li>
<li>Alternate runtimes and installed applications using an alternate runtime
    MUST NOT reuse the sandbox of any other app installed on the device, except
    through the standard Android mechanisms of shared user ID and signing
    certificate</li>
<li>Alternate runtimes MUST NOT launch with, grant, or be granted access to
    the sandboxes corresponding to other Android applications</li>
</ul>
<p>Alternate runtimes MUST NOT be launched with, be granted, or grant to other
   applications any privileges of the superuser (root), or of any other user ID.</p>
<p>The .apk files of alternate runtimes MAY be included in the system image of
   a device implementation, but MUST be signed with a key distinct
   from the key used to sign other applications included with the device
   implementation.</p>
<p>When installing applications, alternate runtimes MUST obtain user consent
   for the Android permissions used by the application. That is, if an
   application needs to make use of a device resource for which there is a
   corresponding Android permission (such as Camera, GPS, etc.), the alternate
   runtime MUST inform the user that the application will be able to access
   that resource. If the runtime environment does not record application
   capabilities in this manner, the runtime environment MUST list all
   permissions held by the runtime itself when installing any application
   using that runtime.</p>

<a name="section-9.5"></a><h3>9.5. Multi-User Support </h3>
<p>Android 4.2 includes support for multiple users and provides support for full user isolation
[<a href="#resources70">Resources, 70</a>].</p>
<p>Device implementations MUST meet these requirements related to multi-user support[<a href="#resources71">Resources, 71</a>]:</p>
<ul>
<li>As the behavior of the telephony APIs on devices with multiple users is currently undefined, device implementations that
declare android.hardware.telephony MUST NOT enable multi-user support. </li>
<li>Device implementations MUST, for each user, implement a security model consistent with the Android platform security model
as defined in Security and Permissions reference document in the APIs [Resources, 54]</li>
</ul>
</p>

<p>Each user instance on an Android device MUST have separate and isolated external storage directories. Device implementations MAY store multiple users' data on the same volume or filesystem.
However, the device implementation MUST ensure that applications owned by and running on behalf a given user cannot list, read, or write to data owned by any other user.
Note that removable media, such as SD card slots, can allow one user to access another's data by means of a host PC. For this reason, device implementations that use removable media for the
external storage APIs MUST encrypt the contents of the SD card if multi-user is enabled using a key stored only on non-removable media accessible only to the system. As this will make the 
media unreadable by a host PC, device implementations will be required to switch to MTP or a similar system to provide host PCs with access to the current user's data. Accordingly, device
implementations MAY but SHOULD NOT enable multi-user if they use removable media [<a href="#resources72">Resources, 72</a>] for primary external storage. The upstream Android open-source
project includes an implementation that uses internal device storage for application external storage APIs; device implementations SHOULD use this configuration and software implementation.
Device implementations that include multiple external storage paths MUST NOT allow Android applications to write to the secondary external storage</p>

<a name="section-9.6"></a><h3>9.6. Premium SMS Warning</h3>
<p>Android 4.2 includes support for warning users for any outgoing premium SMS message. Premium SMS messages are text messages sent to a service registered with a carrier that may incur a charge to the user.
Device implementations that declare support for <code>android.hardware.telephony</code> MUST warn users before sending a SMS message to numbers identified by regular expressions defined in <code>/data/misc/sms/codes.xml</code> file in the device.
The upstream Android open-source project provides an implementation that satisfies this requirement.
</p>

<a name="section-10"></a><h2>10. Software Compatibility Testing</h2>
<p>Device implementations MUST pass all tests described in this section.</p>
<p>However, note that no software test package is fully comprehensive. For
this reason, device implementers are very strongly encouraged to make the
minimum number of changes as possible to the reference and preferred
implementation of Android 4.2 available from the Android Open Source Project.
This will minimize the risk of introducing bugs that create incompatibilities
requiring rework and potential device updates.</p>
<a name="section-10.1"></a><h3>10.1. Compatibility Test Suite</h3>
<p>Device implementations MUST pass the Android Compatibility Test Suite (CTS)
[<a href="#resources02">Resources, 2</a>] available from the Android Open Source
Project, using the final shipping software on the device. Additionally, device
implementers SHOULD use the reference implementation in the Android Open
Source tree as much as possible, and MUST ensure compatibility in cases of
ambiguity in CTS and for any reimplementations of parts of the reference
source code.</p>
<p>The CTS is designed to be run on an actual device. Like any software, the
CTS may itself contain bugs.  The CTS will be versioned independently of this
Compatibility Definition, and multiple revisions of the CTS may be released
for Android 4.2. Device implementations MUST pass the latest CTS version
available at the time the device software is completed.</p>
<a name="section-10.2"></a><h3>10.2. CTS Verifier</h3>
<p>Device implementations MUST correctly execute all applicable cases in the
CTS Verifier. The CTS Verifier is included with the Compatibility Test Suite,
and is intended to be run by a human operator to test functionality that
cannot be tested by an automated system, such as correct functioning of a
camera and sensors.</p>
<p>The CTS Verifier has tests for many kinds of hardware, including some
hardware that is optional. Device implementations MUST pass all tests for
hardware which they possess; for instance, if a device possesses an
accelerometer, it MUST correctly execute the Accelerometer test case in the
CTS Verifier. Test cases for features noted as optional by this Compatibility
Definition Document MAY be skipped or omitted.</p>
<p>Every device and every build MUST correctly run the CTS Verifier, as noted
above. However, since many builds are very similar, device implementers are
not expected to explicitly run the CTS Verifier on builds that differ only in
trivial ways. Specifically, device implementations that differ from an
implementation that has passed the CTS Verfier only by the set of included
locales, branding, etc. MAY omit the CTS Verifier test.</p>
<a name="section-10.3"></a><h3>10.3. Reference Applications</h3>
<p>Device implementers MUST test implementation compatibility using the
following open source applications:</p>
<ul>
<li>The "Apps for Android" applications [<a href="#resources55">Resources, 55</a>]</li>
<li>Replica Island (available in Android Market)</li>
</ul>
<p>Each app above MUST launch and behave correctly on the implementation, for
the implementation to be considered compatible.</p>


<a name="section-11"></a><h2>11. Updatable Software</h2>
<p>Device implementations MUST include a mechanism to replace the entirety of
the system software. The mechanism need not perform "live" upgrades - that
is, a device restart MAY be required.</p>
<p>Any method can be used, provided that it can replace the entirety of the
software preinstalled on the device. For instance, any of the following
approaches will satisfy this requirement:</p>
<ul>
<li>Over-the-air (OTA) downloads with offline update via reboot</li>
<li>"Tethered" updates over USB from a host PC</li>
<li>"Offline" updates via a reboot and update from a file on removable
storage</li>
</ul>
<p>The update mechanism used MUST support updates without wiping user data.
That is, the update mechanism MUST preserve application private data
and application shared data. Note that the upstream Android software includes
an update mechanism that satisfies this requirement.</p>
<p>If an error is found in a device implementation after it has been released
but within its reasonable product lifetime that is determined in consultation
with the Android Compatibility Team to affect the compatibility of third-party
applications, the device implementer MUST correct the error via a software
update available that can be applied per the mechanism just described.</p>

<a name="section-12"></a><h2>12. Contact Us</h2>
<p>You can contact the document authors at <a
href="mailto:compatibility@android.com">compatibility@android.com</a> for
clarifications and to bring up any issues that you think the document does not
cover.</p>

<div style="page-break-before: always;"></div>

<a name="appendix-A"></a><h2>Appendix A - Bluetooth Test Procedure</h2>
<p>The Compatibility Test Suite includes cases that cover basic operation of
the Android RFCOMM Bluetooth API. However, since Bluetooth is a communications
protocol between devices, it cannot be fully tested by unit tests running on a
single device. Consequently, device implementations MUST also pass the
human-operated Bluetooth test procedure described below.</p>
<p>The test procedure is based on the BluetoothChat sample app included in the
Android open source project tree. The procedure requires two devices:</p>
<ul>
<li>a candidate device implementation running the software build to be tested</li>
<li>a separate device implementation already known to be compatible, and of a
    model from the device implementation being tested - that is, a "known
    good" device implementation</li>
</ul>
<p>The test procedure below refers to these devices as the "candidate" and "known
good" devices, respectively.</p>
<h3>Setup and Installation</h3>
<ol>
<li>Build BluetoothChat.apk via 'make samples' from an Android source code tree</li>
<li>Install BluetoothChat.apk on the known-good device</li>
<li>Install BluetoothChat.apk on the candidate device</li>
</ol>
<h3>Test Bluetooth Control by Apps</h3>
<ol>
<li>Launch BluetoothChat on the candidate device, while Bluetooth is disabled</li>
<li>Verify that the candidate device either turns on Bluetooth, or prompts the user with a dialog to turn on Bluetooth</li>
</ol>
<h3>Test Pairing and Communication</h3>
<ol>
<li>Launch the Bluetooth Chat app on both devices</li>
<li>Make the known-good device discoverable from within BluetoothChat (using the Menu)</li>
<li>On the candidate device, scan for Bluetooth devices from within BluetoothChat (using the Menu) and pair with the known-good device</li>
<li>Send 10 or more messages from each device, and verify that the other device receives them correctly</li>
<li>Close the BluetoothChat app on both devices by pressing <b>Home</b></li>
<li>Unpair each device from the other, using the device Settings app</li>
</ol>
<h3>Test Pairing and Communication in the Reverse Direction</h3>
<ol>
<li>Launch the Bluetooth Chat app on both devices.</li>
<li>Make the candidate device discoverable from within BluetoothChat (using the Menu).</li>
<li>On the known-good device, scan for Bluetooth devices from within BluetoothChat (using the Menu) and pair with the candidate device.</li>
<li>Send 10 or messages from each device, and verify that the other device receives them correctly.</li>
<li>Close the Bluetooth Chat app on both devices by pressing Back repeatedly to get to the Launcher.</li>
</ol>
<h3>Test Re-Launches</h3>
<ol>
<li>Re-launch the Bluetooth Chat app on both devices.</li>
<li>Send 10 or messages from each device, and verify that the other device receives them correctly.</li>
</ol>
<p>Note: the above tests have some cases which end a test section by using
Home, and some using Back. These tests are not redundant and are not optional:
the objective is to verify that the Bluetooth API and stack works correctly
both when Activities are explicitly terminated (via the user pressing Back,
which calls finish()), and implicitly sent to background (via the user
pressing Home.) Each test sequence MUST be performed as described.</p>
<div id="footerContent" xmlns:pdf="http://whatever">
<pdf:pagenumber/>
</div>
</body>
</html>
