diff --git a/src/compatibility/5.1/android-5.1-cdd.html b/src/compatibility/5.1/android-5.1-cdd.html
new file mode 100644
index 0000000..bb5d4c5
--- /dev/null
+++ b/src/compatibility/5.1/android-5.1-cdd.html
@@ -0,0 +1,6252 @@
+<!DOCTYPE html>
+<head>
+<title>Android 5.1 Compatibility Definition</title>
+<link rel="stylesheet" type="text/css" href="cdd.css"/>
+</head>
+<body>
+<div><img src="header.jpg" alt="Android logo"/></div>
+<h1>Android 5.1 Compatibility Definition</h1>
+<!--
+<span style="color: red; font-weight: bold;"><h2>Revision 1</h2></span><br/>
+<span style="color: red;">Last updated: July 23, 2013</span>
+-->
+<p><b><font color="red">Revision 1</font></b><br/>
+Last updated: January 12, 2015
+</p>
+<p>Copyright &copy; 2015, Google Inc. All rights reserved.<br/>
+<a href="mailto:compatibility@android.com">compatibility@android.com</a>
+</p>
+
+<h1 id=table_of_contents>Table of Contents</h1>
+
+<table>
+ <tr>
+    <td>
+<p><a href="#heading=h.msc7y995n414">1. Introduction</a></p>
+
+<p><a href="#heading=h.40sdoojaw5k9">2. Device Types</a></p>
+
+<p><a href="#heading=h.562rcc5o7p3c">2.1 Device Configurations</a></p>
+
+<p><a href="#heading=h.yhzgiu12663m">3. Software</a></p>
+
+<p><a href="#heading=h.kr68507hndy4">3.1. Managed API Compatibility</a></p>
+
+<p><a href="#heading=h.klxc9p5alm1k">3.2. Soft API Compatibility</a></p>
+
+<p><a href="#heading=h.db11p7gvg81n">3.2.1. Permissions</a></p>
+
+<p><a href="#heading=h.3710ebc7nsew">3.2.2. Build Parameters</a></p>
+
+<p><a href="#heading=h.gthv9fjcs0pe">3.2.3. Intent Compatibility</a></p>
+
+<p><a href="#heading=h.qiy4ddbiirgy">3.2.3.1. Core Application Intents</a></p>
+
+<p><a href="#heading=h.bpmvwqbxsymp">3.2.3.2. Intent Overrides</a></p>
+
+<p><a href="#heading=h.r3yyvgtvim43">3.2.3.3. Intent Namespaces</a></p>
+
+<p><a href="#heading=h.r8urpa426zy">3.2.3.4. Broadcast Intents</a></p>
+
+<p><a href="#heading=h.oek6k3rdi0v8">3.2.3.5. Default App Settings</a></p>
+
+<p><a href="#heading=h.3dpths90svxf">3.3. Native API Compatibility</a></p>
+
+<p><a href="#heading=h.jcm6fp8o7lhj">3.3.1 Application Binary Interfaces</a></p>
+
+<p><a href="#heading=h.svlldf3npn1t">3.4. Web Compatibility</a></p>
+
+<p><a href="#heading=h.swqsalizdkk8">3.4.1. WebView Compatibility</a></p>
+
+<p><a href="#heading=h.minm6jqu934x">3.4.2. Browser Compatibility</a></p>
+
+<p><a href="#heading=h.xq343byyb0fz">3.5. API Behavioral Compatibility</a></p>
+
+<p><a href="#heading=h.blmhfmxlmvir">3.6. API Namespaces</a></p>
+
+<p><a href="#heading=h.5159yfnui03c">3.7. Runtime Compatibility</a></p>
+
+<p><a href="#heading=h.6jv9libgzj5i">3.8. User Interface Compatibility</a></p>
+
+<p><a href="#heading=h.uihb1eijkvo">3.8.1. Launcher (Home Screen)</a></p>
+
+<p><a href="#heading=h.v9h5ffzht332">3.8.2. Widgets</a></p>
+
+<p><a href="#heading=h.i9vjtu1lr6go">3.8.3. Notifications</a></p>
+
+<p><a href="#heading=h.6hexhtx5tmrs">3.8.4. Search</a></p>
+
+<p><a href="#heading=h.xc1emmi207w5">3.8.5. Toasts</a></p>
+
+<p><a href="#heading=h.qip8398skywq">3.8.6. Themes</a></p>
+
+<p><a href="#heading=h.c5ay2hae9td">3.8.7. Live Wallpapers</a></p>
+
+<p><a href="#heading=h.zc10jlx04bz">3.8.8. Activity Switching</a></p>
+
+<p><a href="#heading=h.z2dmdulh39vh">3.8.9. Input Management</a></p>
+
+<p><a href="#heading=h.y1dfuxk4g759">3.8.10. Lock Screen Media Control</a></p>
+
+<p><a href="#heading=h.w9tpfodgdigq">3.8.11. Dreams</a></p>
+
+<p><a href="#heading=h.ifi3tjbpjckl">3.8.12. Location</a></p>
+
+<p><a href="#heading=h.ugmg9aj091f8">3.8.13. Unicode and Font</a></p>
+
+<p><a href="#heading=h.yyjxs5mhy231">3.9. Device Administration</a></p>
+
+<p><a href="#heading=h.ynv25r97q6m">3.10. Accessibility</a></p>
+
+<p><a href="#heading=h.d6m0oago1d3y">3.11. Text-to-Speech</a></p>
+
+<p><a href="#heading=h.zdns59cgtxwy">3.12. TV Input Framework</a></p>
+
+<p><a href="#heading=h.z51ce4vpkix">4. Application Packaging Compatibility</a></p>
+
+<p><a href="#heading=h.ddcqv1ggh4y7">5. Multimedia Compatibility</a></p>
+
+<p><a href="#heading=h.qj4xbxk4bysl">5.1. Media Codecs</a></p>
+
+<p><a href="#heading=h.iad8gjulqe75">5.1.1. Audio Codecs</a></p>
+
+<p><a href="#heading=h.rv9qy784zhuc">5.1.2. Image Codecs</a></p>
+
+<p><a href="#heading=h.gxu0pnbldfle">5.1.3. Video Codecs</a></p>
+
+<p><a href="#heading=h.be1ledetmole">5.2. Video Encoding</a></p>
+
+<p><a href="#heading=h.7971wdynbtij">5.3. Video Decoding</a></p>
+
+<p><a href="#heading=h.vtmgyrsev5dt">5.4. Audio Recording</a></p>
+
+<p><a href="#heading=h.ng7fac8ci8vj">5.4.1. Raw Audio Capture</a></p>
+
+<p><a href="#heading=h.sro7nvcaeuc1">5.4.2. Capture for Voice Recognition</a></p>
+
+<p><a href="#heading=h.n5ikz5dupfno">5.4.3. Capture for Rerouting of Playback</a></p>
+
+<p><a href="#heading=h.1xocvxnwynnm">5.5. Audio Playback</a></p>
+
+<p><a href="#heading=h.6zy7486s5cfa">5.5.1. Raw Audio Playback</a></p>
+
+<p><a href="#heading=h.ai1naitm7qfy">5.5.2. Audio Effects</a></p>
+
+<p><a href="#heading=h.fngymkz0321y">5.5.3. Audio Output Volume</a></p>
+
+<p><a href="#heading=h.qpj70us2l5pn">5.6. Audio Latency</a></p>
+
+<p><a href="#heading=h.1p55xhbym9l4">5.7. Network Protocols</a></p>
+
+<p><a href="#heading=h.mpxr2yu72m6t">5.8. Secure Media</a></p>
+
+<p><a href="#heading=h.9v14hzhfhm3p">6. Developer Tools and Options Compatibility</a></p>
+
+<p><a href="#heading=h.9cfw1b5q4g96">6.1. Developer Tools</a></p>
+
+<p><a href="#heading=h.yipuqt964xra">6.2. Developer Options</a></p>
+
+<p><a href="#heading=h.5h5uvpadidzr">7. Hardware Compatibility</a></p>
+
+<p><a href="#heading=h.22h5j37xan6e">7.1. Display and Graphics</a></p>
+
+<p><a href="#heading=h.6fey5v3qb5m3">7.1.1. Screen Configuration</a></p>
+
+<p><a href="#heading=h.mrv5xyps1ba8">7.1.1.1. Screen Size</a></p>
+
+<p><a href="#heading=h.h4amzk7515h2">7.1.1.2. Screen Aspect Ratio</a></p>
+
+<p><a href="#heading=h.2d6r63hcnjt0">7.1.1.3. Screen Density</a></p>
+
+<p><a href="#heading=h.p3dcj1v9ofv0">7.1.2. Display Metrics</a></p>
+</td>
+ </tr>
+</table>
+
+<table>
+ <tr>
+    <td>
+<p><a href="#heading=h.try1r2p8m3vf">7.1.3. Screen Orientation</a></p>
+
+<p><a href="#heading=h.r5sa5dwl0cjh">7.1.4. 2D and 3D Graphics Acceleration</a></p>
+
+<p><a href="#heading=h.r1yeedum5wsi">7.1.5. Legacy Application Compatibility Mode</a></p>
+
+<p><a href="#heading=h.dvbqyf6vof9p">7.1.6. Screen Technology</a></p>
+
+<p><a href="#heading=h.yeaulmskczp3">7.1.7. External Displays</a></p>
+
+<p><a href="#heading=h.1rhjcel5zbe5">7.2. Input Devices</a></p>
+
+<p><a href="#heading=h.egbk02citmz">7.2.1. Keyboard</a></p>
+
+<p><a href="#heading=h.h86aqgcxrqbz">7.2.2. Non-touch Navigation</a></p>
+
+<p><a href="#heading=h.dzfhwcjzm5z6">7.2.3. Navigation Keys</a></p>
+
+<p><a href="#heading=h.p7pmjzzatkph">7.2.4. Touchscreen Input</a></p>
+
+<p><a href="#heading=h.7tz929qk2hjr">7.2.5. Fake Touch Input</a></p>
+
+<p><a href="#heading=h.sdgxpot7e9ff">7.2.6. Game Controller Support</a></p>
+
+<p><a href="#heading=h.e96izopb7n42">7.2.6.1. Button Mappings</a></p>
+
+<p><a href="#heading=h.eija3q5owqll">7.2.7. Remote Control</a></p>
+
+<p><a href="#heading=h.j40lqogjtait">7.3. Sensors</a></p>
+
+<p><a href="#heading=h.3u857dtnrtuj">7.3.1. Accelerometer</a></p>
+
+<p><a href="#heading=h.sf5gr3iz7tz4">7.3.2. Magnetometer</a></p>
+
+<p><a href="#heading=h.2x1nre62p60d">7.3.3. GPS</a></p>
+
+<p><a href="#heading=h.kczbjun4pvap">7.3.4. Gyroscope</a></p>
+
+<p><a href="#heading=h.vmgl07rl8eir">7.3.5. Barometer</a></p>
+
+<p><a href="#heading=h.7gtmh7pqnekm">7.3.6. Thermometer</a></p>
+
+<p><a href="#heading=h.nbgggpsrc5wj">7.3.7. Photometer</a></p>
+
+<p><a href="#heading=h.gus8hybydyk8">7.3.8. Proximity Sensor</a></p>
+
+<p><a href="#heading=h.7y7dtt5ikji6">7.4. Data Connectivity</a></p>
+
+<p><a href="#heading=h.u12n5f7z5iiq">7.4.1. Telephony</a></p>
+
+<p><a href="#heading=h.39g0jrqcl40">7.4.2. IEEE 802.11 (Wi-Fi)</a></p>
+
+<p><a href="#heading=h.82i6ovyqynfx">7.4.2.1. Wi-Fi Direct</a></p>
+
+<p><a href="#heading=h.aia2dpbgueab">7.4.2.2. Wi-Fi Tunneled Direct Link Setup</a></p>
+
+<p><a href="#heading=h.420i0exy2mxj">7.4.3. Bluetooth</a></p>
+
+<p><a href="#heading=h.twzy3bitgp2k">7.4.4. Near-Field Communications</a></p>
+
+<p><a href="#heading=h.sg0l1jarhok9">7.4.5. Minimum Network Capability</a></p>
+
+<p><a href="#heading=h.7agkwed6used">7.4.6. Sync Settings</a></p>
+
+<p><a href="#heading=h.ups9ebpvb6ja">7.5. Cameras</a></p>
+
+<p><a href="#heading=h.v6dmzvarwqkm">7.5.1. Rear-Facing Camera</a></p>
+
+<p><a href="#heading=h.xze6dyxaadh9">7.5.2. Front-Facing Camera</a></p>
+
+<p><a href="#heading=h.q85mgg9m8zhf">7.5.3. External Camera</a></p>
+
+<p><a href="#heading=h.s349dbv4ffl4">7.5.4. Camera API Behavior</a></p>
+
+<p><a href="#heading=h.zguadou53wls">7.5.5. Camera Orientation</a></p>
+
+<p><a href="#heading=h.bodawgb0ngf8">7.6. Memory and Storage</a></p>
+
+<p><a href="#heading=h.q4aoj3xvrlxe">7.6.1. Minimum Memory and Storage</a></p>
+
+<p><a href="#heading=h.8qr43vll8ow">7.6.2. Application Shared Storage</a></p>
+
+<p><a href="#heading=h.rp4zc78xvn6s">7.7. USB</a></p>
+
+<p><a href="#heading=h.fzr0lrcrrfak">7.8. Audio</a></p>
+
+<p><a href="#heading=h.74o7ndqnyrjr">7.8.1. Microphone</a></p>
+
+<p><a href="#heading=h.ro0d402dzkaq">7.8.2. Audio Output</a></p>
+
+<p><a href="#heading=h.luy58niin3j">7.8.2.1. Analog Audio Ports</a></p>
+
+<p><a href="#heading=h.v33sc890yqtg">8. Performance Compatibility</a></p>
+
+<p><a href="#heading=h.jyh6oga0ubgs">8.1. User Experience Consistency</a></p>
+
+<p><a href="#heading=h.9vv5a25p8zcz">8.2. Memory Performance</a></p>
+
+<p><a href="#heading=h.a32osmf1tmwt">9. Security Model Compatibility</a></p>
+
+<p><a href="#heading=h.rj8bxiqpff6s">9.1. Permissions</a></p>
+
+<p><a href="#heading=h.p4gtpuihccdf">9.2. UID and Process Isolation</a></p>
+
+<p><a href="#heading=h.en5p20nyss66">9.3. Filesystem Permissions</a></p>
+
+<p><a href="#heading=h.p5sjwl72r3oz">9.4. Alternate Execution Environments</a></p>
+
+<p><a href="#heading=h.xspotnaue6fc">9.5. Multi-User Support</a></p>
+
+<p><a href="#heading=h.7b5lq2p9nv4j">9.6. Premium SMS Warning</a></p>
+
+<p><a href="#heading=h.io2qcx4xe6hh">9.7. Kernel Security Features</a></p>
+
+<p><a href="#heading=h.u9w027jkf7bb">9.8. Privacy</a></p>
+
+<p><a href="#heading=h.qq3tcq94r919">9.9. Full-Disk Encryption</a></p>
+
+<p><a href="#heading=h.ngllntwu29p6">9.10. Verified Boot</a></p>
+
+<p><a href="#heading=h.rafv96b0uwer">10. Software Compatibility Testing</a></p>
+
+<p><a href="#heading=h.7iuzt59bizon">10.1. Compatibility Test Suite</a></p>
+
+<p><a href="#heading=h.opluz3h21s0b">10.2. CTS Verifier</a></p>
+
+<p><a href="#heading=h.141487psajcw">11. Updatable Software</a></p>
+
+<p><a href="#heading=h.4et8ifl401m5">12. Document Changelog</a></p>
+
+<p><a href="#heading=h.codus8wcjysp">13. Contact Us</a></p>
+
+<p><a href="#heading=h.jhgs5yq2lqtj">14. Resources</a></p>
+</td>
+ </tr>
+</table>
+
+<h1 id=1_introduction>1. Introduction</h1>
+
+
+<p>This document enumerates the requirements that must be met in order for devices
+to be compatible with Android 5.1.</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="http://www.ietf.org/rfc/rfc2119.txt">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 5.1. A
+"device implementation" or "implementation" is the hardware/software solution
+so developed.</p>
+
+<p>To be considered compatible with Android 5.1, 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="#heading=h.rafv96b0uwer">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="http://source.android.com/">Resources, 2</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>
+
+<p>Many of the resources listed in <a href="#heading=h.jhgs5yq2lqtj">section 14</a> are derived directly or indirectly from the Android SDK, and will be
+functionally identical to the information in that SDK's documentation. For any
+case 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 in <a href="#heading=h.jhgs5yq2lqtj">section 14</a> are considered by inclusion to be part of this Compatibility Definition. </p>
+
+<h1 id=2_device_types>2. Device Types</h1>
+
+
+<p>While the Android Open Source Project has been used in the implementation of a
+variety of device types and form factors, many aspects of the architecture and
+compatibility requirements were optimized for handheld devices. Starting from
+Android 5.0, the Android Open Source Project aims to embrace a wider variety of
+device types as described in this section.</p>
+
+<p><strong>Android Handheld device</strong> refers to an Android device implementation that is typically used by holding
+it in the hand, such as mp3 players, phones, and tablets. Android Handheld
+device implementations:</p>
+
+<ul>
+  <li> MUST have a touchscreen embedded in the device
+  <li> MUST have a power source that provides mobility, such as a battery 
+</ul>
+
+<p><strong>Android Television device</strong> refers to an Android device implementation that is an entertainment interface
+for consuming digital media, movies, games, apps, and/or live TV for users
+sitting about ten feet away (a “lean back” or “10-foot user interface”).
+Android Television devices:</p>
+
+<ul>
+  <li> MUST have an embedded screen OR include a video output port, such as VGA, HDMI,
+or a wireless port for display
+  <li> MUST declare the features android.software.leanback and
+android.hardware.type.television [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK">Resources, 3</a>]
+</ul>
+
+<p><strong>Android Watch device</strong> refers to an Android device implementation intended to be worn on the body,
+perhaps on the wrist, and:</p>
+
+<ul>
+  <li> MUST have a screen with the physical diagonal length in the range from 1.1 to
+2.5 inches
+  <li> MUST declare the feature android.hardware.type.watch
+  <li> MUST support uiMode = UI_MODE_TYPE_WATCH [<a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH">Resources, 4</a>]
+</ul>
+
+<p><strong>Android Automotive implementation</strong> refers to a vehicle head
+unit running Android as an operating system for part or all of the system and/or
+infotainment functionality. Android Automotive implementations MUST support
+uiMode = UI_MODE_TYPE_CAR [<a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR">Resources, 111</a>].</p>
+
+<p>All Android device implementations that do not fit into any of the above device
+types still MUST meet all requirements in this document to be Android 5.1
+compatible, unless the requirement is explicitly described to be only
+applicable to a specific Android device type. </p>
+
+<h2 id=2_1_device_configurations>2.1 Device Configurations</h2>
+
+
+<p>This is a summary of major differences in hardware configuration by device
+type. (Empty cells denote a “MAY”). Not all configurations are covered in this
+table; see relevant hardware sections for more detail.</p>
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Category</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Feature </strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Section</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Handheld</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Television</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Watch</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Other</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>Input</p>
+</td>
+    <td>
+<p>D-pad</p>
+</td>
+    <td>
+<p><a href="#heading=h.h86aqgcxrqbz">7.2.2. Non-touch Navigation</a></p>
+</td>
+    <td></td>
+    <td>
+<p>MUST</p>
+</td>
+    <td></td>
+    <td></td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>Touchscreen </p>
+</td>
+    <td>
+<p> <a href="#heading=h.p7pmjzzatkph">7.2.4. Touchscreen input</a></p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td></td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>Microphone </p>
+</td>
+    <td>
+<p><a href="#heading=h.74o7ndqnyrjr">7.8.1. Microphone</a></p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>SHOULD </p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>Sensors</p>
+</td>
+    <td>
+<p>Accelerometer </p>
+</td>
+    <td>
+<p><a href="#heading=h.3u857dtnrtuj">7.3.1 Accelerometer</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td></td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>GPS </p>
+</td>
+    <td>
+<p><a href="#heading=h.2x1nre62p60d">7.3.3. GPS</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td></td>
+    <td></td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>
+<p>Connectivity</p>
+</td>
+    <td>
+<p>Wi-Fi </p>
+</td>
+    <td>
+<p><a href="#heading=h.39g0jrqcl40">7.4.2. IEEE 802.11</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p> MUST</p>
+</td>
+    <td></td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>Wi-Fi Direct </p>
+</td>
+    <td>
+<p><a href="#heading=h.82i6ovyqynfx">7.4.2.1. Wi-Fi Direct</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td></td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>Bluetooth </p>
+</td>
+    <td>
+<p><a href="#heading=h.420i0exy2mxj">7.4.3. Bluetooth</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>Bluetooth Low Energy </p>
+</td>
+    <td>
+<p><a href="#heading=h.420i0exy2mxj">7.4.3. Bluetooth</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>USB peripheral/ host mode </p>
+</td>
+    <td>
+<p><a href="#heading=h.rp4zc78xvn6s">7.7. USB</a></p>
+</td>
+    <td>
+<p>SHOULD</p>
+</td>
+    <td>
+<p> </p>
+</td>
+    <td></td>
+    <td>
+<p>SHOULD</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>Output</p>
+</td>
+    <td>
+<p>Speaker and/or Audio output ports </p>
+</td>
+    <td>
+<p><a href="#heading=h.ro0d402dzkaq">7.8.2. Audio Output</a></p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td>
+<p>MUST</p>
+</td>
+    <td></td>
+    <td>
+<p>MUST</p>
+</td>
+ </tr>
+</table>
+
+
+<h1 id=3_software>3. Software</h1>
+
+
+<h2 id=3_1_managed_api_compatibility>3.1. Managed API Compatibility</h2>
+
+
+<p>The managed Dalvik bytecode 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 runtime environment. Device implementations MUST provide complete
+implementations, including all documented behaviors, of any documented API
+exposed by the Android SDK [<a href="http://developer.android.com/reference/packages.html">Resources, 5</a>] or any API decorated with the "@SystemApi" marker in the upstream Android
+source code. </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="#heading=h.5h5uvpadidzr">section 7</a> for specific requirements for this scenario.</p>
+
+<h2 id=3_2_soft_api_compatibility>3.2. Soft API Compatibility</h2>
+
+
+<p>In addition to the managed APIs from <a href="#heading=h.kr68507hndy4">section 3.1</a>, Android also includes a significant runtime-only "soft" API, in the form of
+such things as intents, permissions, and similar aspects of Android
+applications that cannot be enforced at application compile time.</p>
+
+<h3 id=3_2_1_permissions>3.2.1. Permissions</h3>
+
+
+<p>Device implementers MUST support and enforce all permission constants as
+documented by the Permission reference page [<a href="http://developer.android.com/reference/android/Manifest.permission.html">Resources, 6]</a>. Note that <a href="#heading=h.a32osmf1tmwt">section 9</a> lists additional requirements related to the Android security model.</p>
+
+<h3 id=3_2_2_build_parameters>3.2.2. Build Parameters</h3>
+
+
+<p>The Android APIs include a number of constants on the android.os.Build class [<a href="http://developer.android.com/reference/android/os/Build.html">Resources, 7</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>
+ <tr>
+    <td class="tab0">
+<p><strong>Parameter</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Details</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>VERSION.RELEASE</p>
+</td>
+    <td>
+<p>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="http://source.android.com/compatibility/5.1/versions.html">Resources, 8]</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>VERSION.SDK</p>
+</td>
+    <td>
+<p>The version of the currently-executing Android system, in a format accessible
+to third-party application code. For Android 5.1, this field MUST have the
+integer value 22.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>VERSION.SDK_INT</p>
+</td>
+    <td>
+<p>The version of the currently-executing Android system, in a format accessible
+to third-party application code. For Android 5.1, this field MUST have the
+integer value 22.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>VERSION.INCREMENTAL</p>
+</td>
+    <td>
+<p>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 reused 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 ("").</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>BOARD</p>
+</td>
+    <td>
+<p>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 "^[a-zA-Z0-9_-]+$".</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>BRAND</p>
+</td>
+    <td>
+<p>A value reflecting the brand name associated with the device as known to the
+end users. MUST be in human-readable format and SHOULD represent the
+manufacturer of the device or the company brand under which the device is
+marketed. The value of this field MUST be encodable as 7-bit ASCII and match
+the regular expression "^[a-zA-Z0-9_-]+$".</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab1">
+<p>SUPPORTED_ABIS</p>
+</td>
+    <td>
+<p>The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#heading=h.3dpths90svxf">section 3.3. Native API Compatibility</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab1">
+<p>SUPPORTED_32_BIT_ABIS</p>
+</td>
+    <td>
+<p>The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#heading=h.3dpths90svxf">section 3.3. Native API Compatibility</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab1">
+<p>SUPPORTED_64_BIT_ABIS</p>
+</td>
+    <td>
+<p>The name of the second instruction set (CPU type + ABI convention) of native
+code. See <a href="#heading=h.3dpths90svxf">section 3.3. Native API Compatibility</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>CPU_ABI</p>
+</td>
+    <td>
+<p>The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#heading=h.3dpths90svxf">section 3.3. Native API Compatibility</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>CPU_ABI2</p>
+</td>
+    <td>
+<p>The name of the second instruction set (CPU type + ABI convention) of native
+code. See <a href="#heading=h.3dpths90svxf">section 3.3. Native API Compatibility</a>.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>DEVICE</p>
+</td>
+    <td>
+<p>A value chosen by the device implementer containing the development name or
+code name identifying the configuration of the hardware features and industrial
+design of the device. The value of this field MUST be encodable as 7-bit ASCII
+and match the regular expression "^[a-zA-Z0-9_-]+$".</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>FINGERPRINT</p>
+</td>
+    <td>
+<p>A string that uniquely identifies this build. It SHOULD be reasonably
+human-readable. It MUST follow this template:</p>
+
+<p>$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)</p>
+
+<p>For example:</p>
+
+<p>acme/myproduct/mydevice:5.1/LMYXX/3359:userdebug/test-keys</p>
+
+<p>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.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>HARDWARE</p>
+</td>
+    <td>
+<p>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 "^[a-zA-Z0-9_-]+$". </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>HOST</p>
+</td>
+    <td>
+<p>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 ("").</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>ID</p>
+</td>
+    <td>
+<p>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
+"^[a-zA-Z0-9._-]+$".</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>MANUFACTURER</p>
+</td>
+    <td>
+<p>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 ("").</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>MODEL</p>
+</td>
+    <td>
+<p>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 ("").</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>PRODUCT</p>
+</td>
+    <td>
+<p>A value chosen by the device implementer containing the development name or
+code name of the specific product (SKU) that MUST be unique within the same
+brand. 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 "^[a-zA-Z0-9_-]+$".</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>SERIAL</p>
+</td>
+    <td>
+<p>A hardware serial number, which MUST be available. The value of this field MUST
+be encodable as 7-bit ASCII and match the regular expression
+"^([a-zA-Z0-9]{6,20})$".</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>TAGS</p>
+</td>
+    <td>
+<p>A comma-separated list of tags chosen by the device implementer that further
+distinguishes the build. This field MUST have one of the values corresponding
+to the three typical Android platform signing configurations: release-keys,
+dev-keys, test-keys. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>TIME</p>
+</td>
+    <td>
+<p>A value representing the timestamp of when the build occurred.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>TYPE</p>
+</td>
+    <td>
+<p>A value chosen by the device implementer specifying the runtime configuration
+of the build. This field MUST have one of the values corresponding to the three
+typical Android runtime configurations: user, userdebug, or eng.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>USER</p>
+</td>
+    <td>
+<p>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 ("").</p>
+</td>
+ </tr>
+</table>
+
+
+<h3 id=3_2_3_intent_compatibility>3.2.3. Intent Compatibility</h3>
+
+
+<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 that binds to and implements correct behavior for each
+specified intent pattern.</p>
+
+<h4 id=3_2_3_1_core_application_intents>3.2.3.1. Core Application Intents</h4>
+
+
+<p>Android intents allow application components to request functionality from
+other Android components. The Android upstream project includes a list of
+applications considered core Android applications, which implements several
+intent patterns to perform common actions. The core Android applications are:</p>
+
+<ul>
+  <li> Desk Clock
+  <li> Browser 
+  <li> Calendar
+  <li> Contacts
+  <li> Gallery
+  <li> GlobalSearch
+  <li> Launcher
+  <li> Music
+  <li> Settings
+</ul>
+
+<p>Device implementations SHOULD include the core Android applications as
+appropriate but MUST include a component implementing the same intent patterns
+defined by all the “public” Activity or Service components of these core
+Android applications. Note that Activity or Service components are considered
+"public" when the attribute android:exported is absent or has the value true.</p>
+
+<h4 id=3_2_3_2_intent_overrides>3.2.3.2. Intent Overrides</h4>
+
+
+<p>As Android is an extensible platform, device implementations MUST allow each
+intent pattern referenced in <a href="#heading=h.qiy4ddbiirgy">section 3.2.3.1</a> 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 that allows the user to select between
+multiple applications that 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>
+
+<h4 id=3_2_3_3_intent_namespaces>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 <a href="#heading=h.qiy4ddbiirgy">section 3.2.3.1</a>. Device implementations MAY include intent patterns using namespaces clearly
+and obviously associated with their own organization. This prohibition is
+analogous to that specified for Java language classes in <a href="#heading=h.blmhfmxlmvir">section 3.6</a>.</p>
+
+<h4 id=3_2_3_4_broadcast_intents>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>
+
+<h4 id=3_2_3_5_default_app_settings>3.2.3.5. Default App Settings</h4>
+
+
+<p>Android includes settings that provide users an easy way to select their
+default applications, for example for Home screen or SMS. Where it makes sense,
+device implementations MUST provide a similar settings menu and be compatible
+with the intent filter pattern and API methods described in the SDK
+documentation as below.</p>
+
+<p>Device implementations:</p>
+
+<ul>
+  <li> MUST honor the android.settings.HOME_SETTINGS intent to show a default app
+settings menu for Home Screen, if the device implementation reports
+android.software.home_screen [<a href="http://developer.android.com/reference/android/provider/Settings.html">Resources, 10]</a>
+  <li> MUST provide a settings menu that will call the
+android.provider.Telephony.ACTION_CHANGE_DEFAULT intent to show a dialog to
+change the default SMS application, if the device implementation reports
+android.hardware.telephony [<a href="https://developer.android.com/reference/android/provider/Telephony.Sms.Intents.html">Resources, 9</a>] 
+  <li> MUST honor the android.settings.NFC_PAYMENT_SETTINGS intent to show a default
+app settings menu for Tap and Pay, if the device implementation reports
+android.hardware.nfc.hce [<a href="http://developer.android.com/reference/android/provider/Settings.html">Resources, 10]</a>
+</ul>
+
+<h2 id=3_3_native_api_compatibility>3.3. Native API Compatibility</h2>
+
+
+<h3 id=3_3_1_application_binary_interfaces>3.3.1 Application Binary Interfaces</h3>
+
+
+<p>Managed Dalvik bytecode 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. Device implementations MUST be compatible with one or more
+defined ABIs, and MUST 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> MUST be source-compatible (i.e. header compatible) and binary-compatible (for
+the ABI) with each required library in the list below
+  <li> MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported
+  <li> MUST accurately report the native Application Binary Interface (ABI) supported
+by the device, via the android.os.Build.SUPPORTED_ABIS,
+android.os.Build.SUPPORTED_32_BIT_ABIS, and
+android.os.Build.SUPPORTED_64_BIT_ABIS parameters, each a comma separated list
+of ABIs ordered from the most to the least preferred one
+  <li> MUST report, via the above parameters, only those ABIs documented in the latest
+version of the Android NDK, “NDK Programmer's Guide | ABI Management” in docs/
+directory
+  <li> SHOULD be built using the source code and header files available in the
+upstream Android Open Source Project
+</ul>
+
+<p>The following native code APIs MUST be available to apps that include native
+code:</p>
+
+<ul>
+  <li> libc (C library)
+  <li> libm (math library)
+  <li> Minimal support for C++
+  <li> JNI interface
+  <li> liblog (Android logging)
+  <li> libz (Zlib compression)
+  <li> libdl (dynamic linker)
+  <li> libGLESv1_CM.so (OpenGL ES 1.x)
+  <li> libGLESv2.so (OpenGL ES 2.0)
+  <li> libGLESv3.so (OpenGL ES 3.x)
+  <li> libEGL.so (native OpenGL surface management)
+  <li> libjnigraphics.so
+  <li> libOpenSLES.so (OpenSL ES 1.0.1 audio support)
+  <li> libOpenMAXAL.so (OpenMAX AL 1.0.1 support)
+  <li> libandroid.so (native Android activity support)
+  <li> libmediandk.so (native media APIs support)
+  <li> Support for OpenGL, as described below
+</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 ABIs at all.</p>
+
+<p>Note that device implementations MUST include libGLESv3.so and it MUST symlink
+(symbolic link) to libGLESv2.so. in turn, MUST export all the OpenGL ES 3.1 and
+Android Extension Pack [<a href="http://developer.android.com/guide/topics/graphics/opengl.html#aep">Resources, 11</a>] function symbols as defined in the NDK release android-21. Although all the
+symbols must be present, only the corresponding functions for OpenGL ES
+versions and extensions actually supported by the device must be fully
+implemented.</p>
+
+<p>Native code compatibility is challenging. For this reason, device implementers
+are <strong>very strongly encouraged</strong> to use the implementations of the libraries listed above from the upstream
+Android Open Source Project. </p>
+
+<h2 id=3_4_web_compatibility>3.4. Web Compatibility</h2>
+
+
+<h3 id=3_4_1_webview_compatibility>3.4.1. WebView Compatibility</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>The complete implementation of the android.webkit.Webview API MAY be provided
+on Android Watch devices but MUST be provided on all other types of device
+implementations.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The platform feature android.software.webview MUST be reported on any device
+that provides a complete implementation of the android.webkit.WebView API, and
+MUST NOT be reported on devices without a complete implementation of the API.
+The Android Open Source implementation uses code from the Chromium Project to
+implement the android.webkit.WebView [<a href="http://developer.android.com/reference/android/webkit/WebView.html">Resources, 12</a>]. 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
+Chromium in the WebView implementation. Specifically:</p>
+
+<ul>
+  <li> Device android.webkit.WebView implementations MUST be based on the Chromium
+build from the upstream Android Open Source Project for Android 5.1. This build
+includes a specific set of functionality and security fixes for the WebView [<a href="http://www.chromium.org/">Resources, 13</a>].
+  <li> The user agent string reported by the WebView MUST be in this format: 
+</ul>
+
+<p>Mozilla/5.1 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD))
+AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile
+Safari/537.36</p>
+  <ul>
+    <li> The value of the $(VERSION) string MUST be the same as the value for
+android.os.Build.VERSION.RELEASE.
+    <li> The value of the $(MODEL) string MUST be the same as the value for
+android.os.Build.MODEL.
+    <li> The value of the $(BUILD) string MUST be the same as the value for
+android.os.Build.ID.
+    <li> The value of the $(CHROMIUM_VER) string MUST be the version of Chromium in the
+upstream Android Open Source Project.
+    <li> Device implementations MAY omit Mobile in the user agent string.
+  </ul>
+
+<p>The WebView component SHOULD include support for as many HTML5 features as
+possible and if it supports the feature SHOULD conform to the HTML5
+specification [<a href="https://www.google.com/url?q=https%3A%2F%2Fhtml.spec.whatwg.org%2Fmultipage%2F&sa=D&sntz=1&usg=AFQjCNH7pPjEWho8n19H_n0ZXrQbI9RVlg">Resources, 14</a>].</p>
+
+<h3 id=3_4_2_browser_compatibility>3.4.2. Browser Compatibility</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Television and Watch Devices MAY omit a browser application, but MUST
+support the public intent patterns as described in <a href="#heading=h.qiy4ddbiirgy">section 3.2.3.1</a>. All other types of device implementations MUST include a standalone Browser
+application for general user web browsing. </p>
+</td>
+ </tr>
+</table>
+
+
+<p>The standalone Browser MAY be based on a browser technology other than WebKit.
+However, even if an alternate Browser application is used, the
+android.webkit.WebView component provided to third-party applications MUST be
+based on WebKit, as described in <a href="#heading=h.swqsalizdkk8">section 3.4.1</a>.</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="https://www.google.com/url?q=https%3A%2F%2Fhtml.spec.whatwg.org%2Fmultipage%2F&sa=D&sntz=1&usg=AFQjCNH7pPjEWho8n19H_n0ZXrQbI9RVlg">Resources, 14</a>] as possible. Minimally, device implementations MUST support each of these
+APIs associated with HTML5:</p>
+
+<ul>
+  <li> application cache/offline operation [<a href="http://www.w3.org/html/wg/drafts/html/master/browsers.html#offline">Resources, 15</a>]
+  <li> the <video> tag [<a href="http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#video">Resources, 16</a>]
+  <li> geolocation [<a href="http://www.w3.org/TR/geolocation-API/">Resources, 17</a>]
+</ul>
+
+<p>Additionally, device implementations MUST support the HTML5/W3C webstorage API
+[<a href="http://www.w3.org/TR/webstorage/">Resources, 18</a>], and SHOULD support the HTML5/W3C IndexedDB API [<a href="http://www.w3.org/TR/IndexedDB/">Resources, 19</a>]. 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.</p>
+
+<h2 id=3_5_api_behavioral_compatibility>3.5. API Behavioral Compatibility</h2>
+
+
+<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="http://source.android.com/">Resources, 2</a>]. Some specific areas of compatibility are:</p>
+
+<ul>
+  <li> Devices MUST NOT change the behavior or semantics of a standard intent.
+  <li> Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular
+type of system component (such as Service, Activity, ContentProvider, etc.).
+  <li> Devices MUST NOT change the semantics of a standard permission.
+</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>
+
+<h2 id=3_6_api_namespaces>3.6. API Namespaces</h2>
+
+
+<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> javax.*
+  <li> sun.*
+  <li> android.*
+  <li> com.android.*
+</ul>
+
+<p><strong>Prohibited modifications include</strong>:</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> 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> 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.
+</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
+<uses-library> 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 <a href="https://source.android.com/">source.android.com</a> 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>
+
+<h2 id=3_7_runtime_compatibility>3.7. Runtime Compatibility</h2>
+
+
+<p>Device implementations MUST support the full Dalvik Executable (DEX) format and
+Dalvik bytecode specification and semantics [<a href="https://android.googlesource.com/platform/dalvik/+/lollipop-release/docs/">Resources, 20</a>]. Device implementers SHOULD use ART, the reference upstream implementation of
+the Dalvik Executable Format, and the reference implementation's package
+management system.</p>
+
+<p>Device implementations MUST configure Dalvik runtimes to allocate memory in
+accordance with the upstream Android platform, and as specified by the
+following table. (See <a href="#heading=h.6fey5v3qb5m3">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>
+ <tr>
+    <td class="tab0">
+<p><strong>Screen Layout</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Screen Density</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Minimum Application Memory</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>small / normal</p>
+</td>
+    <td>
+<p>120 dpi (ldpi) </p>
+</td>
+    <td>
+<p>16MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>160 dpi (mdpi)</p>
+</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>213 dpi (tvdpi)</p>
+</td>
+    <td>
+<p>32MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>240 dpi (hdpi)</p>
+</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>280 dpi (280dpi)</p>
+    </td>
+    <td>
+<p>48MB</p>
+    </td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>320 dpi (xhdpi)</p>
+</td>
+    <td>
+<p>64MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>400 dpi (400dpi)</p>
+</td>
+    <td>
+<p>96MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>480 dpi (xxhdpi)</p>
+</td>
+    <td>
+<p>128MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>560 dpi (560dpi)</p>
+</td>
+    <td>
+<p>192MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>640 dpi (xxxhdpi)</p>
+</td>
+    <td>
+<p>256MB</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>large</p>
+</td>
+    <td>
+<p>120 dpi (ldpi) </p>
+</td>
+    <td>
+<p>16MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>160 dpi (mdpi)</p>
+</td>
+    <td>
+<p>32MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>213 dpi (tvdpi)</p>
+</td>
+    <td>
+<p>64MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>240 dpi (hdpi)</p>
+</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>280 dpi (280dpi)</p>
+    </td>
+    <td>
+<p>96MB</p>
+    </td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>320 dpi (xhdpi)</p>
+</td>
+    <td>
+<p>128MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>400 dpi (400dpi)</p>
+</td>
+    <td>
+<p>192MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>480 dpi (xxhdpi)</p>
+</td>
+    <td>
+<p>256MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>560 dpi (560dpi)</p>
+</td>
+    <td>
+<p>384MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>640 dpi (xxxhdpi)</p>
+</td>
+    <td>
+<p>512MB</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>xlarge</p>
+</td>
+    <td>
+<p>160 dpi (mdpi)</p>
+</td>
+    <td>
+<p>64MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>213 dpi (tvdpi)</p>
+</td>
+    <td>
+<p>96MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>240 dpi (hdpi)</p>
+</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>280 dpi (280dpi)</p>
+    </td>
+    <td>
+<p>144MB</p>
+    </td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>320 dpi (xhdpi)</p>
+</td>
+    <td>
+<p>192MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>400 dpi (400dpi)</p>
+</td>
+    <td>
+<p>288MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>480 dpi (xxhdpi)</p>
+</td>
+    <td>
+<p>384MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>560 dpi (560dpi)</p>
+</td>
+    <td>
+<p>576MB</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td>
+<p>640 dpi (xxxhdpi)</p>
+</td>
+    <td>
+<p>768MB</p>
+</td>
+ </tr>
+</table>
+
+
+<h2 id=3_8_user_interface_compatibility>3.8. User Interface Compatibility</h2>
+
+
+<h3 id=3_8_1_launcher_home_screen>3.8.1. Launcher (Home Screen)</h3>
+
+
+<p>Android includes a launcher application (home screen) and support for
+third-party applications to replace the device launcher (home screen). Device
+implementations that allow third-party applications to replace the device home
+screen MUST declare the platform feature android.software.home_screen.</p>
+
+<h3 id=3_8_2_widgets>3.8.2. Widgets</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Widgets are optional for all Android device implementations, but SHOULD be
+supported on Android Handheld devices.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android defines a component type and corresponding API and lifecycle that
+allows applications to expose an "AppWidget" to the end user [<a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">Resources, 21</a>] a feature that is strongly RECOMMENDED to be supported on Handheld Device
+implementations. Device implementations that support embedding widgets on the
+home screen MUST meet the following requirements and declare support for
+platform feature android.software.app_widgets.</p>
+
+<ul>
+  <li> Device launchers MUST include built-in support for AppWidgets, and expose user
+interface affordances to add, configure, view, and remove AppWidgets directly
+within the Launcher.
+  <li> 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="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">Resources, 21</a>] for details.
+  <li> Device implementations that include support for lock screen MAY support
+application widgets on the lock screen.
+</ul>
+
+<h3 id=3_8_3_notifications>3.8.3. Notifications</h3>
+
+
+<p>Android includes APIs that allow developers to notify users of notable events [<a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">Resources, 22</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. This behavior
+is further detailed in <a href="#heading=h.5h5uvpadidzr">section 7</a>.</p>
+
+<p>Additionally, the implementation MUST correctly render all resources (icons,
+sound files, etc.) provided for in the APIs [<a href="https://developer.android.com/guide/topics/resources/available-resources.html">Resources, 23</a>], or in the Status/System Bar icon style guide [<a href="http://developer.android.com/design/style/iconography.html">Resources, 24</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 includes support for various notifications, such as:</p>
+
+<ul>
+  <li> <strong>Rich notifications</strong>—Interactive Views for ongoing notifications. 
+  <li> <strong>Heads-up notifications</strong>—Interactive Views users can act on or dismiss without leaving the current app.
+  <li> <strong>Lockscreen notifications</strong>—Notifications shown over a lock screen with granular control on visibility.
+</ul>
+
+<p>Device implementations MUST properly display and execute these notifications,
+including the title/name, icon, text as documented in the Android APIs <a href="https://developer.android.com/design/patterns/notifications.html">[Resources, 25]</a>.</p>
+
+<p>Android includes Notification Listener Service APIs that allow apps (once
+explicitly enabled by the user) to receive a copy of all notifications as they
+are posted or updated. Device implementations MUST correctly and promptly send
+notifications in their entirety to all such installed and user-enabled listener
+services, including any and all metadata attached to the Notification object.</p>
+
+<h3 id=3_8_4_search>3.8.4. Search</h3>
+
+
+<p>Android includes APIs [<a href="http://developer.android.com/reference/android/app/SearchManager.html">Resources, 26</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>Android device implementations SHOULD include global search, a single, shared,
+system-wide search user interface capable of real-time suggestions in response
+to user input. Device implementations SHOULD implement the APIs that allow
+developers to reuse this user interface to provide search within their own
+applications. Device implementations that implement the global search interface
+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>
+
+<h3 id=3_8_5_toasts>3.8.5. Toasts</h3>
+
+
+<p>Applications can use the "Toast" API to display short non-modal strings to the
+end user, that disappear after a brief period of time [<a href="http://developer.android.com/reference/android/widget/Toast.html">Resources, 27</a>]. Device implementations MUST display Toasts from applications to end users in
+some high-visibility manner.</p>
+
+<h3 id=3_8_6_themes>3.8.6. Themes</h3>
+
+
+<p>Android provides "themes" as a mechanism for applications to apply styles
+across an entire Activity or application.</p>
+
+<p>Android includes a "Holo" theme family 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="http://developer.android.com/guide/topics/ui/themes.html">Resources, 28</a>]. Device implementations MUST NOT alter any of the Holo theme attributes
+exposed to applications [<a href="http://developer.android.com/reference/android/R.style.html">Resources, 29</a>].</p>
+
+<p>Android includes a “Material” theme family as a set of defined styles for
+application developers to use if they want to match the design theme’s look and
+feel across the wide variety of different Android device types. Device
+implementations MUST support the “Material” theme family and MUST NOT alter any
+of the Material theme attributes or their assets exposed to applications [<a href="http://developer.android.com/reference/android/R.style.html#Theme_Material">Resources, 30</a>].</p>
+
+<p>Android also includes a "Device Default" theme family 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 Device Default theme attributes exposed to
+applications [<a href="http://developer.android.com/reference/android/R.style.html">Resources, 29</a>].</p>
+
+<p>Android supports a new variant theme with translucent system bars, which allows
+application developers to fill the area behind the status and navigation bar
+with their app content. To enable a consistent developer experience in this
+configuration, it is important the status bar icon style is maintained across
+different device implementations. Therefore, Android device implementations
+MUST use white for system status icons (such as signal strength and battery
+level) and notifications issued by the system, unless the icon is indicating a
+problematic status [<a href="http://developer.android.com/reference/android/R.style.html">Resources, 29</a>].</p>
+
+<h3 id=3_8_7_live_wallpapers>3.8.7. Live Wallpapers</h3>
+
+
+<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="http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html">Resources, 31</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
+frame rate with no adverse effects 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 OpenGL 2.0 or 3.x 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, and when implemented MUST report the
+platform feature flag android.software.live_wallpaper.</p>
+
+<h3 id=3_8_8_activity_switching>3.8.8. Activity Switching</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>As the Recent function navigation key is OPTIONAL, the requirements to
+implement the overview screen is OPTIONAL for Android Television devices and
+Android Watch devices.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The upstream Android source code includes the overview screen [<a href="http://developer.android.com/guide/components/recents.html">Resources, 32</a>], a system-level user interface for task switching and displaying recently
+accessed activities and tasks using a thumbnail image of the application's
+graphical state at the moment the user last left the application. Device
+implementations including the recents function navigation key as detailed in <a href="#heading=h.dzfhwcjzm5z6">section 7.2.3</a>, MAY alter the interface but MUST meet the following requirements:</p>
+
+<ul>
+  <li> MUST display affiliated recents as a group that moves together
+  <li> MUST support at least up to 20 displayed activities
+  <li> MUST at least display the title of 4 activities at a time
+  <li> SHOULD display highlight color, icon, screen title in recents
+  <li> MUST implement the screen pinning behavior [<a href="https://developer.android.com/about/versions/android-5.0.html#ScreenPinning">Resources, 33</a>] and provide the user with a settings menu to toggle the feature
+  <li> SHOULD display a closing affordance ("x") but MAY delay this until user
+interacts with screens 
+</ul>
+
+<p>Device implementations are STRONGLY ENCOURAGED to use the upstream Android user
+interface (or a similar thumbnail-based interface) for the overview screen.</p>
+
+<h3 id=3_8_9_input_management>3.8.9. Input Management</h3>
+
+
+<p>Android includes support for Input Management and support for third-party input
+method editors [<a href="http://developer.android.com/guide/topics/text/creating-input-method.html">Resources, 34</a>]. Device implementations that allow users to use third-party input methods on
+the device MUST declare the platform feature android.software.input_methods and
+support IME APIs as defined in the Android SDK documentation.</p>
+
+<p>Device implementations that declare the android.software.input_methods feature
+MUST provide a user-accessible mechanism to add and configure third-party input
+methods. Device implementations MUST display the settings interface in response
+to the android.settings.INPUT_METHOD_SETTINGS intent.</p>
+
+<h3 id=3_8_10_lock_screen_media_control>3.8.10. Lock Screen Media Control</h3>
+
+
+<p>The Remote Control Client API is deprecated from Android 5.0 in favor of the
+Media Notification Template that allows media applications to integrate with
+playback controls that are displayed on the lock screen [<a href="https://developer.android.com/reference/android/app/Notification.MediaStyle.html">Resources, 35</a>]. Device implementations that support a lock screen in the device MUST support
+the Media Notification Template along with other notifications.</p>
+
+<h3 id=3_8_11_dreams>3.8.11. Dreams</h3>
+
+
+<p>Android includes support for interactive screensavers called Dreams [<a href="http://developer.android.com/reference/android/service/dreams/DreamService.html">Resources, 36</a>]. Dreams allows users to interact with applications when a device connected to
+a power source is idle or docked in a desk dock. Android Watch devices MAY
+implement Dreams, but other types of device implementations SHOULD include
+support for Dreams and provide a settings option for users to configure Dreams
+in response to the android.settings.DREAM_SETTINGS intent.</p>
+
+<h3 id=3_8_12_location>3.8.12. Location</h3>
+
+
+<p>When a device has a hardware sensor (e.g. GPS) that is capable of providing the
+location coordinates, location modes MUST be displayed in the Location menu
+within Settings [<a href="http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE">Resources, 37</a>]. </p>
+
+<h3 id=3_8_13_unicode_and_font>3.8.13. Unicode and Font</h3>
+
+
+<p>Android includes support for color emoji characters. When Android device
+implementations include an IME, devices MUST provide an input method to the
+user for the Emoji characters defined in Unicode 6.1 [<a href="http://www.unicode.org/versions/Unicode6.1.0/">Resources, 38</a>]. All devices MUST be capable of rendering these emoji characters in color
+glyph.</p>
+
+<p>Android includes support for Roboto 2 font with different
+weights—sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black,
+sans-serif-condensed, sans-serif-condensed-light—which MUST all be included for
+the languages available on the device and full Unicode 7.0 coverage of Latin,
+Greek, and Cyrillic, including the Latin Extended A, B, C, and D ranges, and
+all glyphs in the currency symbols block of Unicode 7.0.</p>
+
+<h2 id=3_9_device_administration>3.9. Device Administration</h2>
+
+
+<p>Android 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="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>]. Device implementations MUST provide an implementation of the
+DevicePolicyManager class [<a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">Resources, 40</a>]. Device implementations that include support for lock screen MUST support the
+full range of device administration policies defined in the Android SDK
+documentation [<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>] and report the platform feature android.software.device_admin.</p>
+
+<p>Device implementations MAY have a preinstalled application performing device
+administration functions but this application MUST NOT be set out-of-the box as
+the default Device Owner app [<a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)">Resources, 41</a>].</p>
+
+<h2 id=3_10_accessibility>3.10. Accessibility</h2>
+
+
+<p>Android provides an accessibility layer that helps users with disabilities to
+navigate their devices more easily. In addition, Android 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="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html">Resources, 42</a>]. Device implementations MUST provide an implementation of the Android
+accessibility framework consistent with the default Android implementation.
+Device implementations MUST meet the following requirements:</p>
+
+<ul>
+  <li> MUST support third-party accessibility service implementations through the
+android.accessibilityservice APIs [<a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">Resources, 43</a>]
+  <li> MUST generate AccessibilityEvents and deliver these events to all registered
+AccessibilityService implementations in a manner consistent with the default
+Android implementation
+  <li> Unless an Android Watch device with no audio output, device implementations
+MUST provide a user-accessible mechanism to enable and disable accessibility
+services, and MUST display this interface in response to the
+android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS intent.
+</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="https://code.google.com/p/eyes-free/">Resources, 44</a>].</p>
+
+<h2 id=3_11_text-to-speech>3.11. Text-to-Speech</h2>
+
+
+<p>Android 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="http://developer.android.com/reference/android/speech/tts/package-summary.html">Resources, 45</a>]. Device implementations reporting the feature android.hardware.audio.output
+MUST meet these requirements related to the Android TTS framework. </p>
+
+<p>Device implementations:</p>
+
+<ul>
+  <li> 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>  MUST support installation of third-party TTS engines
+  <li> MUST provide a user-accessible interface that allows users to select a TTS
+engine for use at the system level
+</ul>
+
+<h2 id=3_12_tv_input_framework>3.12. TV Input Framework</h2>
+
+
+<p>The Android Television Input Framework (TIF) simplifies the delivery of live
+content to Android Television devices. TIF provides a standard API to create
+input modules that control Android Television devices. Android Television
+device implementations MUST support Television Input Framework [<a href="https://source.android.com/devices/tv/index.html">Resources, 46</a>].</p>
+
+<p>Device implementations that support TIF MUST declare the platform feature
+android.software.live_tv. </p>
+
+<h1 id=4_application_packaging_compatibility>4. Application Packaging Compatibility</h1>
+
+
+<p>Device implementations MUST install and run Android ".apk" files as generated
+by the "aapt" tool included in the official Android SDK [<a href="http://developer.android.com/guide/developing/tools/index.html">Resources, 47</a>].</p>
+
+<p>Devices implementations MUST NOT extend either the .apk [<a href="http://developer.android.com/guide/components/fundamentals.html">Resources, 48</a>], Android Manifest [<a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">Resources, 49</a>], Dalvik bytecode [<a href="https://android.googlesource.com/platform/dalvik/+/lollipop-release/docs/">Resources, 20</a>], or RenderScript bytecode formats in such a way that would prevent those
+files from installing and running correctly on other compatible devices</p>
+
+<h1 id=5_multimedia_compatibility>5. Multimedia Compatibility</h1>
+
+
+<h2 id=5_1_media_codecs>5.1. Media Codecs</h2>
+
+
+<p>Device implementations MUST support the core media formats specified in the
+Android SDK documentation [<a href="http://developer.android.com/guide/appendix/media-formats.html">Resources, 50</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>Please note that neither Google nor the Open Handset Alliance make any
+representation that these codecs are free from 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.</p>
+
+<h3 id=5_1_1_audio_codecs>5.1.1. Audio Codecs</h3>
+
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Format / Codec</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Encoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Decoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Details</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Supported File Type(s) / Container Formats</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MPEG-4 AAC Profile</p>
+
+<p>(AAC LC)</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED1</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>Support for mono/stereo/5.0/5.12 content with standard sampling rates from 8 to
+48 kHz.</p>
+</td>
+    <td class="tab4">
+<p>• 3GPP (.3gp)</p>
+
+<p>• MPEG-4 (.mp4, .m4a)</p>
+
+<p>• ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not
+supported)</p>
+
+<p>• MPEG-TS (.ts, not seekable, Android 3.0+)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MPEG-4 HE AAC Profile (AAC+)</p>
+</td>
+    <td>
+<p>REQUIRED1</p>
+
+<p>(Android 4.1+)</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>Support for mono/stereo/5.0/5.12 content with standard sampling rates from 16
+to 48 kHz.</p>
+</td>
+    <td class="tab4"></td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MPEG-4 HE AACv2</p>
+
+<p>Profile (enhanced AAC+)</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>Support for mono/stereo/5.0/5.12 content with standard sampling rates from 16
+to 48 kHz.</p>
+</td>
+    <td class="tab4"></td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>AAC ELD (enhanced low delay AAC)</p>
+</td>
+    <td>
+<p>REQUIRED1 </p>
+
+<p>(Android 4.1+)</p>
+</td>
+    <td>
+<p>REQUIRED</p>
+
+<p>(Android 4.1+)</p>
+</td>
+    <td class="tab3">
+<p>Support for mono/stereo content with standard sampling rates from 16 to 48 kHz.</p>
+</td>
+    <td class="tab4"></td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>AMR-NB</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED3</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED3</p>
+</td>
+    <td class="tab3">
+<p>4.75 to 12.2 kbps sampled @ 8kHz</p>
+</td>
+    <td class="tab4">
+<p>3GPP (.3gp)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>AMR-WB</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED3 </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED3</p>
+</td>
+    <td class="tab3">
+<p>9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz</p>
+</td>
+    <td class="tab4"></td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>FLAC</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td>
+<p>REQUIRED</p>
+
+<p>(Android 3.1+)</p>
+</td>
+    <td class="tab3">
+<p>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.</p>
+</td>
+    <td class="tab3">
+<p>FLAC (.flac) only</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MP3</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td>
+<p>Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR)</p>
+</td>
+    <td class="tab3">
+<p>MP3 (.mp3)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MIDI</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for
+ringtone formats RTTTL/RTX, OTA, and iMelody</p>
+</td>
+    <td class="tab3">
+<p>• Type 0 and 1 (.mid, .xmf, .mxmf)</p>
+
+<p>• RTTTL/RTX (.rtttl, .rtx)</p>
+
+<p>• OTA (.ota)</p>
+
+<p>• iMelody (.imy)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>Vorbis</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>• Ogg (.ogg)</p>
+
+<p>• Matroska (.mkv, Android 4.0+)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>PCM/WAVE</p>
+</td>
+    <td>
+<p>REQUIRED4</p>
+
+<p>(Android 4.1+)</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>16-bit linear PCM (rates up to limit of hardware). Devices MUST support
+sampling rates for raw PCM recording at 8000, 11025, 16000, and 44100 Hz
+frequencies.</p>
+</td>
+    <td class="tab3">
+<p>WAVE (.wav)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>Opus</p>
+</td>
+    <td class="tab3"></td>
+    <td class="tab3">
+<p>REQUIRED</p>
+
+<p>(Android 5.0+)</p>
+</td>
+    <td class="tab3"></td>
+    <td class="tab3">
+<p>Matroska (.mkv)</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for device implementations that define android.hardware.microphone
+but optional for Android Watch device implementations.</p>
+
+<p>2 Only downmix of 5.0/5.1 content is required; recording or rendering more than
+2 channels is optional.</p>
+
+<p>3 Required for Android Handheld device implementations. </p>
+
+<p>4 Required for device implementations that define android.hardware.microphone,
+including Android Watch device implementations.</p>
+
+<h3 id=5_1_2_image_codecs>5.1.2. Image Codecs</h3>
+
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Format / Codec</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Encoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Decoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Details</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Supported File Type(s) / Container Formats</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>JPEG</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>Base+progressive</p>
+</td>
+    <td class="tab3">
+<p>JPEG (.jpg)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>GIF</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>GIF (.gif)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>PNG</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>PNG (.png)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>BMP</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>BMP (.bmp)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>WebP</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>WebP (.webp)</p>
+</td>
+ </tr>
+</table>
+
+
+<h3 id=5_1_3_video_codecs>5.1.3. Video Codecs</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Video codecs are optional for Android Watch device implementations.</p>
+</td>
+ </tr>
+</table>
+
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Format / Codec</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Encoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Decoder</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Details</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Supported File Type(s) / Container Formats</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>H.263</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED1</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>• 3GPP (.3gp)</p>
+
+<p>• MPEG-4 (.mp4)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>H.264 AVC</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+</td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+</td>
+    <td>
+<p>See <a href="#heading=h.be1ledetmole">section 5.2 </a>and <a href="#heading=h.ogx7l5t9zub6">5.3</a> for details</p>
+</td>
+    <td class="tab3">
+<p>• 3GPP (.3gp)</p>
+
+<p>• MPEG-4 (.mp4)</p>
+
+<p>• MPEG-TS (.ts, AAC audio only, not seekable, Android 3.0+)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>H.265 HEVC</p>
+</td>
+    <td class="tab3"></td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+</td>
+    <td>
+<p>See <a href="#heading=h.be1ledetmole">section 5.3</a> for details</p>
+</td>
+    <td class="tab3">
+<p>MPEG-4 (.mp4)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>MPEG-4 SP</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+</td>
+    <td class="tab3">
+<p> </p>
+</td>
+    <td class="tab3">
+<p>3GPP (.3gp)</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>VP83</p>
+</td>
+    <td>
+<p>REQUIRED2</p>
+
+<p>(Android 4.3+)</p>
+</td>
+    <td>
+<p>REQUIRED2</p>
+
+<p>(Android 2.3.3+)</p>
+</td>
+    <td>
+<p>See <a href="#heading=h.be1ledetmole">section 5.2</a> and <a href="#heading=h.ogx7l5t9zub6">5.3</a> for details</p>
+</td>
+    <td>
+<p>• WebM (.webm) [<a href="http://www.webmproject.org/">Resources, 110</a>]</p>
+
+<p>• Matroska (.mkv, Android 4.0+)4</p>
+</td>
+ </tr>
+ <tr>
+    <td class="tab3">
+<p>VP9</p>
+</td>
+    <td class="tab3"></td>
+    <td class="tab3">
+<p>REQUIRED2</p>
+
+<p>(Android 4.4+)</p>
+</td>
+    <td>
+<p>See <a href="#heading=h.be1ledetmole">section 5.</a><u>3</u> for details</p>
+</td>
+    <td>
+<p>• WebM (.webm) [<a href="http://www.webmproject.org/">Resources, 110</a>]</p>
+
+<p>• Matroska (.mkv, Android 4.0+)4</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for device implementations that include camera hardware and define
+android.hardware.camera or android.hardware.camera.front.</p>
+
+<p>2 Required for device implementations except Android Watch devices. </p>
+
+<p>3 For acceptable quality of web video streaming and video-conference services,
+device implementations SHOULD use a hardware VP8 codec that meets the
+requirements in [<a href="http://www.webmproject.org/hardware/rtc-coding-requirements/">Resources, 51</a>].</p>
+
+<p>4 Device implementations SHOULD support writing Matroska WebM files.</p>
+
+<h2 id=5_2_video_encoding>5.2. Video Encoding</h2>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Video codecs are optional for Android Watch device implementations.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android device implementations with H.264 codec support, MUST support Baseline
+Profile Level 3 and the following SD (Standard Definition) video encoding
+profiles and SHOULD support Main Profile Level 4 and the following HD (High
+Definition) video encoding profiles. Android Television devices are STRONGLY
+RECOMMENDED to encode HD 1080p video at 30 fps.</p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p1</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p1</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>  Video resolution</strong></p>
+</td>
+    <td class="tab3">
+<p>320 x 240 px</p>
+</td>
+    <td class="tab3">
+<p>720 x 480 px</p>
+</td>
+    <td class="tab3">
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>  Video frame rate</strong></p>
+</td>
+    <td class="tab3">
+<p>20 fps</p>
+</td>
+    <td class="tab3">
+<p>30 fps</p>
+</td>
+    <td class="tab3">
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>  Video bitrate</strong></p>
+</td>
+    <td class="tab3">
+<p>384 Kbps</p>
+</td>
+    <td class="tab3">
+<p>2 Mbps</p>
+</td>
+    <td class="tab3">
+<p>4 Mbps</p>
+</td>
+    <td>
+<p>10 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 When supported by hardware, but STRONGLY RECOMMENDED for Android Television
+devices.</p>
+
+<p>Android device implementations with VP8 codec support MUST support the SD video
+encoding profiles and SHOULD support the following HD (High Definition) video
+encoding profiles.</p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p1</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p1</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video resolution</strong></p>
+</td>
+    <td>
+<p>320 x 180 px</p>
+</td>
+    <td>
+<p>640 x 360 px</p>
+</td>
+    <td>
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video frame rate</strong></p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video bitrate</strong></p>
+</td>
+    <td>
+<p>800 Kbps </p>
+</td>
+    <td>
+<p>2 Mbps</p>
+</td>
+    <td>
+<p>4 Mbps</p>
+</td>
+    <td>
+<p>10 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 When supported by hardware.</p>
+
+<h2 id=5_3_video_decoding>5.3. Video Decoding</h2>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Video codecs are optional for Android Watch device implementations.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations MUST support dynamic video resolution switching within
+the same stream for VP8, VP9 ,H.264, and H.265 codecs.</p>
+
+<p>Android device implementations with H.264 decoders, MUST support Baseline
+Profile Level 3 and the following SD video decoding profiles and SHOULD support
+the HD decoding profiles. Android Television devices MUST support High Profile
+Level 4.2 and the HD 1080p decoding profile.</p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p1</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p1</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video resolution</strong></p>
+</td>
+    <td>
+<p>320 x 240 px</p>
+</td>
+    <td>
+<p>720 x 480 px</p>
+</td>
+    <td>
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video frame rate</strong></p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps / 60 fps2</p>
+</td>
+    <td>
+<p>30 fps / 60 fps2</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video bitrate</strong></p>
+</td>
+    <td>
+<p>800 Kbps </p>
+</td>
+    <td>
+<p>2 Mbps</p>
+</td>
+    <td>
+<p>8 Mbps</p>
+</td>
+    <td>
+<p>20 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for Android Television device implementations, but for other device
+types only when supported by hardware.</p>
+
+<p>2 Required for Android Television device implementations.</p>
+
+<p>Android device implementations when supporting VP8 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the following SD decoding profiles and SHOULD support the HD
+decoding profiles. Android Television devices MUST support the HD 1080p
+decoding profile.  </p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p1</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p1</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video resolution</strong></p>
+</td>
+    <td>
+<p>320 x 180 px</p>
+</td>
+    <td>
+<p>640 x 360 px</p>
+</td>
+    <td>
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video frame rate</strong></p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps / 60 fps2</p>
+</td>
+    <td>
+<p>30 / 60 fps2</p>
+</td>
+ </tr>
+ <tr>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video bitrate</strong></p>
+</td>
+    <td>
+<p>800 Kbps </p>
+</td>
+    <td>
+<p>2 Mbps</p>
+</td>
+    <td>
+<p>8 Mbps</p>
+</td>
+    <td>
+<p>20 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for Android Television device implementations, but for other type of
+devices only when supported by hardware.</p>
+
+<p>2 Required for Android Television device implementations.</p>
+
+<p>Android device implementations, when supporting VP9 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the following SD video decoding profiles and SHOULD support the
+HD decoding profiles. Android Television devices are STRONGLY RECOMMENDED to
+support the HD 1080p decoding profile and SHOULD support the UHD decoding
+profile. When the UHD video decoding profile is supported, it MUST support 8
+bit color depth.</p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p 1</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p 2</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>UHD 2</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video resolution</strong></p>
+</td>
+    <td>
+<p>320 x 180 px</p>
+</td>
+    <td>
+<p>640 x 360 px</p>
+</td>
+    <td>
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+    <td>
+<p>3840 x 2160 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video frame rate</strong></p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video bitrate</strong></p>
+</td>
+    <td>
+<p>600 Kbps </p>
+</td>
+    <td>
+<p>1.6 Mbps</p>
+</td>
+    <td>
+<p>4 Mbps</p>
+</td>
+    <td>
+<p>10 Mbps</p>
+</td>
+    <td>
+<p>20 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for Android Television device implementations, but for other type of
+devices only when supported by hardware.</p>
+
+<p>2 STRONGLY RECOMMENDED for Android Television device implementations when
+supported by hardware.</p>
+
+<p>Android device implementations, when supporting H.265 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the Main Profile Level 3 Main tier and the following SD video
+decoding profiles and SHOULD support the HD decoding profiles. Android
+Television devices MUST support the Main Profile Level 4.1 Main tier and the HD
+1080p decoding profile and SHOULD support Main10 Level 5 Main Tier profile and
+the UHD decoding profile.</p>
+<table>
+ <tr>
+    <td class="tab0"></td>
+    <td class="tab0">
+<p><strong>SD (Low quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>SD (High quality)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HD 720p </strong>1 </p>
+</td>
+    <td class="tab0">
+<p><strong>HD 1080p </strong>1 </p>
+</td>
+    <td class="tab0">
+<p><strong>UHD </strong>2</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video resolution</strong></p>
+</td>
+    <td>
+<p>352 x 288 px</p>
+</td>
+    <td>
+<p>640 x 360 px</p>
+</td>
+    <td>
+<p>1280 x 720 px</p>
+</td>
+    <td>
+<p>1920 x 1080 px</p>
+</td>
+    <td>
+<p>3840 x 2160 px</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video frame rate</strong></p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+    <td>
+<p>30 fps</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><strong>Video bitrate</strong></p>
+</td>
+    <td>
+<p>600 Kbps </p>
+</td>
+    <td>
+<p>1.6 Mbps</p>
+</td>
+    <td>
+<p>4 Mbps</p>
+</td>
+    <td>
+<p>10 Mbps</p>
+</td>
+    <td>
+<p>20 Mbps</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 Required for Android Television device implementation, but for other type of
+devices only when supported by hardware.</p>
+
+<p>2 Required for Android Television device implementations when supported by
+hardware.</p>
+
+<h2 id=5_4_audio_recording>5.4. Audio Recording</h2>
+
+
+<p>While some of the requirements outlined in this section are stated as SHOULD
+since Android 4.3, the Compatibility Definition for a future version is planned
+to change these to MUST. Existing and new Android devices are <strong>very strongly encouraged</strong> to meet these requirements, or they will not be able to attain Android
+compatibility when upgraded to the future version.</p>
+
+<h3 id=5_4_1_raw_audio_capture>5.4.1. Raw Audio Capture</h3>
+
+
+<p>Device implementations that declare android.hardware.microphone MUST allow
+capture of raw audio content with the following characteristics:</p>
+
+<ul>
+  <li> <strong>Format</strong>: Linear PCM, 16-bit
+  <li> <strong>Sampling rates</strong>: 8000, 11025, 16000, 44100
+  <li> <strong>Channels</strong>: Mono
+</ul>
+
+<p>Device implementations that declare android.hardware.microphone SHOULD allow
+capture of raw audio content with the following characteristics:</p>
+
+<ul>
+  <li> <strong>Format</strong>: Linear PCM, 16-bit
+  <li> <strong>Sampling rates</strong>: 22050, 48000
+  <li> <strong>Channels</strong>: Stereo
+</ul>
+
+<h3 id=5_4_2_capture_for_voice_recognition>5.4.2. Capture for Voice Recognition</h3>
+
+
+<p>In addition to the above recording specifications, when an application has
+started recording an audio stream using the
+android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source:</p>
+
+<ul>
+  <li> The device SHOULD exhibit approximately flat amplitude versus frequency
+characteristics: specifically, ±3 dB, from 100 Hz to 4000 Hz.
+  <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> 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> Total harmonic distortion SHOULD be less than 1% for 1Khz at 90 dB SPL input
+level at the microphone.
+  <li> Noise reduction processing, if present, MUST be disabled.
+  <li> Automatic gain control, if present, MUST be disabled
+</ul>
+
+<p>If the platform supports noise suppression technologies tuned for speech
+recognition, the effect MUST be controllable from the
+android.media.audiofx.NoiseSuppressor API. Moreover, the UUID field for the
+noise suppressor's effect descriptor MUST uniquely identify each implementation
+of the noise suppression technology.</p>
+
+<h3 id=5_4_3_capture_for_rerouting_of_playback>5.4.3. Capture for Rerouting of Playback</h3>
+
+
+<p>The android.media.MediaRecorder.AudioSource class includes the REMOTE_SUBMIX
+audio source. Devices that declare android.hardware.audio.output MUST properly
+implement the REMOTE_SUBMIX audio source so that when an application uses the
+android.media.AudioRecord API to record from this audio source, it can capture
+a mix of all audio streams except for the following:</p>
+
+<ul>
+  <li> STREAM_RING
+  <li> STREAM_ALARM
+  <li> STREAM_NOTIFICATION
+</ul>
+
+<h2 id=5_5_audio_playback>5.5. Audio Playback</h2>
+
+
+<p>Device implementations that declare android.hardware.audio.output MUST conform
+to the requirements in this section.</p>
+
+<h3 id=5_5_1_raw_audio_playback>5.5.1. Raw Audio Playback</h3>
+
+
+<p>The device MUST allow playback of raw audio content with the following
+characteristics:</p>
+
+<ul>
+  <li> <strong>Format</strong>: Linear PCM, 16-bit
+  <li> <strong>Sampling rates</strong>: 8000, 11025, 16000, 22050, 32000, 44100
+  <li> <strong>Channels</strong>: Mono, Stereo
+</ul>
+
+<p>The device SHOULD allow playback of raw audio content with the following
+characteristics:</p>
+
+<ul>
+  <li> <strong>Sampling rates</strong>: 24000, 48000
+</ul>
+
+<h3 id=5_5_2_audio_effects>5.5.2. Audio Effects</h3>
+
+
+<p>Android provides an API for audio effects for device implementations [<a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">Resources, 52</a>]. Device implementations that declare the feature
+android.hardware.audio.output:</p>
+
+<ul>
+  <li> MUST support the EFFECT_TYPE_EQUALIZER and EFFECT_TYPE_LOUDNESS_ENHANCER
+implementations controllable through the AudioEffect subclasses Equalizer,
+LoudnessEnhancer
+  <li> MUST support the visualizer API implementation, controllable through the
+Visualizer class
+  <li> SHOULD support the EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB,
+EFFECT_TYPE_PRESET_REVERB, and EFFECT_TYPE_VIRTUALIZER implementations
+controllable through the AudioEffect sub-classes BassBoost,
+EnvironmentalReverb, PresetReverb, and Virtualizer
+</ul>
+
+<h3 id=5_5_3_audio_output_volume>5.5.3. Audio Output Volume</h3>
+
+
+<p>Android Television device implementations MUST include support for system
+Master Volume and digital audio output volume attenuation on supported outputs,
+except for compressed audio passthrough output (where no audio decoding is done
+on the device).</p>
+
+<h2 id=5_6_audio_latency>5.6. Audio Latency</h2>
+
+
+<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
+sound effects.</p>
+
+<p>For the purposes of this section, use the following definitions:</p>
+
+<ul>
+  <li> <strong>output latency</strong>—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> <strong>cold output latency</strong>—The output latency for the first frame, when the audio output system has been
+idle and powered down prior to the request.
+  <li> <strong>continuous output latency</strong>—The output latency for subsequent frames, after the device is playing audio.
+  <li> <strong>input latency</strong>—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> <strong>cold input latency</strong>—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> <strong>continuous input latency</strong>—The input latency for subsequent frames, while the device is capturing audio.
+  <li> <strong>cold output jitter</strong>—The variance among separate measurements of cold output latency values.
+  <li> <strong>cold input jitter</strong>—The variance among separate measurements of cold input latency values. 
+  <li> <strong>continuous round-trip latency</strong>—The sum of continuous input latency plus continuous output latency plus 5
+milliseconds.
+  <li> <strong>OpenSL ES PCM buffer queue API</strong>—The set of PCM-related OpenSL ES APIs within Android NDK; see
+NDK_root/docs/opensles/index.html.
+</ul>
+
+<p>Device implementations that declare android.hardware.audio.output SHOULD meet
+or exceed these audio output requirements:</p>
+
+<ul>
+  <li> cold output latency of 100 milliseconds or less
+  <li> continuous output latency of 45 milliseconds or less
+  <li> minimize the cold output jitter
+</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
+android.content.pm.PackageManager class [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53</a>]. Conversely, if the device implementation does not meet these requirements it
+MUST NOT report support for low-latency audio.</p>
+
+<p>Device implementations that include android.hardware.microphone SHOULD meet
+these input audio requirements:</p>
+
+<ul>
+  <li> cold input latency of 100 milliseconds or less
+  <li> continuous input latency of 30 milliseconds or less
+  <li> continuous round-trip latency of 50 milliseconds or less
+  <li> minimize the cold input jitter
+</ul>
+
+<h2 id=5_7_network_protocols>5.7. Network Protocols</h2>
+
+
+<p>Devices MUST support the media network protocols for audio and video playback
+as specified in the Android SDK documentation [<a href="http://developer.android.com/guide/appendix/media-formats.html">Resources, 50</a>]. Specifically, devices MUST support the following media network protocols:</p>
+
+<ul>
+  <li> RTSP (RTP, SDP)
+  <li> HTTP(S) progressive streaming
+  <li> HTTP(S) Live Streaming draft protocol, Version 3 [<a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-03">Resources, 54</a>]
+</ul>
+
+<h2 id=5_8_secure_media>5.8. Secure Media</h2>
+
+
+<p>Device implementations that support secure video output and are capable of
+supporting secure surfaces MUST declare support for Display.FLAG_SECURE. Device
+implementations that declare support for Display.FLAG_SECURE, if they support a
+wireless display protocol, MUST secure the link with a cryptographically strong
+mechanism such as HDCP 2.x or higher for Miracast wireless displays. Similarly
+if they support a wired external display, the device implementations MUST
+support HDCP 1.2 or higher. Android Television device implementations MUST
+support HDCP 2.2 for devices supporting 4K resolution and HDCP 1.4 or above for
+lower resolutions. The upstream Android open source implementation includes
+support for wireless (Miracast) and wired (HDMI) displays that satisfies this
+requirement.</p>
+
+<h1 id=6_developer_tools_and_options_compatibility>6. Developer Tools and Options Compatibility</h1>
+
+
+<h2 id=6_1_developer_tools>6.1. Developer Tools</h2>
+
+
+<p>Device implementations MUST support the Android Developer Tools provided in the
+Android SDK. Android compatible devices MUST be compatible with:</p>
+
+<ul>
+  <li> <strong>Android Debug Bridge (adb)</strong> [<a href="http://developer.android.com/tools/help/adb.html">Resources, 55</a>]
+</ul>
+
+<p>Device implementations MUST support all adb functions as documented in the
+Android SDK including dumpsys [<a href="https://source.android.com/devices/tech/input/dumpsys.html">Resources, 56</a>]. The device-side adb daemon MUST be inactive by default and there MUST be a
+user-accessible mechanism to turn on the Android Debug Bridge. If a device
+implementation omits USB peripheral mode, it MUST implement the Android Debug
+Bridge via local-area network (such as Ethernet or 802.11). </p>
+
+<p>Android includes support for secure adb. Secure adb enables adb on known
+authenticated hosts. Device implementations MUST support secure adb.</p>
+
+<ul>
+  <li> <strong>Dalvik Debug Monitor Service (ddms)</strong> [<a href="http://developer.android.com/tools/debugging/ddms.html">Resources, 57</a>]
+</ul>
+
+<p>Device implementations MUST support all ddms features as documented in the
+Android SDK. As ddms uses adb, support for ddms SHOULD be inactive by default,
+but MUST be supported whenever the user has activated the Android Debug Bridge,
+as above.</p>
+
+<ul>
+  <li> <strong>Monkey</strong> [<a href="http://developer.android.com/tools/help/monkey.html">Resources, 58</a>]
+</ul>
+
+<p>Device implementations MUST include the Monkey framework, and make it available
+for applications to use.</p>
+
+<ul>
+  <li> <strong>SysTrace</strong> [<a href="http://developer.android.com/tools/help/systrace.html">Resources, 59</a>]
+</ul>
+
+<p>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.</p>
+
+<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
+adb tool as provided in the standard Android SDK, device implementers MUST
+provide Windows drivers allowing developers to connect to the device using the
+adb protocol. These drivers MUST be provided for Windows XP, Windows Vista,
+Windows 7, Windows 8, and Windows 9 in both 32-bit and 64-bit versions.</p>
+
+<h2 id=6_2_developer_options>6.2. Developer Options</h2>
+
+
+<p>Android 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="http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS">Resources, 60</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 <strong>Settings</strong> > <strong>About Device</strong> > <strong>Build Number</strong> 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>
+
+<h1 id=7_hardware_compatibility>7. Hardware Compatibility</h1>
+
+
+<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 presented. 
+  <li> The API's behaviors MUST be implemented as no-ops in some reasonable fashion.
+  <li> API methods MUST return null values where permitted by the SDK documentation.
+  <li> API methods MUST return no-op implementations of classes where null values are
+not permitted by the SDK documentation.
+  <li> API methods MUST NOT throw exceptions not documented by the SDK documentation.
+</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 consistently report accurate hardware configuration
+information via the getSystemAvailableFeatures() and hasSystemFeature(String)
+methods on the android.content.pm.PackageManager class for the same build
+fingerprint. [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53]</a></p>
+
+<h2 id=7_1_display_and_graphics>7.1. Display and Graphics</h2>
+
+
+<p>Android 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="http://developer.android.com/guide/practices/screens_support.html">Resources, 61</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> <strong>physical diagonal size</strong>—The distance in inches between two opposing corners of the illuminated portion
+of the display.
+  <li> <strong>dots per inch (dpi)</strong>—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> <strong>aspect ratio</strong>—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> <strong>density-independent pixel (dp)</strong>—The virtual pixel unit normalized to a 160 dpi screen, calculated as: pixels =
+dps * (density / 160).
+</ul>
+
+<h3 id=7_1_1_screen_configuration>7.1.1. Screen Configuration</h3>
+
+
+<h4 id=7_1_1_1_screen_size>7.1.1.1. Screen Size</h4>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Watch devices (detailed in <a href="#heading=h.40sdoojaw5k9">section 2</a>) MAY have smaller screen sizes as described in this section.</p>
+</td>
+ </tr>
+</table>
+
+
+<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
+android.content.res.Configuration.screenLayout with the SCREENLAYOUT_SIZE_MASK.
+Device implementations MUST report the correct screen size as defined in the
+Android SDK documentation [<a href="http://developer.android.com/guide/practices/screens_support.html">Resources, 61</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'), unless it
+is an Android Watch device.
+  <li> Devices that report screen size 'normal' MUST have screen sizes of at least 480
+dp x 320 dp.
+  <li> Devices that report screen size 'large' MUST have screen sizes of at least 640
+dp x 480 dp.
+  <li> Devices that report screen size 'xlarge' MUST have screen sizes of at least 960
+dp x 720 dp.
+</ul>
+
+<p>In addition, </p>
+
+<ul>
+  <li> Android Watch devices MUST have a screen with the physical diagonal size in the
+range from 1.1 to 2.5 inches
+  <li> Other types of Android device implementations, with a physically integrated
+screen, MUST have a screen at least 2.5 inches in physical diagonal size.
+</ul>
+
+<p>Devices MUST NOT change their reported screen size at any time.</p>
+
+<p>Applications optionally indicate which screen sizes they support via the
+<supports-screens> 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>
+
+<h4 id=7_1_1_2_screen_aspect_ratio>7.1.1.2. Screen Aspect Ratio</h4>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Watch devices MAY have an aspect ratio of 1.0 (1:1).</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The screen aspect ratio MUST be a value from 1.3333 (4:3) to 1.86 (roughly
+16:9), but Android Watch devices MAY have an aspect ratio of 1.0 (1:1) because
+such a device implementation will use a UI_MODE_TYPE_WATCH as the
+android.content.res.Configuration.uiMode.</p>
+
+<h4 id=7_1_1_3_screen_density>7.1.1.3. Screen Density</h4>
+
+
+<p>The Android UI framework defines a set of standard logical densities to help
+application developers target application resources. Device implementations
+MUST report only one of the following logical Android framework densities
+through the android.util.DisplayMetrics APIs, and MUST execute applications at
+this standard density and MUST NOT change the value at at any time for the
+default display.</p>
+
+<ul>
+  <li> 120 dpi (ldpi)
+  <li> 160 dpi (mdpi)
+  <li> 213 dpi (tvdpi)
+  <li> 240 dpi (hdpi)
+  <li> 280 dpi (280dpi)
+  <li> 320 dpi (xhdpi)
+  <li> 400 dpi (400dpi)
+  <li> 480 dpi (xxhdpi)
+  <li> 560 dpi (560dpi)
+  <li> 640 dpi (xxxhdpi)
+</ul>
+
+<p>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>
+
+<h3 id=7_1_2_display_metrics>7.1.2. Display Metrics</h3>
+
+
+<p>Device implementations MUST report correct values for all display metrics
+defined in android.util.DisplayMetrics [<a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">Resources, 62</a>] and MUST report the same values regardless of whether the embedded or
+external screen is used as the default display.</p>
+
+<h3 id=7_1_3_screen_orientation>7.1.3. Screen Orientation</h3>
+
+
+<p>Devices MUST report which screen orientations they support
+(android.hardware.screen.portrait and/or android.hardware.screen.landscape) and
+MUST report at least one supported orientation. For example, a device with a
+fixed orientation landscape screen, such as a television or laptop, SHOULD only
+report android.hardware.screen.landscape.</p>
+
+<p>Devices that report both screen orientations 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>
+
+<h3 id=7_1_4_2d_and_3d_graphics_acceleration>7.1.4. 2D and 3D Graphics Acceleration</h3>
+
+
+<p>Device implementations MUST support both OpenGL ES 1.0 and 2.0, as embodied and
+detailed in the Android SDK documentations. Device implementations SHOULD
+support OpenGL ES 3.0 or 3.1 on devices capable of supporting it. Device
+implementations MUST also support Android RenderScript, as detailed in the
+Android SDK documentation [<a href="http://developer.android.com/guide/topics/renderscript/">Resources, 63</a>].</p>
+
+<p>Device implementations MUST also correctly identify themselves as supporting
+OpenGL ES 1.0, OpenGL ES 2.0, OpenGL ES 3.0 or OpenGL 3.1. That is:</p>
+
+<ul>
+  <li> The managed APIs (such as via the GLES10.getString()method MUST report support
+for OpenGL ES 1.0 and OpenGL ES 2.0.
+  <li> The native C/C++ OpenGL APIs (APIs available to apps via libGLES_v1CM.so,
+libGLES_v2.so, or libEGL.so) MUST report support for OpenGL ES 1.0 and OpenGL
+ES 2.0.
+  <li> Device implementations that declare support for OpenGL ES 3.0 or 3.1 MUST
+support the corresponding managed APIs and include support for native C/C++
+APIs. On device implementations that declare support for OpenGL ES 3.0 or 3.1,
+libGLESv2.so MUST export the corresponding function symbols in addition to the
+OpenGL ES 2.0 function symbols.
+</ul>
+
+<p>In addition to OpenGL ES 3.1, Android provides an extension pack with Java
+interfaces [<a href="https://developer.android.com/reference/android/opengl/GLES31Ext.html">Resources, 64</a>] and native support for advanced graphics functionality such as tessellation
+and the ASTC texture compression format. Android device implementations MAY
+support this extension pack, and—only if fully implemented—MUST identify the
+support through the android.hardware.opengles.aep feature flag.</p>
+
+<p>Also, 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 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
+to implement any specific texture compression format. However, they SHOULD
+accurately report any texture compression formats that they do support, via the
+getString() method in the OpenGL API.</p>
+
+<p>Android includes a mechanism for applications to declare that they want to
+enable hardware acceleration for 2D graphics at the Application, Activity,
+Window, or View level through the use of a manifest tag
+android:hardwareAccelerated or direct API calls [<a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">Resources, 65</a>].</p>
+
+<p>Device implementations MUST enable hardware acceleration by default, and MUST
+disable hardware acceleration if the developer so requests by setting
+android:hardwareAccelerated="false" 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="http://developer.android.com/guide/topics/graphics/hardware-accel.html">Resources, 65</a>].</p>
+
+<p>Android includes a TextureView object that lets developers directly integrate
+hardware-accelerated OpenGL ES textures as rendering targets in a UI hierarchy.
+Device implementations MUST support the TextureView API, and MUST exhibit
+consistent behavior with the upstream Android implementation.</p>
+
+<p>Android includes support for EGL_ANDROID_RECORDABLE, an EGLConfig attribute
+that indicates whether the EGLConfig supports rendering to an ANativeWindow
+that records images to a video. Device implementations MUST support
+EGL_ANDROID_RECORDABLE extension [<a href="https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt">Resources, 66</a>].</p>
+
+<h3 id=7_1_5_legacy_application_compatibility_mode>7.1.5. Legacy Application Compatibility Mode</h3>
+
+
+<p>Android specifies a "compatibility mode" in which the framework operates in a
+'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>
+
+<h3 id=7_1_6_screen_technology>7.1.6. Screen Technology</h3>
+
+
+<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. </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> Devices MUST support displays capable of rendering animations.
+  <li> The display technology used MUST have a pixel aspect ratio (PAR) between 0.9
+and 1.15. That is, the pixel aspect ratio MUST be near square (1.0) with a 10 ~
+15% tolerance.
+</ul>
+
+<h3 id=7_1_7_external_displays>7.1.7. External Displays</h3>
+
+
+<p>Android 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="http://developer.android.com/reference/android/hardware/display/DisplayManager.html">Resources, 67</a>].</p>
+
+<h2 id=7_2_input_devices>7.2. Input Devices</h2>
+
+<p>Devices MUST support a touchscreen or meet the requirements listed in 7.2.2
+for non-touch navigation.</p>
+
+<h3 id=7_2_1_keyboard>7.2.1. Keyboard</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Watch devices MAY but other type of device implementations MUST
+implement a soft keyboard.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations:</p>
+
+<ul>
+  <li> MUST include support for the Input Management Framework (which allows
+third-party developers to create Input Method Editors—i.e. soft keyboard) as
+detailed at <a href="http://developer.android.com">http://developer.android.com</a>
+  <li> MUST provide at least one soft keyboard implementation (regardless of whether a
+hard keyboard is present) except for Android Watch devices where the screen
+size makes it less reasonable to have a soft keyboard
+  <li> MAY include additional soft keyboard implementations
+  <li> MAY include a hardware keyboard
+  <li> MUST NOT include a hardware keyboard that does not match one of the formats
+specified in android.content.res.Configuration.keyboard [<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Resources, 68</a>] (QWERTY or 12-key)
+</ul>
+
+<h3 id=7_2_2_non-touch_navigation>7.2.2. Non-touch Navigation</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Television devices MUST support D-pad.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations:</p>
+
+<ul>
+  <li> MAY omit a non-touch navigation option (trackball, d-pad, or wheel) if the
+device implementation is not an Android Television device
+  <li> MUST report the correct value for android.content.res.Configuration.navigation
+[<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Resources, 68</a>]
+  <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.
+</ul>
+
+<h3 id=7_2_3_navigation_keys>7.2.3. Navigation Keys</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>The availability and visibility requirement of the Home, Recents, and Back
+functions differ between device types as described in this section.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The Home, Recents, and Back functions (mapped to the key events KEYCODE_HOME,
+KEYCODE_APP_SWITCH, KEYCODE_BACK, respectively) are essential to the Android
+navigation paradigm and therefore;</p>
+
+<ul>
+  <li> Android Handheld device implementations MUST provide the Home, Recents, and
+Back functions. 
+  <li> Android Television device implementations MUST provide the Home and Back
+functions.
+  <li> Android Watch device implementations MUST have the Home function available to
+the user, and the Back function except for when it is in UI_MODE_TYPE_WATCH.
+  <li> All other types of device implementations MUST provide the Home and Back
+functions.
+</ul>
+
+<p>These functions MAY be implemented via dedicated physical buttons (such as
+mechanical or capacitive touch buttons), or MAY be implemented using dedicated
+software keys on a distinct portion of the screen, gestures, touch panel, etc.
+Android supports both implementations. All of these functions MUST be
+accessible with a single action (e.g. tap, double-click or gesture) when
+visible.</p>
+
+<p>Recents function, if provided, MUST have a visible button or icon unless hidden
+together with other navigation functions in full-screen mode. This does not
+apply to devices upgrading from earlier Android versions that have physical
+buttons for navigation and no recents key.</p>
+
+<p> The Home and Back functions, if provided, MUST each have a visible button or
+icon unless hidden together with other navigation functions in full-screen mode
+or when the uiMode UI_MODE_TYPE_MASK is set to UI_MODE_TYPE_WATCH.</p>
+
+<p>The Menu function is deprecated in favor of action bar since Android 4.0.
+Therefore the new device implementations shipping with Android 5.0 and later MUST NOT
+implement a dedicated physical button for the Menu function. Older device
+implementations SHOULD NOT implement a dedicated physical button for the Menu
+function, but if the physical Menu button is implemented and the device is
+running applications with targetSdkVersion > 10, the device implementation:</p>
+
+<ul>
+  <li> MUST display the action overflow button on the action bar when it is visible
+and the resulting action overflow menu popup is not empty. For a device
+implementation launched before Android 4.4 but upgrading to Android 5.1, this
+is RECOMMENDED.
+  <li> MUST NOT modify the position of the action overflow popup displayed by
+selecting the overflow button in the action bar
+  <li> MAY render the action overflow popup at a modified position on the screen when
+it is displayed by selecting the physical menu button
+</ul>
+
+<p>For backwards compatibility, device implementations MUST make the Menu function
+available to applications when targetSdkVersion <= 10, either by a physical
+button, a software key, or gestures. This Menu function should be presented
+unless hidden together with other navigation functions.</p>
+
+<p>Android supports Assist action [<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Resources, 69</a>]. Android device implementations except for Android Watch devices MUST make
+the Assist action available to the user at all times when running applications.
+The Assist action SHOULD be implemented as a long-press on the Home button or a
+swipe-up gesture on the software Home key. This function MAY be implemented via
+another physical button, software key, or gesture, but MUST be accessible with
+a single action (e.g. tap, double-click, or gesture) when other navigation keys
+are visible.</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> Device implementations MUST make available a portion of the display to
+applications that meets the requirements defined in <a href="#heading=h.mrv5xyps1ba8">section 7.1.1</a>.
+  <li> Device implementations MUST display the navigation keys when applications do
+not specify a system UI mode, or specify SYSTEM_UI_FLAG_VISIBLE.
+  <li> Device implementations MUST present the navigation keys in an unobtrusive "low
+profile" (eg. dimmed) mode when applications specify
+SYSTEM_UI_FLAG_LOW_PROFILE.
+  <li> Device implementations MUST hide the navigation keys when applications specify
+SYSTEM_UI_FLAG_HIDE_NAVIGATION.
+</ul>
+
+<h3 id=7_2_4_touchscreen_input>7.2.4. Touchscreen Input</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Handhelds and Watch Devices MUST support touchscreen input.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations SHOULD have a pointer input system of some kind (either
+mouse-like or touch). However, if a device implementation does not support a
+pointer input system, it MUST NOT report the android.hardware.touchscreen or
+android.hardware.faketouch feature constant. Device implementations that do
+include a pointer input system:</p>
+
+<ul>
+  <li> SHOULD support fully independently tracked pointers, if the device input system
+supports multiple pointers
+  <li> MUST report the value of android.content.res.Configuration.touchscreen [<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Resources, 68</a>] corresponding to the type of the specific touchscreen on the device
+</ul>
+
+<p>Android includes support for a variety of touchscreens, touch pads, and fake
+touch input devices. Touchscreen based device implementations are associated
+with a display [<a href="http://source.android.com/devices/tech/input/touch-devices.html">Resources, 70</a>] such that the user has the impression of directly manipulating items on
+screen. Since the user is directly touching the screen, the system does not
+require any additional affordances to indicate the objects being manipulated.
+In contrast, a fake touch interface provides a user input system that
+approximates a subset of touchscreen capabilities. For example, a mouse or
+remote control that drives an on-screen cursor approximates touch, but requires
+the user to first point or focus then click. Numerous input devices like the
+mouse, trackpad, gyro-based air mouse, gyro-pointer, joystick, and multi-touch
+trackpad can support fake touch interactions. Android includes the feature
+constant android.hardware.faketouch, which corresponds to a high-fidelity
+non-touch (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 declare the fake touch feature MUST
+meet the fake touch requirements in <a href="#heading=h.7tz929qk2hjr">section 7.2.5</a>.</p>
+
+<p>Device implementations MUST report the correct feature corresponding to the
+type of input used. Device implementations that include a touchscreen
+(single-touch or better) MUST report the platform feature constant
+android.hardware.touchscreen. Device implementations that report the platform
+feature constant android.hardware.touchscreen MUST also report the platform
+feature constant 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 android.hardware.faketouch if they
+meet the fake touch requirements in <a href="#heading=h.7tz929qk2hjr">section 7.2.5</a>.</p>
+
+<h3 id=7_2_5_fake_touch_input>7.2.5. Fake Touch Input</h3>
+
+
+<p>Device implementations that declare support for android.hardware.faketouch:</p>
+
+<ul>
+  <li> MUST report the absolute X and Y screen positions of the pointer location and
+display a visual pointer on the screen [<a href="http://developer.android.com/reference/android/view/MotionEvent.html">Resources, 71</a>]
+  <li> MUST report touch event with the action code that specifies the state change
+that occurs on the pointer going down or up on the screen [<a href="http://developer.android.com/reference/android/view/MotionEvent.html">Resources, 71</a>]
+  <li> MUST support pointer down and up on an object on the screen, which allows users
+to emulate tap on an object on the screen
+  <li> MUST support pointer down, pointer up, pointer down then pointer up in the same
+place on an object on the screen within a time threshold, which allows users to
+emulate double tap on an object on the screen [<a href="http://developer.android.com/reference/android/view/MotionEvent.html">Resources, 71</a>]
+  <li> MUST support pointer down on an arbitrary point on the screen, pointer move to
+any other arbitrary point on the screen, followed by a pointer up, which allows
+users to emulate a touch drag
+  <li> MUST support pointer down then allow users to quickly move the object to a
+different position on the screen and then pointer up on the screen, which
+allows users to fling an object on the screen
+</ul>
+
+<p>Devices that declare support for android.hardware.faketouch.multitouch.distinct
+MUST meet the requirements for faketouch above, and MUST also support distinct
+tracking of two or more independent pointer inputs.</p>
+
+<h3 id=7_2_6_game_controller_support>7.2.6. Game Controller Support</h3>
+
+
+<p>Android Television device implementations MUST support button mappings for game
+controllers as listed below. The upstream Android implementation includes
+implementation for game controllers that satisfies this requirement. </p>
+
+<h4 id=7_2_6_1_button_mappings>7.2.6.1. Button Mappings</h4>
+
+
+<p>Android Television device implementations MUST support the following key
+mappings:</p>
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Button</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>HID Usage</strong>2</p>
+</td>
+    <td class="tab0">
+<p><strong>Android Button</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_A">A</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0001</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_A (96)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_B">B</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0002</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_B (97)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_X">X</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0004</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_X (99)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_Y">Y</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0005</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_Y (100)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_UP">D-pad up</a>1</p>
+
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_DOWN">D-pad down</a>1</p>
+</td>
+    <td>
+<p>0x01 0x00393</p>
+</td>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_Y">AXIS_HAT_Y</a>4</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_LEFT">D-pad left</a>1</p>
+
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_RIGHT">D-pad right</a>1</p>
+</td>
+    <td>
+<p>0x01 0x00393</p>
+</td>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_X">AXIS_HAT_X4 </a></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_L1">Left shoulder button</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0007</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_L1 (102)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_R1">Right shoulder button</a>1</p>
+</td>
+    <td>
+<p>0x09 0x0008</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_R1 (103)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBL">Left stick click</a>1</p>
+</td>
+    <td>
+<p>0x09 0x000E</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_THUMBL (106)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBR">Right stick click</a>1</p>
+</td>
+    <td>
+<p>0x09 0x000F</p>
+</td>
+    <td>
+<p>KEYCODE_BUTTON_THUMBR (107)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME">Home</a>1</p>
+</td>
+    <td>
+<p>0x0c 0x0223</p>
+</td>
+    <td>
+<p>KEYCODE_HOME (3)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">Back</a>1</p>
+</td>
+    <td>
+<p>0x0c 0x0224</p>
+</td>
+    <td>
+<p>KEYCODE_BACK (4)</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 [<a href="http://developer.android.com/reference/android/view/KeyEvent.html">Resources, 72</a>]</p>
+
+<p>2 The above HID usages must be declared within a Game pad CA (0x01 0x0005).</p>
+
+<p>3 This usage must have a Logical Minimum of 0, a Logical Maximum of 7, a
+Physical Minimum of 0, a Physical Maximum of 315, Units in Degrees, and a
+Report Size of 4. The logical value is defined to be the clockwise rotation
+away from the vertical axis; for example, a logical value of 0 represents no
+rotation and the up button being pressed, while a logical value of 1 represents
+a rotation of 45 degrees and both the up and left keys being pressed.</p>
+
+<p>4 [<a href="http://developer.android.com/reference/android/view/MotionEvent.html">Resources, 71</a>]</p>
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Analog Controls</strong>1</p>
+</td>
+    <td class="tab0">
+<p><strong>HID Usage</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Android Button</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_LTRIGGER">Left Trigger</a></p>
+</td>
+    <td>
+<p>0x02 0x00C5</p>
+</td>
+    <td>
+<p>AXIS_LTRIGGER </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_THROTTLE">Right Trigger</a></p>
+</td>
+    <td>
+<p>0x02 0x00C4</p>
+</td>
+    <td>
+<p>AXIS_RTRIGGER </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Y">Left Joystick</a></p>
+</td>
+    <td>
+<p>0x01 0x0030</p>
+
+<p>0x01 0x0031</p>
+</td>
+    <td>
+<p>AXIS_X</p>
+
+<p>AXIS_Y</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Z">Right Joystick</a></p>
+</td>
+    <td>
+<p>0x01 0x0032</p>
+
+<p>0x01 0x0035</p>
+</td>
+    <td>
+<p>AXIS_Z</p>
+
+<p>AXIS_RZ</p>
+</td>
+ </tr>
+</table>
+
+
+<p>1 [<a href="http://developer.android.com/reference/android/view/MotionEvent.html">Resources, 71</a>]</p>
+
+<h3 id=7_2_7_remote_control>7.2.7. Remote Control</h3>
+
+
+<p>Android Television device implementations SHOULD provide a remote control to
+allow users to access the TV interface. The remote control MAY be a physical
+remote or can be a software-based remote that is accessible from a mobile phone
+or tablet. The remote control MUST meet the requirements defined below.</p>
+
+<ul>
+  <li> <strong>Search affordance</strong>—Device implementations MUST fire KEYCODE_SEARCH when the user invokes voice
+search either on the physical or software-based remote.
+  <li> <strong>Navigation</strong>—All Android Television remotes MUST include Back, Home, and Select buttons and
+support for D-pad events [<a href="http://developer.android.com/reference/android/view/KeyEvent.html">Resources, 72</a>].
+</ul>
+
+<h2 id=7_3_sensors>7.3. Sensors</h2>
+
+
+<p>Android 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 and the
+Android Open Source documentation on sensors [<a href="http://source.android.com/devices/sensors">Resources, 73</a>]. For example, device implementations:</p>
+
+<ul>
+  <li> MUST accurately report the presence or absence of sensors per the
+android.content.pm.PackageManager class [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53]</a>
+  <li> MUST return an accurate list of supported sensors via the
+SensorManager.getSensorList() and similar methods
+  <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> MUST report all sensor measurements using the relevant International System of
+Units (metric) values for each sensor type as defined in the Android SDK
+documentation [<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Resources, 74</a>]
+  <li> SHOULD report the event time in nanoseconds as defined in the Android SDK
+documentation, representing the time the event happened and synchronized with
+the SystemClock.elapsedRealtimeNano() clock. Existing and new Android devices
+are <strong>very strongly encouraged</strong> to meet these requirement so they will be able to upgrade to the future
+platform releases where this might become a REQUIRED component. The
+synchronization error SHOULD be below 100 milliseconds [<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp">Resources, 75</a>].
+</ul>
+
+<p>The list above is not comprehensive; the documented behavior of the Android SDK
+and the Android Open Source Documentations on Sensors [<a href="http://source.android.com/devices/sensors">Resources, 73</a>] is to be considered authoritative.</p>
+
+<p>Some sensor types are composite, 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 as described
+in [<a href="http://source.android.com/devices/sensors/composite_sensors.html">Resources, 76</a>]. If a device implementation includes a composite sensor it MUST implement the
+sensor as described in the Android Open Source documentation on composite
+sensors [<a href="http://source.android.com/devices/sensors/composite_sensors.html">Resources, 76</a>].</p>
+
+<p>Some Android sensor supports a "continuous" trigger mode, which returns data
+continuously [<a href="http://source.android.com/devices/sensors/base_triggers.html#continuous">Resources, 77</a>]. For any API indicated by the Android SDK documentation to be a continuous
+sensor, device implementations MUST continuously provide periodic data samples
+that SHOULD have a jitter below 3%, where jitter is defined as the standard
+deviation of the difference of the reported timestamp values between
+consecutive events.</p>
+
+<p>Note that the device implementations MUST ensure that the sensor event stream
+MUST NOT prevent the device CPU from entering a suspend state or waking up from
+a suspend state.</p>
+
+<p>Finally, when several sensors are activated, the power consumption SHOULD NOT
+exceed the sum of the individual sensor’s reported power consumption.</p>
+
+<h3 id=7_3_1_accelerometer>7.3.1. Accelerometer</h3>
+
+
+<p>Device implementations SHOULD include a 3-axis accelerometer. Android Handheld
+devices and Android Watch devices are strongly encouraged to include this
+sensor. If a device implementation does include a 3-axis accelerometer, it:</p>
+
+<ul>
+  <li> MUST implement and report TYPE_ACCELEROMETER sensor [<a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">Resources, 78</a>]
+  <li> MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
+report events up to at least 200 Hz
+  <li> MUST comply with the Android sensor coordinate system as detailed in the
+Android APIs [<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Resources, 74</a>]
+  <li> MUST be capable of measuring from freefall up to four times the gravity (4g) or
+more on any axis
+  <li> MUST have a resolution of at least 8-bits and SHOULD have a resolution of at
+least 16-bits
+  <li> SHOULD be calibrated while in use if the characteristics changes over the life
+cycle and compensated, and preserve the compensation parameters between device
+reboots
+  <li> SHOULD be temperature compensated
+  <li> MUST have a standard deviation no greater than 0.05 m/s^, where the standard
+deviation should be calculated on a per axis basis on samples collected over a
+period of at least 3 seconds at the fastest sampling rate
+  <li> SHOULD implement the TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR,
+TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER composite sensors as described in the
+Android SDK document. Existing and new Android devices are <strong>very strongly encouraged</strong> to implement the TYPE_SIGNIFICANT_MOTION composite sensor. If any of these
+sensors are implemented, the sum of their power consumption MUST always be less
+than 4 mW and SHOULD each be below 2 mW and 0.5 mW for when the device is in a
+dynamic or static condition.
+  <li> If a gyroscope sensor is included, MUST implement the TYPE_GRAVITY and
+TYPE_LINEAR_ACCELERATION composite sensors and SHOULD implement the
+TYPE_GAME_ROTATION_VECTOR composite sensor. Existing and new Android devices
+are strongly encouraged to implement the TYPE_GAME_ROTATION_VECTOR sensor.
+  <li> SHOULD implement a TYPE_ROTATION_VECTOR composite sensor, if a gyroscope sensor
+and a magnetometer sensor is also included
+</ul>
+
+<h3 id=7_3_2_magnetometer>7.3.2. Magnetometer</h3>
+
+
+<p>Device implementations SHOULD include a 3-axis magnetometer (compass). If a
+device does include a 3-axis magnetometer, it:</p>
+
+<ul>
+  <li> MUST implement the TYPE_MAGNETIC_FIELD sensor and SHOULD also implement
+TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor. Existing and new Android devices are
+strongly encouraged to implement the TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor.
+  <li> MUST be able to report events up to a frequency of at least 10 Hz and SHOULD
+report events up to at least 50 Hz
+  <li> MUST comply with the Android sensor coordinate system as detailed in the
+Android APIs [<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Resources, 74</a>]
+  <li> MUST be capable of measuring between -900 μT and +900 μT on each axis before
+saturating
+  <li> MUST have a hard iron offset value less than 700 μT and SHOULD have a value
+below 200 μT, by placing the magnetometer far from dynamic (current-induced)
+and static (magnet-induced) magnetic fields
+  <li> MUST have a resolution equal or denser than 0.6 μT and SHOULD have a resolution
+equal or denser than 0.2 μT
+  <li> SHOULD be temperature compensated
+  <li> MUST support online calibration and compensation of the hard iron bias, and
+preserve the compensation parameters between device reboots
+  <li> MUST have the soft iron compensation applied—the calibration can be done either
+while in use or during the production of the device
+  <li> SHOULD have a standard deviation, calculated on a per axis basis on samples
+collected over a period of at least 3 seconds at the fastest sampling rate, no
+greater than 0.5 μT
+  <li> SHOULD implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer
+sensor and a gyroscope sensor is also included
+  <li> MAY implement the TYPE_GEOMAGNETIC_ROTATION_VECTOR sensor if an accelerometer
+sensor is also implemented. However if implemented, it MUST consume less than
+10 mW and SHOULD consume less than 3 mW when the sensor is registered for batch
+mode at 10 Hz. 
+</ul>
+
+<h3 id=7_3_3_gps>7.3.3. GPS</h3>
+
+
+<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>
+
+<h3 id=7_3_4_gyroscope>7.3.4. Gyroscope</h3>
+
+
+<p>Device implementations SHOULD include a gyroscope (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 implement the TYPE_GYROSCOPE sensor and SHOULD also implement
+TYPE_GYROSCOPE_UNCALIBRATED sensor. Existing and new Android devices are
+strongly encouraged to implement the SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensor. 
+  <li> MUST be capable of measuring orientation changes up to 1,000 degrees per second
+  <li> MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
+report events up to at least 200 Hz
+  <li> MUST have a resolution of 12-bits or more and SHOULD have a resolution of
+16-bits or more
+  <li> MUST be temperature compensated
+  <li> MUST be calibrated and compensated while in use, and preserve the compensation
+parameters between device reboots
+  <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> SHOULD implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer
+sensor and a magnetometer sensor is also included
+  <li> If an accelerometer sensor is included, MUST implement the TYPE_GRAVITY and
+TYPE_LINEAR_ACCELERATION composite sensors and SHOULD implement the
+TYPE_GAME_ROTATION_VECTOR composite sensor. Existing and new Android devices
+are strongly encouraged to implement the TYPE_GAME_ROTATION_VECTOR sensor.
+</ul>
+
+<h3 id=7_3_5_barometer>7.3.5. Barometer</h3>
+
+
+<p>Device implementations SHOULD include a barometer (ambient air pressure
+sensor). If a device implementation includes a barometer, it:</p>
+
+<ul>
+  <li> MUST implement and report TYPE_PRESSURE sensor
+  <li> MUST be able to deliver events at 5 Hz or greater
+  <li> MUST have adequate precision to enable estimating altitude
+  <li> MUST be temperature compensated
+</ul>
+
+<h3 id=7_3_6_thermometer>7.3.6. Thermometer</h3>
+
+
+<p>Device implementations MAY include an ambient thermometer (temperature sensor).
+If present, it MUST be defined as SENSOR_TYPE_AMBIENT_TEMPERATURE and it MUST
+measure the ambient (room) temperature in degrees Celsius.</p>
+
+<p>Device implementations MAY but SHOULD NOT include a CPU temperature sensor. If
+present, it MUST be defined as SENSOR_TYPE_TEMPERATURE, it MUST measure the
+temperature of the device CPU, and it MUST NOT measure any other temperature.
+Note the SENSOR_TYPE_TEMPERATURE sensor type was deprecated in Android 4.0.</p>
+
+<h3 id=7_3_7_photometer>7.3.7. Photometer</h3>
+
+
+<p>Device implementations MAY include a photometer (ambient light sensor).</p>
+
+<h3 id=7_3_8_proximity_sensor>7.3.8. Proximity Sensor</h3>
+
+
+<p>Device implementations MAY include a proximity sensor. Devices that can make a
+voice call and indicate any value other than PHONE_TYPE_NONE in getPhoneType
+SHOULD include a proximity sensor. If a device implementation does include a
+proximity sensor, it:</p>
+
+<ul>
+  <li> 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.
+  <li> MUST have 1-bit of accuracy or more
+</ul>
+
+<h2 id=7_4_data_connectivity>7.4. Data Connectivity</h2>
+
+
+<h3 id=7_4_1_telephony>7.4.1. Telephony</h3>
+
+
+<p>"Telephony" as used by the Android 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 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 subfeatures, regardless of whether they use a cellular network
+for data connectivity.</p>
+
+<p>Android MAY be used on devices that do not include telephony hardware. That is,
+Android 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>
+
+<h3 id=7_4_2_ieee_802_11_wi-fi>7.4.2. IEEE 802.11 (Wi-Fi)</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Television device implementations MUST include Wi-Fi support. </p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android Television device implementations MUST include support for one or more
+forms of 802.11 (b/g/a/n, etc.) and other types of Android device
+implementation SHOULD include support for one or more forms of 802.11. If a
+device implementation does include support for 802.11 and exposes the
+functionality to a third-party application, it MUST implement the corresponding
+Android API and:</p>
+
+<ul>
+  <li> MUST report the hardware feature flag android.hardware.wifi
+  <li> MUST implement the multicast API as described in the SDK documentation [<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html">Resources, 79</a>]
+  <li> MUST support multicast DNS (mDNS) and MUST NOT filter mDNS packets
+(224.0.0.251) at any time of operation including when the screen is not in an
+active state
+</ul>
+
+<h4 id=7_4_2_1_wi-fi_direct>7.4.2.1. Wi-Fi Direct</h4>
+
+
+<p>Device implementations SHOULD include support for Wi-Fi Direct (Wi-Fi
+peer-to-peer). If a device implementation does include support for Wi-Fi
+Direct, it MUST implement the corresponding Android API as described in the SDK
+documentation [<a href="http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html">Resources, 80</a>]. If a device implementation includes support for Wi-Fi Direct, then it:</p>
+
+<ul>
+  <li> MUST report the hardware feature android.hardware.wifi.direct
+  <li> MUST support regular Wi-Fi operation
+  <li> SHOULD support concurrent Wi-Fi and Wi-Fi Direct operation
+</ul>
+
+<h4 id=7_4_2_2_wi-fi_tunneled_direct_link_setup>7.4.2.2. Wi-Fi Tunneled Direct Link Setup</h4>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Television device implementations MUST include support for Wi-Fi
+Tunneled Direct Link Setup (TDLS).</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android Television device implementations MUST include support for Wi-Fi
+Tunneled Direct Link Setup (TDLS) and other types of Android device
+implementations SHOULD include support for Wi-Fi TDLS as described in the
+Android SDK Documentation [<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html">Resources, 81</a>]. If a device implementation does include support for TDLS and TDLS is enabled
+by the WiFiManager API, the device:</p>
+
+<ul>
+  <li> SHOULD use TDLS only when it is possible AND beneficial
+  <li> SHOULD have some heuristic and NOT use TDLS when its performance might be worse
+than going through the Wi-Fi access point
+</ul>
+
+<h3 id=7_4_3_bluetooth>7.4.3. Bluetooth</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Watch and Automotive implementations MUST support Bluetooth. Android
+Television implementations MUST support Bluetooth and Bluetooth LE.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android includes support for Bluetooth and Bluetooth Low Energy [<a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">Resources, 82</a>]. Device implementations that include support for Bluetooth and Bluetooth Low
+Energy MUST declare the relevant platform features (android.hardware.bluetooth
+and android.hardware.bluetooth_le respectively) and implement the platform
+APIs. Device implementations SHOULD implement relevant Bluetooth profiles such
+as A2DP, AVCP, OBEX, etc. as appropriate for the device. Android Television
+device implementations MUST support Bluetooth and Bluetooth LE. </p>
+
+<p>Device implementations including support for Bluetooth Low Energy:</p>
+
+<ul>
+  <li> MUST declare the hardware feature android.hardware.bluetooth_le
+  <li> MUST enable the GATT (generic attribute profile) based Bluetooth APIs as
+described in the SDK documentation and [<a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">Resources, 82</a>]
+  <li> SHOULD support offloading of the filtering logic to the bluetooth chipset when
+implementing the ScanFilter API [<a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">Resources, 83</a>], and MUST report the correct value of where the filtering logic is
+implemented whenever queried via the
+android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported() method
+  <li> SHOULD support offloading of the batched scanning to the bluetooth chipset, but
+if not supported, MUST report ‘false’ whenever queried via the
+android.bluetooth.BluetoothAdapater.isOffloadedScanBatchingSupported() method.
+  <li> SHOULD support multi advertisement with at least 4 slots, but if not supported,
+MUST report ‘false’ whenever queried via the
+android.bluetooth.BluetoothAdapter.isMultipleAdvertisementSupported() method
+</ul>
+
+<h3 id=7_4_4_near-field_communications>7.4.4. Near-Field Communications</h3>
+
+
+<p>Device implementations SHOULD include a transceiver and related hardware for
+Near-Field Communications (NFC). If a device implementation does include NFC
+hardware and plans to make it available to third-party apps, then it:</p>
+
+<ul>
+  <li> MUST report the android.hardware.nfc feature from the
+android.content.pm.PackageManager.hasSystemFeature() method [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53</a>]
+  <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> NfcB (ISO14443-3B)
+      <li> NfcF (JIS 6319-4)
+      <li> IsoDep (ISO 14443-4)
+      <li> NFC Forum Tag Types 1, 2, 3, 4 (defined by the NFC Forum)
+    </ul>
+  <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, the
+Compatibility Definition for a future version is planned to change these to
+MUST. These standards are optional in this version but will be required in
+future versions. Existing and new devices that run this version of Android are <strong>very strongly encouraged</strong> to meet these requirements now so they will be able to upgrade to the future
+platform releases.
+  <ul>
+    <li> NfcV (ISO 15693)
+  </ul>
+  <li> MUST be capable of transmitting and receiving data via the following
+peer-to-peer standards and protocols:
+  <ul>
+    <li> ISO 18092
+    <li> LLCP 1.0 (defined by the NFC Forum)
+    <li> SDP 1.0 (defined by the NFC Forum)
+    <li> NDEF Push Protocol [<a href="http://static.googleusercontent.com/media/source.android.com/en/us/compatibility/ndef-push-protocol.pdf">Resources, 84</a>]
+    <li> SNEP 1.0 (defined by the NFC Forum)
+  </ul>
+  <li> MUST include support for Android Beam [<a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">Resources, 85</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> MUST honor the android.settings.NFCSHARING_SETTINGS intent to show NFC sharing
+settings [<a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS">Resources, 86</a>]
+    <li> MUST implement the NPP server. Messages received by the NPP server MUST be
+processed the same way as the SNEP default server.
+    <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> 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> SHOULD use a gesture or on-screen confirmation, such as 'Touch to Beam', before
+sending outbound P2P NDEF messages
+    <li> SHOULD enable Android Beam by default and MUST be able to send and receive
+using Android Beam, even when another proprietary NFC P2p mode is turned on
+    <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="http://www.nfc-forum.org/specs/spec_list/#conn_handover">Resources, 87</a>] and "Bluetooth Secure Simple Pairing Using NFC version 1.0" [<a href="http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf">Resources, 88</a>] specs from the NFC Forum. Such an implementation MUST implement the handover
+LLCP service with service name "urn:nfc:sn:handover" for exchanging the
+handover request/select records over NFC, and it MUST use the Bluetooth Object
+Push Profile for the actual Bluetooth data transfer. For legacy reasons (to
+remain compatible with Android 4.1 devices), the implementation SHOULD still
+accept SNEP GET requests for exchanging the handover request/select records
+over NFC. However an implementation itself SHOULD NOT send SNEP GET requests
+for performing connection handover.
+  </ul>
+  <li> MUST poll for all supported technologies while in NFC discovery mode
+  <li> SHOULD be in NFC discovery mode while the device is awake with the screen
+active and the lock-screen unlocked
+</ul>
+</ul>
+
+<p>(Note that publicly available links are not available for the JIS, ISO, and NFC
+Forum specifications cited above.)</p>
+
+<p>Android includes support for NFC Host Card Emulation (HCE) mode. If a
+device implementation does include an NFC controller capable of HCE and
+Application ID (AID) routing, then it:</p>
+
+<ul>
+  <li> MUST report the android.hardware.nfc.hce feature constant
+  <li> MUST support NFC HCE APIs as defined in the Android SDK [<a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">Resources, 10</a>]
+</ul>
+
+<p>Additionally, device implementations MAY include reader/writer support for the
+following MIFARE technologies.</p>
+
+<ul>
+  <li> MIFARE Classic
+  <li> MIFARE Ultralight 
+  <li> NDEF on MIFARE Classic 
+</ul>
+
+<p>Note that Android 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> MUST report the feature com.nxp.mifare from the
+android.content.pm.PackageManager.hasSystemFeature() meth<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">od [Resources, 53]</a>. Note that this is not a standard Android feature and as such does not appear
+as a constant on the PackageManager class.
+  <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
+</ul>
+
+<p>If a device implementation does not include NFC hardware, it MUST NOT declare
+the android.hardware.nfc feature from the
+android.content.pm.PackageManager.hasSystemFeature() method [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53]</a>, and MUST implement the Android NFC API as a no-op.</p>
+
+<p>As the classes android.nfc.NdefMessage and android.nfc.NdefRecord 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>
+
+<h3 id=7_4_5_minimum_network_capability>7.4.5. Minimum Network Capability</h3>
+
+
+<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, Bluetooth PAN, 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 (Wi-Fi).</p>
+
+<p>Devices MAY implement more than one form of data connectivity.</p>
+
+<h3 id=7_4_6_sync_settings>7.4.6. Sync Settings</h3>
+
+
+<p>Device implementations MUST have the master auto-sync setting on by default so
+that the method getMasterSyncAutomatically() returns "true" [<a href="http://developer.android.com/reference/android/content/ContentResolver.html">Resources, 89</a>].</p>
+
+<h2 id=7_5_cameras>7.5. Cameras</h2>
+
+
+<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>
+
+<p>If a device implementation includes at least one camera, it SHOULD be possible
+for an application to simultaneously allocate 3 bitmaps equal to the size of
+the images produced by the largest-resolution camera sensor on the device.</p>
+
+<h3 id=7_5_1_rear-facing_camera>7.5.1. Rear-Facing Camera</h3>
+
+
+<p>Device implementations SHOULD include a rear-facing camera. If a device
+implementation includes at least one rear-facing camera, it:</p>
+
+<ul>
+  <li> MUST report the feature flag android.hardware.camera and
+android.hardware.camera.any 
+  <li> MUST have a resolution of at least 2 megapixels
+  <li> SHOULD have either hardware auto-focus or software auto-focus implemented in
+the camera driver (transparent to application software)
+  <li> MAY have fixed-focus or EDOF (extended depth of field) hardware
+  <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 FLASH_MODE_AUTO or FLASH_MODE_ON attributes
+of a Camera.Parameters object. Note that this constraint does not apply to the
+device's built-in system camera application, but only to third-party
+applications using Camera.PreviewCallback.
+</ul>
+
+<h3 id=7_5_2_front-facing_camera>7.5.2. Front-Facing Camera</h3>
+
+
+<p>Device implementations MAY include a front-facing camera. If a device
+implementation includes at least one front-facing camera, it:</p>
+
+<ul>
+  <li> MUST report the feature flag android.hardware.camera.any and
+android.hardware.camera.front
+  <li> MUST have a resolution of at least VGA (640x480 pixels)
+  <li> MUST NOT use a front-facing camera as the default for the Camera API. The
+camera API in Android 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> MAY include features (such as auto-focus, flash, etc.) available to rear-facing
+cameras as described in <a href="#heading=h.v6dmzvarwqkm">section 7.5.1</a>
+  <li> MUST horizontally reflect (i.e. mirror) the stream displayed by an app in a
+CameraPreview, as follows:
+  <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> If the current application has explicitly requested that the Camera display be
+rotated via a call to the android.hardware.Camera.setDisplayOrientation()[<a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)">Resources, 90</a>] method, the camera preview MUST be mirrored horizontally relative to the
+orientation specified by the application.
+    <li> Otherwise, the preview MUST be mirrored along the device's default horizontal
+axis.
+  </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> MUST NOT mirror the final captured still image or video streams returned to
+application callbacks or committed to media storage
+</ul>
+
+<h3 id=7_5_3_external_camera>7.5.3. External Camera</h3>
+
+
+<p>Device implementations with USB host mode MAY include support for an external
+camera that connects to the USB port. If a device includes support for an
+external camera, it:</p>
+
+<ul>
+  <li> MUST declare the platform feature android.hardware.camera.external and
+android.hardware camera.any
+  <li> MUST support USB Video Class (UVC 1.0 or higher)
+  <li> MAY support multiple cameras
+</ul>
+
+<p>Video compression (such as MJPEG) support is RECOMMENDED to enable transfer of
+high-quality unencoded streams (i.e. raw or independently compressed picture
+streams). Camera-based video encoding MAY be supported. If so, a simultaneous
+unencoded/ MJPEG stream (QVGA or greater resolution) MUST be accessible to the
+device implementation. </p>
+
+<h3 id=7_5_4_camera_api_behavior>7.5.4. Camera API Behavior</h3>
+
+
+<p>Android includes two API packages to access the camera, the newer
+android.hardware.camera2 API expose lower-level camera control to the app,
+including efficient zero-copy burst/streaming flows and per-frame controls of
+exposure, gain, white balance gains, color conversion, denoising, sharpening,
+and more. </p>
+
+<p>The older API package, android.hardware.Camera, is marked as deprecated in
+Android 5.0 but as it should still be available for apps to use Android device
+implementations MUST ensure the continued support of the API as described in
+this section and in the Android SDK.</p>
+
+<p>Device implementations MUST implement the following behaviors for the
+camera-related APIs, for all available cameras:</p>
+
+<ul>
+  <li> If an application has never called
+android.hardware.Camera.Parameters.setPreviewFormat(int), then the device MUST
+use android.hardware.PixelFormat.YCbCr_420_SP for preview data provided to
+application callbacks.
+  <li> If an application registers an android.hardware.Camera.PreviewCallback instance
+and the system calls the onPreviewFrame() method when the preview format is
+YCbCr_420_SP, the data in the byte[] passed into onPreviewFrame() must further
+be in the NV21 encoding format. That is, NV21 MUST be the default.
+  <li> For android.hardware.Camera, device implementations MUST support the YV12
+format (as denoted by the android.graphics.ImageFormat.YV12 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> For android.hardware.camera2, device implementations must support the
+android.hardware.ImageFormat.YUV_420_888 and android.hardware.ImageFormat.JPEG
+formats as outputs through the android.media.ImageReader API.
+</ul>
+
+<p>Device implementations MUST still implement the full Camera API included in the
+Android SDK documentation [<a href="http://developer.android.com/reference/android/hardware/Camera.html">Resources, 91</a>], regardless of whether the device includes hardware autofocus or other
+capabilities. For instance, cameras that lack autofocus MUST still call any
+registered android.hardware.Camera.AutoFocusCallback 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 android.hardware.Camera.Parameters 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
+android.hardware.Camera.setParameters() method other than those documented as
+constants on the android.hardware.Camera.Parameters. 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 Camera.SCENE_MODE_HDR [<a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">Resources, 92</a>].</p>
+
+<p>Because not all device implementations can fully support all the features of
+the android.hardware.camera2 API, device implementations MUST report the proper
+level of support with the android.info.supportedHardwareLevel property as
+described in the Android SDK [<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">Resources, 93]</a> and report the appropriate framework feature flags [<a href="http://source.android.com/devices/camera/versioning.html">Resources, 94]</a>. </p>
+
+<p>Device implementations MUST also declare its Individual camera capabilities of
+android.hardware.camera2 via the android.request.availableCapabilities property
+and declare the appropriate feature flags [<a href="http://source.android.com/devices/camera/versioning.html">Resources, 94]</a>; a device must define the feature flag if any of its attached camera devices
+supports the feature. </p>
+
+<p>Device implementations MUST broadcast the Camera.ACTION_NEW_PICTURE 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 Camera.ACTION_NEW_VIDEO intent
+whenever a new video is recorded by the camera and the entry of the picture has
+been added to the media store.</p>
+
+<h3 id=7_5_5_camera_orientation>7.5.5. Camera Orientation</h3>
+
+
+<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 dimension. 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>
+
+<h2 id=7_6_memory_and_storage>7.6. Memory and Storage</h2>
+
+
+<h3 id=7_6_1_minimum_memory_and_storage>7.6.1. Minimum Memory and Storage</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Television devices MUST have at least 5GB of non-volatile storage
+available for application private data.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The memory available to the kernel and userspace on device implementations MUST
+be at least equal or larger than the minimum values specified by the following
+table. (See <a href="#heading=h.6fey5v3qb5m3">section 7.1.1</a> for screen size and density definitions.)</p>
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Density and screen size</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>32-bit device</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>64-bit device</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>Android Watch devices (due to smaller screens)</p>
+</td>
+    <td>
+<p>416MB</p>
+</td>
+    <td>
+<p>Not applicable</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>xhdpi or lower on small/normal screens</p>
+
+<p>hdpi or lower on large screens</p>
+
+<p>mdpi or lower on extra large screens</p>
+</td>
+    <td>
+<p>512MB</p>
+</td>
+    <td>
+<p>832MB</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>400dpi or higher on small/normal screens</p>
+
+<p>xhdpi or higher on large screens</p>
+
+<p>tvdpi or higher on extra large screens</p>
+</td>
+    <td>
+<p>896MB</p>
+</td>
+    <td>
+<p>1280MB</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>560dpi or higher on small/normal screens</p>
+
+<p>400dpi or higher on large screens</p>
+
+<p>xhdpi or higher on extra large screens</p>
+</td>
+    <td>
+<p>1344MB</p>
+</td>
+    <td>
+<p>1824MB</p>
+</td>
+ </tr>
+</table>
+
+
+<p>The minimum memory values MUST be in addition to any memory space already
+dedicated to hardware components such as radio, video, and so on that is not
+under the kernel's control.</p>
+
+<p>Android Television devices MUST have at least 5GB and other device
+implementations MUST have at least 1.5GB of non-volatile storage available for
+application private data. That is, the /data partition MUST be at least 5GB for
+Android Television devices and at least 1.5GB for other device implementations.
+Device implementations that run Android are <strong>very strongly encouraged</strong> to have at least 3GB of non-volatile storage for application private data so
+they will be able to upgrade to the future platform releases.</p>
+
+<p>The Android APIs include a Download Manager that applications MAY use to
+download data files [<a href="http://developer.android.com/reference/android/app/DownloadManager.html">Resources, 95</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>
+
+<h3 id=7_6_2_application_shared_storage>7.6.2. Application Shared Storage</h3>
+
+
+<p>Device implementations MUST offer shared storage for applications also often
+referred as “shared external storage”. </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 /sdcard, then the device MUST include a Linux symbolic link from /sdcard
+to the actual mount point.</p>
+
+<p>Device implementations MAY have hardware for user-accessible removable storage,
+such as a Secure Digital (SD) card slot. If this slot is used to satisfy the
+shared storage requirement, the device implementation:</p>
+
+<ul>
+  <li> MUST implement a toast or pop-up user interface warning the user when there is
+no SD card
+  <li> MUST include a FAT-formatted SD card 1GB in size or larger OR show on the box
+and other material available at time of purchase that the SD card has to be
+separately purchased
+  <li> MUST mount the SD card by default
+</ul>
+
+<p>Alternatively, device implementations MAY allocate internal (non-removable)
+storage as shared storage for apps as included in the upstream Android Open
+Source Project; device implementations SHOULD use this configuration and
+software implementation. If a device implementation uses internal
+(non-removable) storage to satisfy the shared storage requirement, that storage
+MUST be 1GB in size or larger and mounted on /sdcard (or /sdcard MUST be a
+symbolic link to the physical location if it is mounted elsewhere).</p>
+
+<p>Device implementations MUST enforce as documented the
+android.permission.WRITE_EXTERNAL_STORAGE permission on this shared storage.
+Shared storage MUST otherwise be writable by any application that obtains that
+permission.</p>
+
+<p>Device implementations that include multiple shared storage paths (such as both
+an SD card slot and shared internal storage) MUST NOT allow Android
+applications to write to the secondary external storage, except for their
+package-specific directories on the secondary external storage, but SHOULD
+expose content from both storage paths transparently through Android's media
+scanner service and android.provider.MediaStore.</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, it:</p>
+
+<ul>
+  <li> SHOULD be compatible with the reference Android MTP host, Android File Transfer
+[<a href="http://www.android.com/filetransfer">Resources, 96</a>]
+  <li> SHOULD report a USB device class of 0x00
+  <li> SHOULD report a USB interface name of 'MTP'
+</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>
+
+<h2 id=7_7_usb>7.7. USB</h2>
+
+
+<p>Device implementations SHOULD support USB peripheral mode and SHOULD support
+USB host mode.</p>
+
+<p>If a device implementation includes a USB port supporting peripheral mode:</p>
+
+<ul>
+  <li> The port MUST be connectable to a USB host that has a standard type-A or type
+-C USB port.
+  <li> The port SHOULD use micro-A, micro-AB or type-C USB form factor. Existing and
+new Android devices are <strong>very strongly encouraged to meet these requirements</strong> so they will be able to upgrade to the future platform releases.
+  <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 Android devices are <strong>very strongly encouraged to meet these requirements</strong> so they will be able to upgrade to future platform releases.
+  <li> It MUST allow a USB host connected with the Android device to access the
+contents of the shared storage volume using either USB mass storage or Media
+Transfer Protocol, if the device reports the android.hardware.feature.output
+feature or the android.hardware.camera feature.
+  <li> It SHOULD implement the Android Open Accessory (AOA) API and specification as
+documented in the Android SDK documentation, and if it is an Android Handheld
+device it MUST implement the AOA API. Device implementations implementing the
+AOA specification:
+  <ul>
+    <li> MUST declare support for the hardware feature android.hardware.usb.accessory [<a href="http://developer.android.com/guide/topics/connectivity/usb/accessory.html">Resources, 97</a>]
+    <li> MUST implement the USB audio class as documented in the Android SDK
+documentation [<a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">Resources, 98</a>]
+  </ul>
+  <li> It SHOULD implement support to draw 1.5 A current during HS chirp and traffic
+as specified in the USB battery charging specification [<a href="http://www.usb.org/developers/docs/devclass_docs/USB_Battery_Charging_1.2.pdf">Resources, 99</a>]. Existing and new Android devices are <strong>very strongly encouraged to meet these requirements</strong> so they will be able to upgrade to the future platform releases.
+  <li> The value of iSerialNumber in USB standard device descriptor MUST be equal to
+the value of android.os.Build.SERIAL.
+</ul>
+
+<p>If a device implementation includes a USB port supporting host mode, it:</p>
+
+<ul>
+  <li> SHOULD use a type-C USB port, if the device implementation supports USB 3.1
+  <li> MAY use a non-standard port form factor, but if so MUST ship with a cable or
+cables adapting the port to a standard type-A or type-C USB port
+  <li> MAY use a micro-AB USB port, but if so SHOULD ship with a cable or cables
+adapting the port to a standard type-A or type-C USB port
+  <li> is <strong>very strongly RECOMMENDED</strong> to implement the USB audio class as documented in the Android SDK
+documentation [<a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">Resources, 98</a>]
+  <li> MUST implement the Android USB host API as documented in the Android SDK, and
+MUST declare support for the hardware feature android.hardware.usb.host [<a href="http://developer.android.com/guide/topics/connectivity/usb/host.html">Resources, 100</a>]
+  <li> SHOULD support the Charging Downstream Port output current range of 1.5 A ~ 5 A
+as specified in the USB Battery Charging Specifications [<a href="http://www.usb.org/developers/docs/devclass_docs/USB_Battery_Charging_1.2.pdf">Resources, 99</a>]
+</ul>
+
+<h2 id=7_8_audio>7.8. Audio</h2>
+
+
+<h3 id=7_8_1_microphone>7.8.1. Microphone</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Handheld and Watch devices MUST include a microphone.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations MAY omit a microphone. However, if a device
+implementation omits a microphone, it MUST NOT report the
+android.hardware.microphone feature constant, and MUST implement the audio
+recording API at least as no-ops, per <a href="#heading=h.5h5uvpadidzr">section 7</a>. Conversely, device implementations that do possess a microphone:</p>
+
+<ul>
+  <li> MUST report the android.hardware.microphone feature constant
+  <li> MUST meet the audio recording requirements in <a href="#heading=h.q24elivs4xtv">section 5.4</a>
+  <li> MUST meet the audio latency requirements in <a href="#heading=h.1p55xhbym9l4">section 5.6</a>
+</ul>
+
+<h3 id=7_8_2_audio_output>7.8.2. Audio Output</h3>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Android Watch devices MAY include an audio output.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Device implementations including a speaker or with an audio/multimedia output
+port for an audio output peripheral as a headset or an external speaker:</p>
+
+<ul>
+  <li> MUST report the android.hardware.audio.output feature constant
+  <li> MUST meet the audio playback requirements in <a href="#heading=h.1xocvxnwynnm">section 5.5</a>
+  <li> MUST meet the audio latency requirements in <a href="#heading=h.1p55xhbym9l4">section 5.6</a>
+</ul>
+
+<p>Conversely, if a device implementation does not include a speaker or audio
+output port, it MUST NOT report the android.hardware.audio output feature, and
+MUST implement the Audio Output related APIs as no-ops at least. </p>
+
+<p>Android Watch device implementation MAY but SHOULD NOT have audio output, but
+other types of Android device implementations MUST have an audio output and
+declare android.hardware.audio.output.</p>
+
+<h4 id=7_8_2_1_analog_audio_ports>7.8.2.1. Analog Audio Ports</h4>
+
+
+<p>In order to be compatible with the headsets and other audio accessories using
+the 3.5mm audio plug across the Android ecosystem [<a href="http://source.android.com/accessories/headset-spec.html">Resources, 101</a>], if a device implementation includes one or more analog audio ports, at least
+one of the audio port(s) SHOULD be a 4 conductor 3.5mm audio jack. If a device
+implementation has a 4 conductor 3.5mm audio jack, it:</p>
+
+<ul>
+  <li> MUST support audio playback to stereo headphones and stereo headsets with a
+microphone, and SHOULD support audio recording from stereo headsets with a
+microphone
+  <li> MUST support TRRS audio plugs with the CTIA pin-out order, and SHOULD support
+audio plugs with the OMTP pin-out order
+  <li> MUST support the detection of microphone on the plugged in audio accessory, if
+the device implementation supports a microphone, and broadcast the
+android.intent.action.HEADSET_PLUG with the extra value microphone set as 1
+  <li> SHOULD support the detection and mapping to the keycodes for the following 3
+ranges of equivalent impedance between the microphone and ground conductors on
+the audio plug:
+  <ul>
+    <li> <strong>70 ohm or less</strong>: KEYCODE_HEADSETHOOK
+    <li> <strong>210–290 Ohm</strong>:<strong> </strong>KEYCODE_VOLUME_UP
+    <li> <strong>360–680 Ohm</strong>: KEYCODE_VOLUME_DOWN
+  </ul>
+  <li> SHOULD support the detection and mapping to the keycode for the following range
+of equivalent impedance between the microphone and ground conductors on the
+audio plug:
+  <ul>
+    <li> <strong>110–180 Ohm: </strong>KEYCODE_VOICE_ASSIST
+  </ul>
+  <li> MUST trigger ACTION_HEADSET_PLUG upon a plug insert, but only after all
+contacts on plug are touching their relevant segments on the jack
+  <li> MUST be capable of driving at least 150mV +/- 10% of output voltage on a 32 Ohm
+speaker impedance
+  <li> MUST have a microphone bias voltage between 1.8V ~ 2.9V
+</ul>
+
+<h1 id=8_performance_compatibility>8. Performance Compatibility</h1>
+
+
+<p>Some minimum performance criterias are critical to the user experience and
+impacts the baseline assumptions developers would have when developing an app.
+Android Watch devices SHOULD and other type of device implementations MUST meet
+the following criteria:</p>
+
+<h2 id=8_1_user_experience_consistency>8.1. User Experience Consistency</h2>
+
+
+<p>Device implementations MUST provide a smooth user interface by ensuring a
+consistent frame rate and response times for applications and games. Device
+implementations MUST meet the following requirements: </p>
+
+<ul>
+  <li> <strong>Consistent frame latency</strong>—Inconsistent frame latency or a delay to render frames MUST NOT happen more
+often than 5 frames in a second, and SHOULD be below 1 frames in a second. 
+  <li> <strong>User interface latency</strong>—Device implementations MUST ensure low latency user experience by scrolling a
+list of 10K list entries as defined by the Android Compatibility Test Suite
+(CTS) in less than 36 secs. 
+  <li> <strong>Task switching</strong>—When multiple applications have been launched, re-launching an already-running
+application after it has been launched MUST take less than 1 second.
+</ul>
+
+<h2 id=8_2_file_i_o_access_performance>8.2. File I/O Access Performance</h2>
+
+
+<p>Device implementations MUST ensure file access performance consistency for read
+and write operations. </p>
+
+<ul>
+  <li> <strong>Sequential write</strong>—Device implementations MUST ensure a sequential write performance of 10MB/s
+for a 256MB file using 10MB write buffer. 
+  <li> <strong>Random write</strong>—Device implementations MUST ensure a random write performance of 0.5MB/s for a
+256MB file using 4KB write buffer. 
+  <li> <strong>Sequential read</strong>—Device implementations MUST ensure a sequential read performance of 15MB/s for
+a 256MB file using 10MB write buffer. 
+  <li> <strong>Random read</strong>—Device implementations MUST ensure a random read performance of 3.5MB/s for a
+256MB file using 4KB write buffer. 
+</ul>
+
+<h1 id=9_security_model_compatibility>9. Security Model Compatibility</h1>
+
+
+<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="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</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
+subsections.</p>
+
+<h2 id=9_1_permissions>9.1. Permissions</h2>
+
+
+<p>Device implementations MUST support the Android permissions model as defined in
+the Android developer documentation [<a href="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</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>
+
+<h2 id=9_2_uid_and_process_isolation>9.2. UID and Process Isolation</h2>
+
+
+<p>Device implementations MUST support the Android application sandbox model, in
+which each application runs as a unique Unixstyle 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="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</a>].</p>
+
+<h2 id=9_3_filesystem_permissions>9.3. Filesystem Permissions</h2>
+
+
+<p>Device implementations MUST support the Android file access permissions model
+as defined in the Security and Permissions reference [<a href="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</a>].</p>
+
+<h2 id=9_4_alternate_execution_environments>9.4. Alternate Execution Environments</h2>
+
+
+<p>Device implementations MAY include runtime environments that execute
+applications using some other software or technology than the Dalvik Executable
+Format 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 <a href="#heading=h.a32osmf1tmwt">section 9</a>.</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
+<uses-permission> 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,
+alternate runtimes:</p>
+
+<ul>
+  <li> SHOULD install apps via the PackageManager into separate Android sandboxes (
+Linux user IDs, etc.)
+  <li> MAY provide a single Android sandbox shared by all applications using the
+alternate runtime
+  <li> 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> MUST NOT launch with, grant, or be granted access to the sandboxes
+corresponding to other Android applications
+  <li> MUST NOT be launched with, be granted, or grant to other applications any
+privileges of the superuser (root), or of any other user ID
+</ul>
+
+<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. 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>
+
+<h2 id=9_5_multi-user_support>9.5. Multi-User Support</h2>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>This feature is optional for all device types.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>Android includes support for multiple users and provides support for full user
+isolation [<a href="http://developer.android.com/reference/android/os/UserManager.html">Resources, 103]</a>. Device implementations MAY enable multiple users, but when enabled MUST meet
+the following requirements related to multi-user support [<a href="http://source.android.com/devices/tech/storage">Resources, 104</a>]:</p>
+
+<ul>
+  <li> Device implementations that do not declare the android.hardware.telephony
+feature flag MUST support restricted profiles, a feature that allows device
+owners to manage additional users and their capabilities on the device. With
+restricted profiles, device owners can quickly set up separate environments for
+additional users to work in, with the ability to manage finer-grained
+restrictions in the apps that are available in those environments.
+  <li> Conversely device implementations that declare the android.hardware.telephony
+feature flag MUST NOT support restricted profiles but MUST align with the AOSP
+implementation of controls to enable /disable other users from accessing the
+voice calls and SMS.
+  <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 [<a href="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</a>]
+  <li> Device implementations MAY support creating users and managed profiles via the
+android.app.admin.DevicePolicyManager APIs, and if supported, MUST declare the
+platform feature flag android.software.managed_users. 
+  <li> Device implementations that declare the feature flag
+android.software.managed_users MUST use the upstream AOSP icon badge to
+represent the managed applications and other badge UI elements like Recents &
+Notifications. 
+  <li> 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
+multiuser 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="http://developer.android.com/reference/android/os/Environment.html">Resources, 105</a>] for primary external storage. 
+</ul>
+
+<h2 id=9_6_premium_sms_warning>9.6. Premium SMS Warning</h2>
+
+
+<p>Android includes support for warning users of any outgoing premium SMS message
+[<a href="http://en.wikipedia.org/wiki/Short_code">Resources, 106</a>] . 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 android.hardware.telephony MUST warn users before sending a
+SMS message to numbers identified by regular expressions defined in
+/data/misc/sms/codes.xml file in the device. The upstream Android Open Source
+Project provides an implementation that satisfies this requirement.</p>
+
+<h2 id=9_7_kernel_security_features>9.7. Kernel Security Features</h2>
+
+
+<p>The Android Sandbox includes features that can use the Security-Enhanced Linux
+(SELinux) mandatory access control (MAC) system and other security features in
+the Linux kernel. SELinux or any other security features, if implemented below
+the Android framework:</p>
+
+<ul>
+  <li> MUST maintain compatibility with existing applications
+  <li> MUST NOT have a visible user interface when a security violation is detected
+and successfully blocked, but MAY have a visible user interface when an
+unblocked security violation occurs resulting in a successful exploit
+  <li> SHOULD NOT be user or developer configurable
+</ul>
+
+<p>If any API for configuration of policy is exposed to an application that can
+affect another application (such as a Device Administration API), the API MUST
+NOT allow configurations that break compatibility. </p>
+
+<p>Devices MUST implement SELinux or an equivalent mandatory access control system
+if using a kernel other than Linux and meet the following requirements, which
+are satisfied by the reference implementation in the upstream Android Open
+Source Project.</p>
+
+<p>Device implementations:</p>
+
+<ul>
+  <li> MUST support a SELinux policy that allows the SELinux mode to be set on a
+per-domain basis, and MUST configure all domains in enforcing mode. No
+permissive mode domains are allowed, including domains specific to a
+device/vendor
+  <li> SHOULD load policy from /sepolicy file on the device
+  <li> MUST NOT modify, omit, or replace the neverallow rules present within the
+sepolicy file provided in the upstream Android Open Source Project (AOSP) and
+the policy MUST compile with all neverallow present, for both AOSP SELinux
+domains as well as device/vendor specific domains
+  <li> MUST support dynamic updates of the SELinux policy file without requiring a
+system image update
+</ul>
+
+<p>Device implementations SHOULD retain the default SELinux policy provided in the
+upstream Android Open Source Project, until they have first audited their
+additions to the SELinux policy. Device implementations MUST be compatible with
+the upstream Android Open Source Project.</p>
+
+<h2 id=9_8_privacy>9.8. Privacy</h2>
+
+
+<p>If the device implements functionality in the system that captures the contents
+displayed on the screen and/or records the audio stream played on the device,
+it MUST continuously notify the user whenever this functionality is enabled and
+actively capturing/recording.</p>
+
+<h2 id=9_9_full-disk_encryption>9.9. Full-Disk Encryption</h2>
+
+<table>
+ <tr>
+    <td class="tab2"></td>
+    <td>
+<p>Optional for Android device implementations without a lock screen.</p>
+</td>
+ </tr>
+</table>
+
+
+<p>If the device implementation has a lock screen, the device MUST support
+full-disk encryption of the application private data, (/data partition) as well
+as the SD card partition if it is a permanent, non-removable part of the device
+[<a href="http://source.android.com/devices/tech/encryption/index.html">Resources, 107</a>]. For devices supporting full-disk encryption, the full-disk encryption SHOULD
+be enabled all the time after the user has completed the out-of-box experience.
+While this requirement is stated as SHOULD for this version of the Android
+platform, it is <strong>very strongly RECOMMENDED</strong> as we expect this to change to MUST in the future versions of Android.
+Encryption MUST use AES with a key of 128-bits (or greater) and a mode designed
+for storage (for example, AES-XTS, AES-CBC-ESSIV). The encryption key MUST NOT
+be written to storage at any time without being encrypted. Other than when in
+active use, the encryption key SHOULD be AES encrypted with the lockscreen
+passcode stretched using a slow stretching algorithm (e.g. PBKDF2 or scrypt).
+If the user has not specified a lockscreen passcode or has disabled use of the
+passcode for encryption, the system SHOULD use a default passcode to wrap the
+encryption key. If the device provides a hardware-backed keystore, the password
+stretching algorithm MUST be cryptographically bound to that keystore. The
+encryption key MUST NOT be sent off the device (even when wrapped with the user
+passcode and/or hardware bound key). The upstream Android Open Source project
+provides a preferred implementation of this feature based on the linux kernel
+feature dm-crypt.</p>
+
+<h2 id=9_10_verified_boot>9.10. Verified Boot</h2>
+
+
+<p>Device implementations SHOULD support verified boot for device integrity, and
+if the feature is supported it MUST declare the platform feature flag
+android.software.verified_boot. While this requirement is stated as SHOULD for
+this version of the Android platform, it is <strong>very strongly RECOMMENDED</strong> as we expect this to change to MUST in the future versions of Android. The
+upstream Android Open Source Project provides a preferred implementation of
+this feature based on the linux kernel feature dm-verity.</p>
+
+<h1 id=10_software_compatibility_testing>10. Software Compatibility Testing</h1>
+
+
+<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 <strong>very strongly encouraged</strong> to make the minimum number of changes as possible to the reference and
+preferred implementation of Android 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>
+
+<h2 id=10_1_compatibility_test_suite>10.1. Compatibility Test Suite</h2>
+
+
+<p>Device implementations MUST pass the Android Compatibility Test Suite (CTS) [<a href="http://source.android.com/compatibility/index.html">Resources, 108</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 5.1. Device implementations MUST pass the latest CTS version available
+at the time the device software is completed.</p>
+
+<h2 id=10_2_cts_verifier>10.2. CTS Verifier</h2>
+
+
+<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 that
+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 Verifier only by the set of included
+locales, branding, etc. MAY omit the CTS Verifier test.</p>
+
+<h1 id=11_updatable_software>11. Updatable Software</h1>
+
+
+<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> "Tethered" updates over USB from a host PC
+  <li> "Offline" updates via a reboot and update from a file on removable storage
+</ul>
+
+<p>However, if the device implementation includes support for an unmetered data
+connection such as 802.11 or Bluetooth PAN (Personal Area Network) profile, the
+device MUST support Over-the-air download with offline update via reboot.</p>
+
+<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>For device implementations that are launching with Android 5.1 and later, the
+update mechanism SHOULD support verifying that the system image is binary
+identical to expected result following an OTA. The block-based OTA
+implementation in the upstream Android Open Source Project, added since Android
+5.1, 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>
+
+<h1 id=12_document_changelog>12. Document Changelog</h1>
+
+
+<p>The following table contains a summary of the changes to the Compatibility
+Definition in this release. </p>
+<table>
+ <tr>
+    <td class="tab0">
+<p><strong>Section(s)</strong></p>
+</td>
+    <td class="tab0">
+<p><strong>Summary of change</strong></p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>1. Introduction</p>
+</td>
+    <td>
+<p>Updated requirements to refer to SDK documentation as source of truth.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>2. Device Types</p>
+</td>
+    <td>
+<p>Included definitions for device types for handheld, television, and watch
+devices.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>2.1 Device Configuration</p>
+</td>
+    <td>
+<p>Added non-exhaustive list to illustrate hardware configuration deviation across
+devices.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.1. Managed API Compatibility</p>
+</td>
+    <td>
+<p>MUST also provide complete implementations of APIs with "@SystemApi" marker in
+the upstream Android source code.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.2.2. Build Parameters</p>
+</td>
+    <td>
+<p>Included SUPPORTED_ABIS, SUPPORTED_32_BIT_ABIS, and SUPPORTED_64_BIT_ABIS
+parameters in list, updated PRODUCT to require unique Product SKUs, and updated
+TAGS.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.2.3.1. Core Application Intents</p>
+</td>
+    <td>
+<p>Clarified language that the compatibility requirement is for mainly the intents
+pattern </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.2.3.5. Default App Settings</p>
+</td>
+    <td>
+<p>Included new requirements for home screen, NFC, and default SMS applications.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.3.1 Application Binary Interfaces</p>
+</td>
+    <td>
+<p>Added requirements to support equivalent 32-bit ABI if any 64-bit ABI is
+supported. Updated parameters to reflect this change.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.4.1. WebView Compatibility</p>
+</td>
+    <td>
+<p>Webview compatibility required for all devices except Android Watch devices.
+Removed Locale string requirement.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.4.2. Browser compatibility</p>
+</td>
+    <td>
+<p>Android Television and Watch Devices MAY omit a browser application, but all
+other types of device implementations MUST include one.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.7. Runtime compatibility</p>
+</td>
+    <td>
+<p>Updated Minimum application memory requirements</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.2. Widgets</p>
+</td>
+    <td>
+<p>Widget support is optional for all device types, but recommended for Handheld
+Devices.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.3. Notifications</p>
+</td>
+    <td>
+<p>Expanded definitions for types of supported notifications. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.4. Search</p>
+</td>
+    <td>
+<p>Android Television devices MUST include global search. All other device types
+SHOULD.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.6. Themes</p>
+</td>
+    <td>
+<p>Devices MUST support material theme.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.7. Live Wallpapers</p>
+</td>
+    <td>
+<p>Devices that include live wallpaper MUST report the platform feature flag
+android.software.live_wallpaper.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.8. Activity Switching</p>
+</td>
+    <td>
+<p>Advised requirement to support new Recents User Interface</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.10. Lock Screen Media Remote Control</p>
+</td>
+    <td>
+<p> Remote Control Client API deprecated in favor of the Media Notification
+Template</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.11. Dreams</p>
+</td>
+    <td>
+<p>Optional for Android Watch devices. Required for all other device types.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.8.13 Unicode and font</p>
+</td>
+    <td>
+<p>MUST support Roboto 2 in addition to existing requirements.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>3.12. TV Input Framework</p>
+</td>
+    <td>
+<p>Android Television device implementations MUST support Television Input
+Framework.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.1. Media Codecs</p>
+</td>
+    <td>
+<p>Added 3 sections for Audio, Image, and Video codecs.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.4 Audio Recording</p>
+</td>
+    <td>
+<p>Broken into subsections</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.4.1. Raw audio capture</p>
+</td>
+    <td>
+<p>Defined characteristics for raw audio capture on devices that declare
+android.hardware.microphone</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.5. Audio Playback</p>
+</td>
+    <td>
+<p>Added section 5.5. Audio Playback with 2 subsections: 5.5.1 Audio Effects and
+5.5.2. Audio Output Volume</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.6 Audio Latency</p>
+</td>
+    <td>
+<p>Added definitions and requirements for cold output jitter, cold input jitter,
+and continuous round-trip latency.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>5.8 Secure Media</p>
+</td>
+    <td>
+<p>Included secure media requirements from 7.1.8. External Displays and added
+requirements for Android Television.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>6.1. Developer Tools</p>
+</td>
+    <td>
+<p>Updated resources.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>6.2.1. Experimental</p>
+</td>
+    <td>
+<p>Removed section</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7. Hardware Compatibility</p>
+</td>
+    <td>
+<p>Updated to reflect that device implementations MUST consistently report
+accurate hardware configuration for the same build fingerprint.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.1.1. Screen Size</p>
+</td>
+    <td>
+<p>Updated to reflect Android Watch devices screen size and that the value can’t
+change</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.1.2. Screen Aspect Ratio</p>
+</td>
+    <td>
+<p>Updated to reflect Android Watch devices screen aspect ratio (1:1).</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.3. Screen Orientation</p>
+</td>
+    <td>
+<p>Updated to reflect that devices with a fixed orientation landscape screen
+SHOULD only report that orientation. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.4. 2D and 3D Graphics Acceleration</p>
+</td>
+    <td>
+<p>Added that Android devices MAY support the Android extension pack. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>(old) 7.1.6. Screen Types</p>
+</td>
+    <td>
+<p>Section Removed </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.6. Screen Technology</p>
+</td>
+    <td>
+<p>Updated pixel aspect ratio (PAR) to be between 0.9 and 1.15. (~15% tolerance)</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.1.7. External Displays</p>
+</td>
+    <td>
+<p>Moved part of section to section 5.8. Secure Media.</p>
+</td>
+ </tr>
+  <tr>
+    <td>
+<p>7.2 Input Devices</p>
+</td>
+    <td>
+<p>Added general intro statement.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.2.2. Non-touch Navigation</p>
+</td>
+    <td>
+<p>Android Television devices MUST support D-pad. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.2.3. Navigation keys</p>
+</td>
+    <td>
+<p>Included language for support across different device types. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.2.4. Touchscreen input</p>
+</td>
+    <td>
+<p>Android Watch devices MUST support touchscreen input. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.2.6. Game Controller Support</p>
+</td>
+    <td>
+<p>Added section with Android Television requirements.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.2.7. Remote Control </p>
+</td>
+    <td>
+<p>Added section with Android Television requirements.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3. Sensors</p>
+</td>
+    <td>
+<p>Redefined synthetic sensors as composite sensors and streaming sensors as
+continuous sensors. Sensors should report event time in nanoseconds.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.1. Accelerometer</p>
+</td>
+    <td>
+<p>Clarified required sensor types and revised requirement thresholds. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.2. Magnetometer</p>
+</td>
+    <td>
+<p>Clarified required sensor types and revised requirement thresholds.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.4. Gyroscope</p>
+</td>
+    <td>
+<p>Clarified required sensor types and revised requirement thresholds.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.5. Barometer</p>
+</td>
+    <td>
+<p>Changed from MAY to SHOULD implement barometer. MUST implement and report
+TYPE_PRESSURE sensor.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.6. Thermometer</p>
+</td>
+    <td>
+<p>Devices MAY include ambient thermometer. MAY but SHOULD NOT include CPU
+thermometer.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.3.8. Proximity Sensor</p>
+</td>
+    <td>
+<p>Devices that can make a voice call and indicate any value other than
+PHONE_TYPE_NONE in getPhoneType SHOULD include a proximity sensor.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.4.2. IEEE 802.11 (Wi-Fi)</p>
+</td>
+    <td>
+<p>Android Television devices MUST include Wi-Fi support. Devices that DO support
+wifi must report android.hardware.wifi. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.4.2.1. Wi-Fi Direct</p>
+</td>
+    <td>
+<p>MUST report the hardware feature android.hardware.wifi.direct.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.4.2.2. Wi-Fi Tunneled Direct Link Setup</p>
+</td>
+    <td>
+<p>Android Television devices MUST include support for Wi-Fi TDLS.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.4.3 Bluetooth</p>
+</td>
+    <td>
+<p>Added Android Automotive requirements.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.5. Cameras</p>
+</td>
+    <td>
+<p>If a device implementation includes at least one camera, it SHOULD be possible
+for an application to simultaneously allocate 3 bitmaps equal to the size of
+the images produced by the largest-resolution camera sensor on the device.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.5.3. External Cameras</p>
+</td>
+    <td>
+<p>Added requirements that device implementations with USB host mode MAY include
+support for an external camera.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.5.5. Camera System Features</p>
+</td>
+    <td>
+<p>Added list of camera features and when they should be defined. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.6.1. Minimum Memory and Storage</p>
+</td>
+    <td>
+<p>Updated requirements for 32- and 64-bit devices. SVELTE memory requirement
+removed. Devices MUST have at least 1.5GB of non-volatile storage</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.6.2. Application Shared Storage</p>
+</td>
+    <td>
+<p>Updated requirements for user-accessible removable storage</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.7. USB</p>
+</td>
+    <td>
+<p>Removed requirements for non-charging ports being on the same edge as the
+micro-USB port. Updated requirements for Host and Peripheral mode. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>7.8.1. Audio</p>
+</td>
+    <td>
+<p>Moved microphone section here. Added requirements for Audio Output and Audio
+Analog ports. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>8. Performance Compatibility</p>
+</td>
+    <td>
+<p>Added requirements for user interface consistency.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>9.5. Multi-User Support</p>
+</td>
+    <td>
+<p>Multi-user support feature is optional for all device types. Detailed
+requirements by device type in section.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>9.7. Kernel Security Features</p>
+</td>
+    <td>
+<p>MAY have a visible user interface when an unblocked security violation occurs
+resulting in a successful exploit. No permissive mode domains allowed.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>9.9. Full-Disk Encryption</p>
+</td>
+    <td>
+<p>Devices with a lock screen MUST support full-disk encryption. For new devices,
+full-disk encryption must be enabled out of box. </p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>9.10 Verified boot</p>
+</td>
+    <td>
+<p>Added section to recommend that Device implementations support verified boot
+for device integrity.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>10.3. Reference Applications</p>
+</td>
+    <td>
+<p>Removed section from CDD.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>11. Updatable Software</p>
+</td>
+    <td>
+<p>If a device supports 802.11 or Bluetooth PAN (Personal Area Network) profile,
+then it MUST support Over-the-air download with offline update via reboot.</p>
+</td>
+ </tr>
+ <tr>
+    <td>
+<p>14. Resources</p>
+</td>
+    <td>
+<p>Resources moved from section 2 to section 14</p>
+</td>
+ </tr>
+</table>
+
+
+<h1 id=13_contact_us>13. Contact Us</h1>
+
+
+<p>You can join the android-compatibility forum <a href="https://groups.google.com/forum/#!forum/android-compatibility">[Resources, 109</a>] and ask for clarifications or bring up any issues that you think the document
+does not cover.</p>
+
+<h1 id=14_resources>14. Resources</h1>
+
+
+<p>1. IETF RFC2119 Requirement Levels: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a></p>
+
+<p>2. Android Open Source Project: <a href="http://source.android.com/">http://source.android.com/</a></p>
+
+<p>3. Android Television features: <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK">http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK</a> </p>
+
+<p>4. Android Watch feature: <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH">http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH</a></p>
+
+<p>5. API definitions and documentation: <a href="http://developer.android.com/reference/packages.html">http://developer.android.com/reference/packages.html</a></p>
+
+<p>6. Android Permissions reference: <a href="http://developer.android.com/reference/android/Manifest.permission.html">http://developer.android.com/reference/android/Manifest.permission.html</a></p>
+
+<p>7. 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></p>
+
+<p>8. Android 5.1 allowed version strings: <a href="http://source.android.com/compatibility/5.1/versions.html">http://source.android.com/compatibility/5.1/versions.html</a></p>
+
+<p>9. Telephony Provider: <a href="http://developer.android.com/reference/android/provider/Telephony.html">http://developer.android.com/reference/android/provider/Telephony.html</a></p>
+
+<p>10. Host-based Card Emulation: <a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">http://developer.android.com/guide/topics/connectivity/nfc/hce.html</a></p>
+
+<p>11. Android Extension Pack: <a href="http://developer.android.com/guide/topics/graphics/opengl.html#aep">http://developer.android.com/guide/topics/graphics/opengl.html#aep</a> </p>
+
+<p>12. 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></p>
+
+<p>13. WebView compatibility: <a href="http://www.chromium.org/">http://www.chromium.org/</a></p>
+
+<p>14. HTML5: <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">http://www.whatwg.org/specs/web-apps/current-work/multipage/</a></p>
+
+<p>15. HTML5 offline capabilities:<a href="http://dev.w3.org/html5/spec/Overview.html#offline"> http://dev.w3.org/html5/spec/Overview.html#offline</a></p>
+
+<p>16. HTML5 video tag: <a href="http://dev.w3.org/html5/spec/Overview.html#video">http://dev.w3.org/html5/spec/Overview.html#video</a></p>
+
+<p>17. HTML5/W3C geolocation API: <a href="http://www.w3.org/TR/geolocation-API/">http://www.w3.org/TR/geolocation-API/</a></p>
+
+<p>18. HTML5/W3C webstorage API: <a href="http://www.w3.org/TR/webstorage/">http://www.w3.org/TR/webstorage/</a></p>
+
+<p>19. HTML5/W3C IndexedDB API: <a href="http://www.w3.org/TR/IndexedDB/">http://www.w3.org/TR/IndexedDB/</a></p>
+
+<p>20. Dalvik Executable Format and bytecode specification: available in the
+Android source code, at dalvik/docs</p>
+
+<p>21. 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></p>
+
+<p>22. Notifications: <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">http://developer.android.com/guide/topics/ui/notifiers/notifications.html</a></p>
+
+<p>23. Application Resources: <a href="https://developer.android.com/guide/topics/resources/available-resources.html">https://developer.android.com/guide/topics/resources/available-resources.html</a></p>
+
+<p>24. Status Bar icon style guide: <a href="http://developer.android.com/design/style/iconography.html">http://developer.android.com/design/style/iconography.html</a></p>
+
+<p>25. Notifications Resources: <a href="https://developer.android.com/design/patterns/notifications.html">https://developer.android.com/design/patterns/notifications.html</a> </p>
+
+<p>26. Search Manager: <a href="http://developer.android.com/reference/android/app/SearchManager.html">http://developer.android.com/reference/android/app/SearchManager.html</a> </p>
+
+<p>27. Toasts: <a href="http://developer.android.com/reference/android/widget/Toast.html">http://developer.android.com/reference/android/widget/Toast.html</a></p>
+
+<p>28. Themes: <a href="http://developer.android.com/guide/topics/ui/themes.html">http://developer.android.com/guide/topics/ui/themes.html</a></p>
+
+<p>29. R.style class: <a href="http://developer.android.com/reference/android/R.style.html">http://developer.android.com/reference/android/R.style.html</a></p>
+
+<p>30. Material design: <a href="http://developer.android.com/reference/android/R.style.html#Theme_Material">http://developer.android.com/reference/android/R.style.html#Theme_Material</a> </p>
+
+<p>31. Live Wallpapers: <a href="http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html">http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html</a></p>
+
+<p>32. Overview screen resources: <a href="http://developer.android.com/guide/components/recents.html">http://developer.android.com/guide/components/recents.html</a> </p>
+
+<p>33. Screen pinning: <a href="https://developer.android.com/about/versions/android-5.0.html#ScreenPinning">https://developer.android.com/about/versions/android-5.0.html#ScreenPinning</a> </p>
+
+<p>34. Input methods: <a href="http://developer.android.com/guide/topics/text/creating-input-method.html">http://developer.android.com/guide/topics/text/creating-input-method.html</a> </p>
+
+<p>35. Media Notification: <a href="https://developer.android.com/reference/android/app/Notification.MediaStyle.html">https://developer.android.com/reference/android/app/Notification.MediaStyle.html</a></p>
+
+<p>36. Dreams: <a href="http://developer.android.com/reference/android/service/dreams/DreamService.html">http://developer.android.com/reference/android/service/dreams/DreamService.html</a></p>
+
+<p>37. Settings.Secure LOCATION_MODE:</p>
+
+<p><a href="http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE">http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE</a></p>
+
+<p>38. Unicode 6.1.0: <a href="http://www.unicode.org/versions/Unicode6.1.0/">http://www.unicode.org/versions/Unicode6.1.0/</a></p>
+
+<p>39. 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></p>
+
+<p>40. 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></p>
+
+<p>41. Android Device Owner App:</p>
+
+<p><a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)">http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)</a></p>
+
+<p>42. Android Accessibility Service APIs: <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html">http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html</a></p>
+
+<p>43. 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></p>
+
+<p>44. Eyes Free project: <a href="http://code.google.com/p/eyes-free">http://code.google.com/p/eyes-free</a></p>
+
+<p>45. 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></p>
+
+<p>46. Television Input Framework: <a href="https://source.android.com/devices/tv/index.html">https://source.android.com/devices/tv/index.html</a></p>
+
+<p>47. 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></p>
+
+<p>48. Android apk file description: <a href="http://developer.android.com/guide/components/fundamentals.html">http://developer.android.com/guide/components/fundamentals.html </a></p>
+
+<p>49. 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></p>
+
+<p>50. Android Media Formats: <a href="http://developer.android.com/guide/appendix/media-formats.html">http://developer.android.com/guide/appendix/media-formats.html</a></p>
+
+<p>51. RTC Hardware Coding Requirements: <a href="http://www.webmproject.org/hardware/rtc-coding-requirements/">http://www.webmproject.org/hardware/rtc-coding-requirements/</a></p>
+
+<p>52. AudioEffect API: <a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">http://developer.android.com/reference/android/media/audiofx/AudioEffect.html</a></p>
+
+<p>53. Android android.content.pm.PackageManager class and Hardware Features List:</p>
+
+<p><a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">http://developer.android.com/reference/android/content/pm/PackageManager.html</a></p>
+
+<p>54. 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></p>
+
+<p>55. ADB: <a href="http://developer.android.com/tools/help/adb.html">http://developer.android.com/tools/help/adb.html</a> </p>
+
+<p>56. Dumpsys: <a href="https://source.android.com/devices/tech/input/dumpsys.html">https://source.android.com/devices/tech/input/dumpsys.html</a> </p>
+
+<p>57. DDMS: <a href="http://developer.android.com/tools/debugging/ddms.html">http://developer.android.com/tools/debugging/ddms.html</a> </p>
+
+<p>58. Monkey testing tool: <a href="http://developer.android.com/tools/help/monkey.html">http://developer.android.com/tools/help/monkey.html</a> </p>
+
+<p>59. SysyTrace tool: <a href="http://developer.android.com/tools/help/systrace.html">http://developer.android.com/tools/help/systrace.html</a></p>
+
+<p>60. Android Application Development-Related Settings:</p>
+
+<p><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></p>
+
+<p>61. Supporting Multiple Screens: <a href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html</a></p>
+
+<p>62. android.util.DisplayMetrics: <a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">http://developer.android.com/reference/android/util/DisplayMetrics.html</a></p>
+
+<p>63. RenderScript: <a href="http://developer.android.com/guide/topics/renderscript/">http://developer.android.com/guide/topics/renderscript/</a></p>
+
+<p>64. Android extension pack for OpenGL ES: <a href="https://developer.android.com/reference/android/opengl/GLES31Ext.html">https://developer.android.com/reference/android/opengl/GLES31Ext.html</a> </p>
+
+<p>65. 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></p>
+
+<p>66. EGL Extension-EGL_ANDROID_RECORDABLE:</p>
+
+<p><a href="http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt">http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt</a></p>
+
+<p>67. 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></p>
+
+<p>68. 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></p>
+
+<p>69. 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></p>
+
+<p>70. Touch Input Configuration: <a href="http://source.android.com/devices/tech/input/touch-devices.html">http://source.android.com/devices/tech/input/touch-devices.html</a></p>
+
+<p>71. Motion Event API: <a href="http://developer.android.com/reference/android/view/MotionEvent.html">http://developer.android.com/reference/android/view/MotionEvent.html</a></p>
+
+<p>72. Key Event API: <a href="http://developer.android.com/reference/android/view/KeyEvent.html">http://developer.android.com/reference/android/view/KeyEvent.html</a> </p>
+
+<p>73. Android Open Source sensors: <a href="http://source.android.com/devices/sensors/">http://source.android.com/devices/sensors/</a></p>
+
+<p>74. android.hardware.SensorEvent: <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">http://developer.android.com/reference/android/hardware/SensorEvent.html</a></p>
+
+<p>75. Timestamp sensor event: <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp">http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp</a></p>
+
+<p>76. Android Open Source composite sensors: <a href="http://source.android.com/devices/sensors/composite_sensors.html">http://source.android.com/devices/sensors/composite_sensors.html</a></p>
+
+<p>77. Continuous trigger mode: <a href="http://source.android.com/devices/sensors/base_triggers.html#continuous">http://source.android.com/devices/sensors/base_triggers.html#continuous</a></p>
+
+<p>78. Accelerometer sensor: <a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER</a></p>
+
+<p>79. Wi-Fi 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></p>
+
+<p>80. Wi-Fi Direct (Wi-Fi 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></p>
+
+<p>81. WifiManager API: <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html">http://developer.android.com/reference/android/net/wifi/WifiManager.html</a></p>
+
+<p>82. 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></p>
+
+<p>83. Bluetooth ScanFilter API: <a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html</a></p>
+
+<p>84. NDEF Push Protocol: <a href="http://source.android.com/compatibility/ndef-push-protocol.pdf">http://source.android.com/compatibility/ndef-push-protocol.pdf</a></p>
+
+<p>85. Android Beam: <a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">http://developer.android.com/guide/topics/connectivity/nfc/nfc.html</a> </p>
+
+<p>86. Android NFC Sharing Settings:</p>
+
+<p><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></p>
+
+<p>87. 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></p>
+
+<p>88. Bluetooth Secure Simple Pairing Using NFC: <a href="http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf">http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf</a> </p>
+
+<p>89. Content Resolver: <a href="http://developer.android.com/reference/android/content/ContentResolver.html">http://developer.android.com/reference/android/content/ContentResolver.html</a></p>
+
+<p>90. 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></p>
+
+<p>91. Camera: <a href="http://developer.android.com/reference/android/hardware/Camera.html">http://developer.android.com/reference/android/hardware/Camera.html</a></p>
+
+<p>92. Camera: <a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">http://developer.android.com/reference/android/hardware/Camera.Parameters.html</a></p>
+
+<p>93. Camera hardware level: <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL</a> </p>
+
+<p>94. Camera version support: <a href="http://source.android.com/devices/camera/versioning.html">http://source.android.com/devices/camera/versioning.html</a> </p>
+
+<p>95. Android DownloadManager: <a href="http://developer.android.com/reference/android/app/DownloadManager.html">http://developer.android.com/reference/android/app/DownloadManager.html</a></p>
+
+<p>96. Android File Transfer: <a href="http://www.android.com/filetransfer">http://www.android.com/filetransfer</a></p>
+
+<p>97. Android Open Accessories: <a href="http://developer.android.com/guide/topics/usb/accessory.html">http://developer.android.com/guide/topics/usb/accessory.html</a></p>
+
+<p>98. 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></p>
+
+<p>99. USB Charging Specification: <a href="http://www.usb.org/developers/docs/devclass_docs/USB_Battery_Charging_1.2.pdf">http://www.usb.org/developers/docs/devclass_docs/USB_Battery_Charging_1.2.pdf</a></p>
+
+<p>100. USB Host API:<a href="http://developer.android.com/guide/topics/usb/host.html"> http://developer.android.com/guide/topics/usb/host.html</a></p>
+
+<p>101. Wired audio headset: <a href="http://source.android.com/accessories/headset-spec.html">http://source.android.com/accessories/headset-spec.html</a> </p>
+
+<p>102. Android Security and Permissions reference: <a href="http://developer.android.com/guide/topics/security/permissions.html">http://developer.android.com/guide/topics/security/permissions.html</a></p>
+
+<p>103. UserManager reference: <a href="http://developer.android.com/reference/android/os/UserManager.html">http://developer.android.com/reference/android/os/UserManager.html</a></p>
+
+<p>104. External Storage reference: <a href="http://source.android.com/devices/tech/storage">http://source.android.com/devices/tech/storage</a></p>
+
+<p>105. External Storage APIs: <a href="http://developer.android.com/reference/android/os/Environment.html">http://developer.android.com/reference/android/os/Environment.html</a></p>
+
+<p>106. SMS Short Code: <a href="http://en.wikipedia.org/wiki/Short_code">http://en.wikipedia.org/wiki/Short_code</a></p>
+
+<p>107. Android Open Source Encryption: <a href="http://source.android.com/devices/tech/encryption/index.html">http://source.android.com/devices/tech/encryption/index.html</a></p>
+
+<p>108. Android Compatibility Program Overview: <a href="http://source.android.com/compatibility/index.html">http://source.android.com/compatibility/index.html</a></p>
+
+<p>109. Android Compatibility forum: <a href="https://groups.google.com/forum/#!forum/android-compatibility">https://groups.google.com/forum/#!forum/android-compatibility</a></p>
+
+<p>110. WebM project: <a href="http://www.webmproject.org/">http://www.webmproject.org/</a>  </p>
+
+<p>111. Android Auto feature: <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR">http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR</a></p>
+
+<p>Many of these resources are derived directly or indirectly from the Android
+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>
+<div style="page-break-before: always;"></div>
+
+<div id="footerContent" xmlns:pdf="https://source.android.com">
+<pdf:pagenumber/>
+</div>
+</body>
+</html>
diff --git a/src/compatibility/5.1/versions.jd b/src/compatibility/5.1/versions.jd
new file mode 100644
index 0000000..52a7f90
--- /dev/null
+++ b/src/compatibility/5.1/versions.jd
@@ -0,0 +1,18 @@
+page.title=Permitted Version Strings for Android 5.1
+@jd:body
+
+<p>As described in Section 3.2.2 of the <a
+href="/compatibility/android-5.1-cdd.pdf">Android 5.1 Compatibility Definition</a>,
+only certain strings are allowable for the system property
+<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
+applications and web sites may rely on predictable values for this string, and
+so that end users can easily and reliably identify the version of Android
+running on their devices.</p>
+<p>Because subsequent releases of the Android software may revise this string,
+but not change any API behavior, such releases may not be accompanied by a new
+Compatibility Definition Document. This page lists the versions that are
+allowable by an Android 5.0-based system. The only permitted values for
+<code>android.os.Build.VERSION.RELEASE</code> for Android 5.1 are:</p>
+<ul>
+<li>5.1</li>
+</ul>
