<!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>


<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 Television device implementations MUST support Bluetooth and Bluetooth
LE and Android Watch device implementations MUST support Bluetooth.</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.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.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>
