page.title=Android 7.1 Compatibility Definition
fullpage=true
@jd:body

<!--
    Copyright 2017 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>
  <h1>Android 7.1 Compatibility Definition Document</h1>
      <h2 id="1_introduction">
        1. Introduction
      </h2>
      <p>
        This document enumerates the requirements that must be met in order for devices to be compatible with Android 7.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 <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC2119</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 7.1. A “device implementation” or “implementation is the hardware/software solution so developed.
      </p>
      <p>
        To be considered compatible with Android 7.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="#10_software_compatibility_testing">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 <a href="http://source.android.com/">Android Open Source Project</a> is both the reference and preferred implementation of Android. Device implementers are STRONGLY RECOMMENDED 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, it is STRONGLY RECOMMENDED to not follow this practice, 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 linked to in this document 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 linked resources throughout this document are considered by inclusion to be part of this Compatibility Definition.
      </p>
      <h2 id="2_device_types">
        2. Device Types
      </h2>
      <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>
        <li>MUST have a power source that provides mobility, such as a battery.
        </li>
      </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>
        <li>MUST declare the features <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK">android.software.leanback</a> and android.hardware.type.television.
        </li>
      </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>
        <li>MUST declare the feature android.hardware.type.watch.
        </li>
        <li>MUST support uiMode = <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH">UI_MODE_TYPE_WATCH</a> .
        </li>
      </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:
      </p>
      <ul>
        <li>MUST have a screen with the physical diagonal length equal to or greater than 6 inches.
        </li>
        <li>MUST declare the feature android.hardware.type.automotive.
        </li>
        <li>MUST support uiMode = <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR">UI_MODE_TYPE_CAR</a> .
        </li>
        <li>Android Automotive implementations MUST support all public APIs in the <code>android.car.*</code> namespace.
        </li>
      </ul>
      <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 7.1 compatible, unless the requirement is explicitly described to be only applicable to a specific Android device type from above.
      </p>
      <h3 id="2_1_device_configurations">
        2.1 Device Configurations
      </h3>
      <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>
          <th>
            Category
          </th>
          <th>
            Feature
          </th>
          <th>
            Section
          </th>
          <th>
            Handheld
          </th>
          <th>
            Television
          </th>
          <th>
            Watch
          </th>
          <th>
            Automotive
          </th>
          <th>
            Other
          </th>
        </tr>
        <tr>
          <td rowspan="3">
            Input
          </td>
          <td>
            D-pad
          </td>
          <td>
            <a href="#7_2_2_non-touch-navigation">7.2.2. Non-touch Navigation</a>
          </td>
          <td></td>
          <td>
            MUST
          </td>
          <td></td>
          <td></td>
          <td></td>
        </tr>
        <tr>
          <td>
            Touchscreen
          </td>
          <td>
            <a href="#7_2_4_touchscreen_input">7.2.4. Touchscreen input</a>
          </td>
          <td>
            MUST
          </td>
          <td></td>
          <td>
            MUST
          </td>
          <td></td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Microphone
          </td>
          <td>
            <a href="#7_8_1_microphone">7.8.1. Microphone</a>
          </td>
          <td>
            MUST
          </td>
          <td>
            SHOULD
          </td>
          <td>
            MUST
          </td>
          <td>
            MUST
          </td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td rowspan="2">
            Sensors
          </td>
          <td>
            Accelerometer
          </td>
          <td>
            <a href="#7_3_1_accelerometer">7.3.1 Accelerometer</a>
          </td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            GPS
          </td>
          <td>
            <a href="#7_3_3_gps">7.3.3. GPS</a>
          </td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td></td>
          <td>
            SHOULD
          </td>
          <td></td>
        </tr>
        <tr>
          <td rowspan="6">
            Connectivity
          </td>
          <td>
            Wi-Fi
          </td>
          <td>
            <a href="#7_4_2_ieee_802.11">7.4.2. IEEE 802.11</a>
          </td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Wi-Fi Direct
          </td>
          <td>
            <a href="#7_4_2_1_wi-fi-direct">7.4.2.1. Wi-Fi Direct</a>
          </td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td></td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Bluetooth
          </td>
          <td>
            <a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a>
          </td>
          <td>
            SHOULD
          </td>
          <td>
            MUST
          </td>
          <td>
            MUST
          </td>
          <td>
            MUST
          </td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Bluetooth Low Energy
          </td>
          <td>
            <a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a>
          </td>
          <td>
            SHOULD
          </td>
          <td>
            MUST
          </td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Cellular radio
          </td>
          <td>
            <a href="#7_4_5_minimum_network_capability">7.4.5. Minimum Network Capability</a>
          </td>
          <td></td>
          <td></td>
          <td></td>
          <td>
            SHOULD
          </td>
          <td></td>
        </tr>
        <tr>
          <td>
            USB peripheral/host mode
          </td>
          <td>
            <a href="#7_7_usb">7.7. USB</a>
          </td>
          <td>
            SHOULD
          </td>
          <td></td>
          <td></td>
          <td>
            SHOULD
          </td>
          <td>
            SHOULD
          </td>
        </tr>
        <tr>
          <td>
            Output
          </td>
          <td>
            Speaker and/or Audio output ports
          </td>
          <td>
            <a href="#7_8_2_audio_output">7.8.2. Audio Output</a>
          </td>
          <td>
            MUST
          </td>
          <td>
            MUST
          </td>
          <td></td>
          <td>
            MUST
          </td>
          <td>
            MUST
          </td>
        </tr>
      </table>
      <h2 id="3_software">
        3. Software
      </h2>
      <h3 id="3_1_managed_api_compatibility">
        3.1. Managed API Compatibility
      </h3>
      <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 <a href="http://developer.android.com/reference/packages.html">Android SDK</a> or any API decorated with the “@SystemApi” marker in the upstream Android source code.
      </p>
      <p>
        Device implementations MUST support/preserve all classes, methods, and associated elements marked by the TestApi annotation (@TestApi).
      </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="#7_hardware_compatibility">section 7</a> for specific requirements for this scenario.
      </p>
      <h3 id="3_1_1_android_extensions">
        3.1.1. Android Extensions
      </h3>
      <p>
        Android includes the support of extending the managed APIs while keeping the same API level version. Android device implementations MUST preload the AOSP implementation of both the shared library <code>ExtShared</code> and services <code>ExtServices</code> with versions higher than or equal to the minimum versions allowed per each API level. For example, Android 7.0 device implementations, running API level 24 MUST include at least version 1.
      </p>
      <h3 id="3_2_soft_api_compatibility">
        3.2. Soft API Compatibility
      </h3>
      <p>
        In addition to the managed APIs from <a href="#3_1_managed_api_compatibility">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>
      <h4 id="3_2_1_permissions">
        3.2.1. Permissions
      </h4>
      <p>
        Device implementers MUST support and enforce all permission constants as documented by the <a href="http://developer.android.com/reference/android/Manifest.permission.html">Permission reference page</a> . Note that <a href="#9_security_model_compatibility">section 9</a> lists additional requirements related to the Android security model.
      </p>
      <h4 id="3_2_2_build_parameters">
        3.2.2. Build Parameters
      </h4>
      <p>
        The Android APIs include a number of constants on the <a href="http://developer.android.com/reference/android/os/Build.html">android.os.Build class</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>
          <th>
            Parameter
          </th>
          <th>
            Details
          </th>
        </tr>
        <tr>
          <td>
            VERSION.RELEASE
          </td>
          <td>
            The version of the currently-executing Android system, in human-readable format. This field MUST have one of the string values defined in <a href="http://source.android.com/compatibility/7.1/versions.html">7.1</a> .
          </td>
        </tr>
        <tr>
          <td>
            VERSION.SDK
          </td>
          <td>
            The version of the currently-executing Android system, in a format accessible to third-party application code. For Android 7.1, this field MUST have the integer value 7.1_INT.
          </td>
        </tr>
        <tr>
          <td>
            VERSION.SDK_INT
          </td>
          <td>
            The version of the currently-executing Android system, in a format accessible to third-party application code. For Android 7.1, this field MUST have the integer value 7.1_INT.
          </td>
        </tr>
        <tr>
          <td>
            VERSION.INCREMENTAL
          </td>
          <td>
            A value chosen by the device implementer designating the specific build of the currently-executing Android system, in human-readable format. This value MUST NOT be 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 ("").
          </td>
        </tr>
        <tr>
          <td>
            BOARD
          </td>
          <td>
            A value chosen by the device implementer identifying the specific internal hardware used by the device, in human-readable format. A possible use of this field is to indicate the specific revision of the board powering the device. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “^[a-zA-Z0-9_-]+$”.
          </td>
        </tr>
        <tr>
          <td>
            BRAND
          </td>
          <td>
            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_-]+$”.
          </td>
        </tr>
        <tr>
          <td>
            SUPPORTED_ABIS
          </td>
          <td>
            The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#3_3_native_api_compatibility">section 3.3. Native API Compatibility</a> .
          </td>
        </tr>
        <tr>
          <td>
            SUPPORTED_32_BIT_ABIS
          </td>
          <td>
            The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#3_3_native_api_compatibility">section 3.3. Native API Compatibility</a> .
          </td>
        </tr>
        <tr>
          <td>
            SUPPORTED_64_BIT_ABIS
          </td>
          <td>
            The name of the second instruction set (CPU type + ABI convention) of native code. See <a href="#3_3_native_api_compatibility">section 3.3. Native API Compatibility</a> .
          </td>
        </tr>
        <tr>
          <td>
            CPU_ABI
          </td>
          <td>
            The name of the instruction set (CPU type + ABI convention) of native code. See <a href="#3_3_native_api_compatibility">section 3.3. Native API Compatibility</a> .
          </td>
        </tr>
        <tr>
          <td>
            CPU_ABI2
          </td>
          <td>
            The name of the second instruction set (CPU type + ABI convention) of native code. See <a href="#3_3_native_api_compatibility">section 3.3. Native API Compatibility</a> .
          </td>
        </tr>
        <tr>
          <td>
            DEVICE
          </td>
          <td>
            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_-]+$”. This device name MUST NOT change during the lifetime of the product.
          </td>
        </tr>
        <tr>
          <td>
            FINGERPRINT
          </td>
          <td>
            A string that uniquely identifies this build. It SHOULD be reasonably human-readable. It MUST follow this template:
            <p class="small">
              $(BRAND)/$(PRODUCT)/<br />
              &nbsp;&nbsp;&nbsp;&nbsp;$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
            </p>
            <p>
              For example:
            </p>
            <p class="small">
              acme/myproduct/<br />
              &nbsp;&nbsp;&nbsp;&nbsp;mydevice:7.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>
            HARDWARE
          </td>
          <td>
            The name of the hardware (from the kernel command line or /proc). It SHOULD be reasonably human-readable. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “^[a-zA-Z0-9_-]+$”.
          </td>
        </tr>
        <tr>
          <td>
            HOST
          </td>
          <td>
            A string that uniquely identifies the host the build was built on, in human-readable format. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string ("").
          </td>
        </tr>
        <tr>
          <td>
            ID
          </td>
          <td>
            An identifier chosen by the device implementer to refer to a specific release, in human-readable format. This field can be the same as android.os.Build.VERSION.INCREMENTAL, but SHOULD be a value sufficiently meaningful for end users to distinguish between software builds. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “^[a-zA-Z0-9._-]+$”.
          </td>
        </tr>
        <tr>
          <td>
            MANUFACTURER
          </td>
          <td>
            The trade name of the Original Equipment Manufacturer (OEM) of the product. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string ("").
          </td>
        </tr>
        <tr>
          <td>
            MODEL
          </td>
          <td>
            A value chosen by the device implementer containing the name of the device as known to the end user. This SHOULD be the same name under which the device is marketed and sold to end users. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string ("").
          </td>
        </tr>
        <tr>
          <td>
            PRODUCT
          </td>
          <td>
            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_-]+$”. This product name MUST NOT change during the lifetime of the product.
          </td>
        </tr>
        <tr>
          <td>
            SERIAL
          </td>
          <td>
            A hardware serial number, which MUST be available and unique across devices with the same MODEL and MANUFACTURER. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “^([a-zA-Z0-9]{6,20})$”.
          </td>
        </tr>
        <tr>
          <td>
            TAGS
          </td>
          <td>
            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.
          </td>
        </tr>
        <tr>
          <td>
            TIME
          </td>
          <td>
            A value representing the timestamp of when the build occurred.
          </td>
        </tr>
        <tr>
          <td>
            TYPE
          </td>
          <td>
            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.
          </td>
        </tr>
        <tr>
          <td>
            USER
          </td>
          <td>
            A name or user ID of the user (or automated user) that generated the build. There are no requirements on the specific format of this field, except that it MUST NOT be null or the empty string ("").
          </td>
        </tr>
        <tr>
          <td>
            SECURITY_PATCH
          </td>
          <td>
            A value indicating the security patch level of a build. It MUST signify that the build includes all security patches issued up through the designated Android Public Security Bulletin. It MUST be in the format [YYYY-MM-DD], matching one of the Android Security Patch Level strings of the <a href="source.android.com/security/bulletin">Public Security Bulletins</a> , for example "2015-11-01".
          </td>
        </tr>
        <tr>
          <td>
            BASE_OS
          </td>
          <td>
            A value representing the FINGERPRINT parameter of the build that is otherwise identical to this build except for the patches provided in the Android Public Security Bulletin. It MUST report the correct value and if such a build does not exist, report an empty string ("").
          </td>
        </tr>
      </table>
      <h4 id="3_2_3_intent_compatibility">
        3.2.3. Intent Compatibility
      </h4>
      <h5 id="3_2_3_1_core_application_intents">
        3.2.3.1. Core Application Intents
      </h5>
      <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>
        <li>Browser
        </li>
        <li>Calendar
        </li>
        <li>Contacts
        </li>
        <li>Gallery
        </li>
        <li>GlobalSearch
        </li>
        <li>Launcher
        </li>
        <li>Music
        </li>
        <li>Settings
        </li>
      </ul>
      <p>
        Device implementations MUST include the core Android applications as appropriate or a component implementing the same intent patterns defined by all the Activity or Service components of these core Android applications exposed to other applications, implicitly or explicitly, through the <code>android:exported</code> attribute.
      </p>
      <h5 id="3_2_3_2_intent_resolution">
        3.2.3.2. Intent Resolution
      </h5>
      <p>
        As Android is an extensible platform, device implementations MUST allow each intent pattern referenced in <a href="#3_2_3_1_core_application_intents">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>
        Device implementations MUST provide a user interface for users to modify the default activity for intents.
      </p>
      <p>
        However, device implementations MAY provide default activities for specific URI patterns (e.g. http://play.google.com) when the default activity provides a more specific attribute for the data URI. For example, an intent filter pattern specifying the data URI “http://www.android.com” is more specific than the browser's core intent pattern for “http://”.
      </p>
      <p>
        Android also includes a mechanism for third-party apps to declare an authoritative default <a href="https://developer.android.com/training/app-links">app linking behavior</a> for certain types of web URI intents. When such authoritative declarations are defined in an app's intent filter patterns, device implementations:
      </p>
      <ul>
        <li>MUST attempt to validate any intent filters by performing the validation steps defined in the <a href="https://developers.google.com/digital-asset-links">Digital Asset Links specification</a> as implemented by the Package Manager in the upstream Android Open Source Project.
        </li>
        <li>MUST attempt validation of the intent filters during the installation of the application and set all successfully validated UIR intent filters as default app handlers for their UIRs.
        </li>
        <li>MAY set specific URI intent filters as default app handlers for their URIs, if they are successfully verified but other candidate URI filters fail verification. If a device implementation does this, it MUST provide the user appropriate per-URI pattern overrides in the settings menu.
        </li>
        <li>MUST provide the user with per-app App Links controls in Settings as follows:
          <ul>
            <li>The user MUST be able to override holistically the default app links behavior for an app to be: always open, always ask, or never open, which must apply to all candidate URI intent filters equally.
            </li>
            <li>The user MUST be able to see a list of the candidate URI intent filters.
            </li>
            <li>The device implementation MAY provide the user with the ability to override specific candidate URI intent filters that were successfully verified, on a per-intent filter basis.
            </li>
            <li>The device implementation MUST provide users with the ability to view and override specific candidate URI intent filters if the device implementation lets some candidate URI intent filters succeed verification while some others can fail.
            </li>
          </ul>
        </li>
      </ul>
      <h5 id="3_2_3_3_intent_namespaces">
        3.2.3.3. Intent Namespaces
      </h5>
      <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. <em>or com.android.</em> 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="#3_2_3_1_core_application_intents">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="#3_6_api_namespaces">section 3.6</a> .
      </p>
      <h5 id="3_2_3_4_broadcast_intents">
        3.2.3.4. Broadcast Intents
      </h5>
      <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>
      <h5 id="3_2_3_5_default_app_settings">
        3.2.3.5. Default App Settings
      </h5>
      <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 <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_HOME_SETTINGS">android.settings.HOME_SETTINGS</a> intent to show a default app settings menu for Home Screen, if the device implementation reports android.software.home_screen.
        </li>
        <li>MUST provide a settings menu that will call the <a href="http://developer.android.com/reference/android/provider/Telephony.Sms.Intents.html">android.provider.Telephony.ACTION_CHANGE_DEFAULT</a> intent to show a dialog to change the default SMS application, if the device implementation reports android.hardware.telephony.
        </li>
        <li>MUST honor the <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS">android.settings.NFC_PAYMENT_SETTINGS</a> intent to show a default app settings menu for Tap and Pay, if the device implementation reports android.hardware.nfc.hce.
        </li>
        <li>MUST honor the <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_DEFAULT_DIALER">android.telecom.action.CHANGE_DEFAULT_DIALER</a> intent to show a dialog to allow the user to change the default Phone application, if the device implementation reports <code>android.hardware.telephony</code> .
        </li>
        <li>MUST honor the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_VOICE_INPUT_SETTINGS">android.settings.ACTION_VOICE_INPUT_SETTINGS</a> intent when the device supports the VoiceInteractionService and show a default app settings menu for voice input and assist.
        </li>
      </ul>
      <h3 id="3_3_native_api_compatibility">
        3.3. Native API Compatibility
      </h3>
      <p>
        Native code compatibility is challenging. For this reason, device implementers are <strong>STRONGLY RECOMMENDED</strong> to use the implementations of the libraries listed below from the upstream Android Open Source Project.
      </p>
      <h4 id="3_3_1_application_binary_interfaces">
        3.3.1. Application Binary Interfaces
      </h4>
      <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>
        <li>MUST be source-compatible (i.e. header compatible) and binary-compatible (for the ABI) with each required library in the list below.
        </li>
        <li>MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported.
        </li>
        <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>
        <li>MUST report, via the above parameters, only those ABIs documented and described in the latest version of the <a href="https://developer.android.com/ndk/guides/abis.html">Android NDK ABI Management documentation</a> , and MUST include support for the <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388f/Beijfcja.html">Advanced SIMD</a> (a.k.a. NEON) extension.
        </li>
        <li>SHOULD be built using the source code and header files available in the upstream Android Open Source Project
        </li>
      </ul>
      <p>
        Note that future releases of the Android NDK may introduce support for additional ABIs. If a device implementation is not compatible with an existing predefined ABI, it MUST NOT report support for any ABIs at all.
      </p>
      <p>
        The following native code APIs MUST be available to apps that include native code:
      </p>
      <ul>
        <li>libandroid.so (native Android activity support)
        </li>
        <li>libc (C library)
        </li>
        <li>libcamera2ndk.so
        </li>
        <li>libdl (dynamic linker)
        </li>
        <li>libEGL.so (native OpenGL surface management)
        </li>
        <li>libGLESv1_CM.so (OpenGL ES 1.x)
        </li>
        <li>libGLESv2.so (OpenGL ES 2.0)
        </li>
        <li>libGLESv3.so (OpenGL ES 3.x)
        </li>
        <li>libicui18n.so
        </li>
        <li>libicuuc.so
        </li>
        <li>libjnigraphics.so
        </li>
        <li>liblog (Android logging)
        </li>
        <li>libmediandk.so (native media APIs support)
        </li>
        <li>libm (math library)
        </li>
        <li>libOpenMAXAL.so (OpenMAX AL 1.0.1 support)
        </li>
        <li>libOpenSLES.so (OpenSL ES 1.0.1 audio support)
        </li>
        <li>libRS.so
        </li>
        <li>libstdc++ (Minimal support for C++)
        </li>
        <li>libvulkan.so (Vulkan)
        </li>
        <li>libz (Zlib compression)
        </li>
        <li>JNI interface
        </li>
        <li>Support for OpenGL, as described below
        </li>
      </ul>
      <p>
        For the native libraries listed above, the device implementation MUST NOT add or remove the public functions.
      </p>
      <p>
        Native libraries not listed above but implemented and provided in AOSP as system libraries are reserved and MUST NOT be exposed to third-party apps targeting API level 24 or higher.
      </p>
      <p>
        Device implementations MAY add non-AOSP libraries and expose them directly as an API to third-party apps but the additional libraries SHOULD be in <code>/vendor/lib</code> or <code>/vendor/lib64</code> and MUST be listed in <code>/vendor/etc/public.libraries.txt</code> .
      </p>
      <p>
        Note that device implementations MUST include libGLESv3.so and in turn, MUST export all the OpenGL ES 3.1 and <a href="http://developer.android.com/guide/topics/graphics/opengl.html#aep">Android Extension Pack</a> function symbols as defined in the NDK release android-24. 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>
      <h5 id="3_3_1_1_graphic_libraries">
        3.3.1.1. Graphic Libraries
      </h5>
      <p>
        <a href="https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/xhtml/vkspec.html">Vulkan</a> is a low-overhead, cross-platform API for high-performance 3D graphics. Device implementations, even if not including support of the Vulkan APIs, MUST satisfy the following requirements:
      </p>
      <ul>
        <li>It MUST always provide a native library named <code>libvulkan.so</code> which exports function symbols for the core Vulkan 1.0 API as well as the <code>VK_KHR_surface</code> , <code>VK_KHR_android_surface</code> , and <code>VK_KHR_swapchain</code> extensions.
        </li>
      </ul>
      <p>
        Device implementations, if including support of the Vulkan APIs:
      </p>
      <ul>
        <li>MUST report, one or more <code>VkPhysicalDevices</code> through the <code>vkEnumeratePhysicalDevices</code> call.
        </li>
        <li>Each enumerated <code>VkPhysicalDevices</code> MUST fully implement the Vulkan 1.0 API.
        </li>
        <li>MUST report the correct <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_LEVEL"><code>PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL</code></a> and <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_VERSION"><code>PackageManager#FEATURE_VULKAN_HARDWARE_VERSION</code></a> feature flags.
        </li>
        <li>MUST enumerate layers, contained in native libraries named <code>libVkLayer*.so</code> in the application package’s native library directory, through the <code>vkEnumerateInstanceLayerProperties</code> and <code>vkEnumerateDeviceLayerProperties</code> functions in <code>libvulkan.so</code>
        </li>
        <li>MUST NOT enumerate layers provided by libraries outside of the application package, or provide other ways of tracing or intercepting the Vulkan API, unless the application has the <code>android:debuggable=”true”</code> attribute.
        </li>
      </ul>
      <p>
        Device implementations, if not including support of the Vulkan APIs:
      </p>
      <ul>
        <li>MUST report 0 <code>VkPhysicalDevices</code> through the <code>vkEnumeratePhysicalDevices</code> call.
        </li>
        <li>MUST NOT declare any of the Vulkan feature flags <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_LEVEL"><code>PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL</code></a> and <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_VERSION"><code>PackageManager#FEATURE_VULKAN_HARDWARE_VERSION</code></a> .
        </li>
      </ul>
      <h4 id="3_3_2_32-bit_arm_native_code_compatibility">
        3.3.2. 32-bit ARM Native Code Compatibility
      </h4>
      <p>
        The ARMv8 architecture deprecates several CPU operations, including some operations used in existing native code. On 64-bit ARM devices, the following deprecated operations MUST remain available to 32-bit native ARM code, either through native CPU support or through software emulation:
      </p>
      <ul>
        <li>SWP and SWPB instructions
        </li>
        <li>SETEND instruction
        </li>
        <li>CP15ISB, CP15DSB, and CP15DMB barrier operations
        </li>
      </ul>
      <p>
        Legacy versions of the Android NDK used /proc/cpuinfo to discover CPU features from 32-bit ARM native code. For compatibility with applications built using this NDK, devices MUST include the following lines in /proc/cpuinfo when it is read by 32-bit ARM applications:
      </p>
      <ul>
        <li>"Features: ", followed by a list of any optional ARMv7 CPU features supported by the device.
        </li>
        <li>"CPU architecture: ", followed by an integer describing the device's highest supported ARM architecture (e.g., "8" for ARMv8 devices).
        </li>
      </ul>
      <p>
        These requirements only apply when /proc/cpuinfo is read by 32-bit ARM applications. Devices SHOULD not alter /proc/cpuinfo when read by 64-bit ARM or non-ARM applications.
      </p>
      <h3 id="3_4_web_compatibility">
        3.4. Web Compatibility
      </h3>
      <h4 id="3_4_1_webview_compatibility">
        3.4.1. WebView Compatibility
      </h4>
      <div class="note">
        Android Watch devices MAY, but all other device implementations MUST provide a complete implementation of the android.webkit.Webview API.
      </div>
      <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 <a href="http://developer.android.com/reference/android/webkit/WebView.html">android.webkit.WebView</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 <a href="http://www.chromium.org/">Chromium</a> build from the upstream Android Open Source Project for Android 7.1. This build includes a specific set of functionality and security fixes for the WebView.
        </li>
        <li>
          <p>
            The user agent string reported by the WebView MUST be in this format:
          </p>
          <p>
            Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) 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>
            <li>The value of the $(MODEL) string MUST be the same as the value for android.os.Build.MODEL.
            </li>
            <li>The value of the $(BUILD) string MUST be the same as the value for android.os.Build.ID.
            </li>
            <li>The value of the $(CHROMIUM_VER) string MUST be the version of Chromium in the upstream Android Open Source Project.
            </li>
            <li>Device implementations MAY omit Mobile in the user agent string.
            </li>
          </ul>
        </li>
      </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 <a href="http://html.spec.whatwg.org/multipage/">HTML5 specification</a> .
      </p>
      <h4 id="3_4_2_browser_compatibility">
        3.4.2. Browser Compatibility
      </h4>
      <div class="note">
        Android Television, Watch, and Android Automotive implementations MAY omit a browser application, but MUST support the public intent patterns as described in <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a> . All other types of device implementations MUST include a standalone Browser application for general user web browsing.
      </div>
      <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="#3_4_1_webview_compatibility">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 <a href="http://html.spec.whatwg.org/multipage/">HTML5</a> as possible. Minimally, device implementations MUST support each of these APIs associated with HTML5:
      </p>
      <ul>
        <li>
          <a href="http://www.w3.org/html/wg/drafts/html/master/browsers.html#offline">application cache/offline operation</a>
        </li>
        <li>
          <a href="http://www.w3.org/html/wg/drafts/html/master/semantics.html#video">&lt;video&gt; tag</a>
        </li>
        <li>
          <a href="http://www.w3.org/TR/geolocation-API/">geolocation</a>
        </li>
      </ul>
      <p>
        Additionally, device implementations MUST support the HTML5/W3C <a href="http://www.w3.org/TR/webstorage/">webstorage API</a> and SHOULD support the HTML5/W3C <a href="http://www.w3.org/TR/IndexedDB/">IndexedDB API</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>
      <h3 id="3_5_api_behavioral_compatibility">
        3.5. API Behavioral Compatibility
      </h3>
      <p>
        The behaviors of each of the API types (managed, soft, native, and web) must be consistent with the preferred implementation of the upstream <a href="http://source.android.com/">Android Open Source Project</a> . Some specific areas of compatibility are:
      </p>
      <ul>
        <li>Devices MUST NOT change the behavior or semantics of a standard intent.
        </li>
        <li>Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular type of system component (such as Service, Activity, ContentProvider, etc.).
        </li>
        <li>Devices MUST NOT change the semantics of a standard permission.
        </li>
      </ul>
      <p>
        The above list is not comprehensive. The Compatibility Test Suite (CTS) tests significant portions of the platform for behavioral compatibility, but not all. It is the responsibility of the implementer to ensure behavioral compatibility with the Android Open Source Project. For this reason, device implementers SHOULD use the source code available via the Android Open Source Project where possible, rather than re-implement significant parts of the system.
      </p>
      <h3 id="3_6_api_namespaces">
        3.6. API Namespaces
      </h3>
      <p>
        Android follows the package and class namespace conventions defined by the Java programming language. To ensure compatibility with third-party applications, device implementers MUST NOT make any prohibited modifications (see below) to these package namespaces:
      </p>
      <ul>
        <li>java.*
        </li>
        <li>javax.*
        </li>
        <li>sun.*
        </li>
        <li>android.*
        </li>
        <li>com.android.*
        </li>
      </ul>
      <p>
        <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>
        <li>Device implementers MAY modify the underlying implementation of the APIs, but such modifications MUST NOT impact the stated behavior and Java-language signature of any publicly exposed APIs.
        </li>
        <li>Device implementers MUST NOT add any publicly exposed elements (such as classes or interfaces, or fields or methods to existing classes or interfaces) to the APIs above.
        </li>
      </ul>
      <p>
        A “publicly exposed element” is any construct that 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 &lt;uses-library&gt; 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="http://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>
      <h3 id="3_7_runtime_compatibility">
        3.7. Runtime Compatibility
      </h3>
      <p>
        Device implementations MUST support the full Dalvik Executable (DEX) format and <a href="https://android.googlesource.com/platform/dalvik/">Dalvik bytecode specification and semantics</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="#7_1_1_screen_configuration">section 7.1.1</a> for screen size and screen density definitions.) Note that memory values specified below are considered minimum values and device implementations MAY allocate more memory per application.
      </p>
      <table>
        <tr>
          <th>
            Screen Layout
          </th>
          <th>
            Screen Density
          </th>
          <th>
            Minimum Application Memory
          </th>
        </tr>
        <tr>
          <td rowspan="12">
            Android Watch
          </td>
          <td>
            120 dpi (ldpi)
          </td>
          <td rowspan="3">
            32MB
          </td>
        </tr>
        <tr>
          <td>
            160 dpi (mdpi)
          </td>
        </tr>
        <tr>
          <td>
            213 dpi (tvdpi)
          </td>
        </tr>
        <tr>
          <td>
            240 dpi (hdpi)
          </td>
          <td rowspan="2">
            36MB
          </td>
        </tr>
        <tr>
          <td>
            280 dpi (280dpi)
          </td>
        </tr>
        <tr>
          <td>
            320 dpi (xhdpi)
          </td>
          <td rowspan="2">
            48MB
          </td>
        </tr>
        <tr>
          <td>
            360 dpi (360dpi)
          </td>
        </tr>
        <tr>
          <td>
            400 dpi (400dpi)
          </td>
          <td>
            56MB
          </td>
        </tr>
        <tr>
          <td>
            420 dpi (420dpi)
          </td>
          <td>
            64MB
          </td>
        </tr>
        <tr>
          <td>
            480 dpi (xxhdpi)
          </td>
          <td>
            88MB
          </td>
        </tr>
        <tr>
          <td>
            560 dpi (560dpi)
          </td>
          <td>
            112MB
          </td>
        </tr>
        <tr>
          <td>
            640 dpi (xxxhdpi)
          </td>
          <td>
            154MB
          </td>
        </tr>
        <tr>
          <td rowspan="12">
            small/normal
          </td>
          <td>
            120 dpi (ldpi)
          </td>
          <td rowspan="2">
            32MB
          </td>
        </tr>
        <tr>
          <td>
            160 dpi (mdpi)
          </td>
        </tr>
        <tr>
          <td>
            213 dpi (tvdpi)
          </td>
          <td rowspan="3">
            48MB
          </td>
        </tr>
        <tr>
          <td>
            240 dpi (hdpi)
          </td>
        </tr>
        <tr>
          <td>
            280 dpi (280dpi)
          </td>
        </tr>
        <tr>
          <td>
            320 dpi (xhdpi)
          </td>
          <td rowspan="2">
            80MB
          </td>
        </tr>
        <tr>
          <td>
            360 dpi (360dpi)
          </td>
        </tr>
        <tr>
          <td>
            400 dpi (400dpi)
          </td>
          <td>
            96MB
          </td>
        </tr>
        <tr>
          <td>
            420 dpi (420dpi)
          </td>
          <td>
            112MB
          </td>
        </tr>
        <tr>
          <td>
            480 dpi (xxhdpi)
          </td>
          <td>
            128MB
          </td>
        </tr>
        <tr>
          <td>
            560 dpi (560dpi)
          </td>
          <td>
            192MB
          </td>
        </tr>
        <tr>
          <td>
            640 dpi (xxxhdpi)
          </td>
          <td>
            256MB
          </td>
        </tr>
        <tr>
          <td rowspan="12">
            large
          </td>
          <td>
            120 dpi (ldpi)
          </td>
          <td>
            32MB
          </td>
        </tr>
        <tr>
          <td>
            160 dpi (mdpi)
          </td>
          <td>
            48MB
          </td>
        </tr>
        <tr>
          <td>
            213 dpi (tvdpi)
          </td>
          <td rowspan="2">
            80MB
          </td>
        </tr>
        <tr>
          <td>
            240 dpi (hdpi)
          </td>
        </tr>
        <tr>
          <td>
            280 dpi (280dpi)
          </td>
          <td>
            96MB
          </td>
        </tr>
        <tr>
          <td>
            320 dpi (xhdpi)
          </td>
          <td>
            128MB
          </td>
        </tr>
        <tr>
          <td>
            360 dpi (360dpi)
          </td>
          <td>
            160MB
          </td>
        </tr>
        <tr>
          <td>
            400 dpi (400dpi)
          </td>
          <td>
            192MB
          </td>
        </tr>
        <tr>
          <td>
            420 dpi (420dpi)
          </td>
          <td>
            228MB
          </td>
        </tr>
        <tr>
          <td>
            480 dpi (xxhdpi)
          </td>
          <td>
            256MB
          </td>
        </tr>
        <tr>
          <td>
            560 dpi (560dpi)
          </td>
          <td>
            384MB
          </td>
        </tr>
        <tr>
          <td>
            640 dpi (xxxhdpi)
          </td>
          <td>
            512MB
          </td>
        </tr>
        <tr>
          <td rowspan="12">
            xlarge
          </td>
          <td>
            120 dpi (ldpi)
          </td>
          <td>
            48MB
          </td>
        </tr>
        <tr>
          <td>
            160 dpi (mdpi)
          </td>
          <td>
            80MB
          </td>
        </tr>
        <tr>
          <td>
            213 dpi (tvdpi)
          </td>
          <td rowspan="2">
            96MB
          </td>
        </tr>
        <tr>
          <td>
            240 dpi (hdpi)
          </td>
        </tr>
        <tr>
          <td>
            280 dpi (280dpi)
          </td>
          <td>
            144MB
          </td>
        </tr>
        <tr>
          <td>
            320 dpi (xhdpi)
          </td>
          <td>
            192MB
          </td>
        </tr>
        <tr>
          <td>
            360 dpi (360dpi)
          </td>
          <td>
            240MB
          </td>
        </tr>
        <tr>
          <td>
            400 dpi (400dpi)
          </td>
          <td>
            288MB
          </td>
        </tr>
        <tr>
          <td>
            420 dpi (420dpi)
          </td>
          <td>
            336MB
          </td>
        </tr>
        <tr>
          <td>
            480 dpi (xxhdpi)
          </td>
          <td>
            384MB
          </td>
        </tr>
        <tr>
          <td>
            560 dpi (560dpi)
          </td>
          <td>
            576MB
          </td>
        </tr>
        <tr>
          <td>
            640 dpi (xxxhdpi)
          </td>
          <td>
            768MB
          </td>
        </tr>
      </table>
      <h3 id="3_8_user_interface_compatibility">
        3.8. User Interface Compatibility
      </h3>
      <h4 id="3_8_1_launcher_(home_screen)">
        3.8.1. Launcher (Home Screen)
      </h4>
      <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>
      <h4 id="3_8_2_widgets">
        3.8.2. Widgets
      </h4>
      <div class="note">
        Widgets are optional for all Android device implementations, but SHOULD be supported on Android Handheld devices.
      </div>
      <p>
        Android defines a component type and corresponding API and lifecycle that allows applications to expose an <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">“AppWidget”</a> to the end user, 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>
        <li>Device implementations MUST be capable of rendering widgets that are 4 x 4 in the standard grid size. See the <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">App Widget Design Guidelines</a> in the Android SDK documentation for details.
        </li>
        <li>Device implementations that include support for lock screen MAY support application widgets on the lock screen.
        </li>
        <li>SHOULD trigger the fast-switch action between the two most recently used apps, when the recents function key is tapped twice.
        </li>
        <li>SHOULD trigger the split-screen multiwindow-mode, if supported, when the recents functions key is long pressed.
        </li>
      </ul>
      <h4 id="3_8_3_notifications">
        3.8.3. Notifications
      </h4>
      <p>
        Android includes APIs that allow developers to <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">notify users of notable events</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="#7_hardware_compatibility">section 7</a> .
      </p>
      <p>
        Additionally, the implementation MUST correctly render all <a href="https://developer.android.com/guide/topics/resources/available-resources.html">resources</a> (icons, animation files etc.) provided for in the APIs, or in the Status/System Bar <a href="http://developer.android.com/design/style/iconography.html">icon style guide</a> , which in the case of an Android Television device includes the possibility to not display the notifications. 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>
      <div class="note">
        Android Automotive implementations MAY manage the visibility and timing of notifications to mitigate driver distraction, but MUST display notifications that use <a href="https://developer.android.com/reference/android/app/Notification.CarExtender.html">CarExtender</a> when requested by applications.
      </div>
      <p>
        Android includes support for various notifications, such as:
      </p>
      <ul>
        <li>
          <strong>Rich notifications</strong> . Interactive Views for ongoing notifications.
        </li>
        <li>
          <strong>Heads-up notifications</strong> . Interactive Views users can act on or dismiss without leaving the current app.
        </li>
        <li>
          <strong>Lock screen notifications</strong> . Notifications shown over a lock screen with granular control on visibility.
        </li>
      </ul>
      <p>
        Android device implementations, when such notifications are made visible, MUST properly execute Rich and Heads-up notifications and include the title/name, icon, text as <a href="https://developer.android.com/design/patterns/notifications.html">documented in the Android APIs</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>
      <p>
        Handheld device implementations MUST support the behaviors of updating, removing, replying to, and bundling notifications as described in this <a href="https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Managing">section</a> .
      </p>
      <p>
        Also, handheld device implementations MUST provide:
      </p>
      <ul>
        <li>The ability to control notifications directly in the notification shade.
        </li>
        <li>The visual affordance to trigger the control panel in the notification shade.
        </li>
        <li>The ability to BLOCK, MUTE and RESET notification preference from a package, both in the inline control panel as well as in the settings app.
        </li>
      </ul>
      <p>
        All 6 direct subclasses of the <code>Notification.Style class</code> MUST be supported as described in the <a href="https://developer.android.com/reference/android/app/Notification.Style.html">SDK documents</a> .
      </p>
      <p>
        Device implementations that support the DND (Do not Disturb) feature MUST meet the following requirements:
      </p>
      <ul>
        <li>MUST implement an activity where the user can grant or deny the app access to DND policy configurations in response to the intent <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS">ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS</a> .
        </li>
        <li>MUST display <a href="https://developer.android.com/reference/android/app/NotificationManager.html#addAutomaticZenRule%28android.app.AutomaticZenRule%29">Automatic DND rules</a> created by applications alongside the user-created and pre-defined rules.
        </li>
        <li>MUST honor the <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#suppressedVisualEffects"><code>suppressedVisualEffects</code></a> values passed along the <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#NotificationManager.Policy%28int,%20int,%20int,%20int%29"><code>NotificationManager.Policy</code></a> and if an app has set any of the SUPPRESSED_EFFECT_SCREEN_OFF or SUPPRESSED_EFFECT_SCREEN_ON flags, it SHOULD indicate to the user that the visual effects are suppressed in the DND settings menu.
        </li>
      </ul>
      <h4 id="3_8_4_search">
        3.8.4. Search
      </h4>
      <p>
        Android includes APIs that allow developers to <a href="http://developer.android.com/reference/android/app/SearchManager.html">incorporate search</a> 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>
      <p>
        Android device implementations SHOULD, and Android Automotive implementations MUST, implement an assistant on the device to handle the <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Assist action</a> .
      </p>
      <p>
        Android also includes the <a href="https://developer.android.com/reference/android/app/assist/package-summary.html">Assist APIs</a> to allow applications to elect how much information of the current context is shared with the assistant on the device. Device implementations supporting the Assist action MUST indicate clearly to the end user when the context is shared by displaying a white light around the edges of the screen. To ensure clear visibility to the end user, the indication MUST meet or exceed the duration and brightness of the Android Open Source Project implementation.
      </p>
      <p>
        This indication MAY be disabled by default for preinstalled apps using the Assist and VoiceInteractionService API, if all following requirements are met:
      </p>
      <ul>
        <li>
          <p>
            The preinstalled app MUST request the context to be shared only when the user invoked the app by one of the following means, and the app is running in the foreground:
          </p>
          <ul>
            <li>hotword invocation
            </li>
            <li>input of the ASSIST navigation key/button/gesture
            </li>
          </ul>
        </li>
        <li>
          <p>
            The device implementation MUST provide an affordance to enable the indication, less than two navigations away from (the default voice input and assistant app settings menu) <a href="#3_2_3_5_default_app_settings">section 3.2.3.5</a> .
          </p>
        </li>
      </ul>
      <h4 id="3_8_5_toasts">
        3.8.5. Toasts
      </h4>
      <p>
        Applications can use the <a href="http://developer.android.com/reference/android/widget/Toast.html">“Toast” API</a> to display short non-modal strings to the end user that disappear after a brief period of time. Device implementations MUST display Toasts from applications to end users in some high-visibility manner.
      </p>
      <h4 id="3_8_6_themes">
        3.8.6. Themes
      </h4>
      <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 <a href="http://developer.android.com/guide/topics/ui/themes.html">Holo theme look and feel</a> as defined by the Android SDK. Device implementations MUST NOT alter any of the <a href="http://developer.android.com/reference/android/R.style.html">Holo theme attributes</a> exposed to applications.
      </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 <a href="http://developer.android.com/reference/android/R.style.html#Theme_Material">Material theme attributes</a> or their assets exposed to applications.
      </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 <a href="http://developer.android.com/reference/android/R.style.html">Device Default theme attributes</a> exposed to applications.
      </p>
      <p>
        Android supports a 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 or an app requests a light status bar using the SYSTEM_UI_FLAG_LIGHT_STATUS_BAR flag. When an app requests a light status bar, Android device implementations MUST change the color of the system status icons to black (for details, refer to <a href="http://developer.android.com/reference/android/R.style.html">R.style</a> ).
      </p>
      <h4 id="3_8_7_live_wallpapers">
        3.8.7. Live Wallpapers
      </h4>
      <p>
        Android defines a component type and corresponding API and lifecycle that allows applications to expose one or more <a href="http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html">“Live Wallpapers”</a> to the end user. 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>
      <h4 id="3_8_8_activity_switching">
        3.8.8. Activity Switching
      </h4>
      <div class="note">
        As the Recent function navigation key is OPTIONAL, the requirement to implement the overview screen is OPTIONAL for Android Watch and Android Automotive implementations, and RECOMMENDED for Android Television devices. There SHOULD still be a method to switch between activities on Android Automotive implementations.
      </div>
      <p>
        The upstream Android source code includes the <a href="http://developer.android.com/guide/components/recents.html">overview screen</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="#7_2_3_navigation_keys">section 7.2.3</a> MAY alter the interface but MUST meet the following requirements:
      </p>
      <ul>
        <li>MUST support at least up to 20 displayed activities.
        </li>
        <li>SHOULD display the titles of at least 4 activities at a time.
        </li>
        <li>MUST implement the <a href="http://developer.android.com/about/versions/android-5.0.html#ScreenPinning">screen pinning behavior</a> and provide the user with a settings menu to toggle the feature.
        </li>
        <li>SHOULD display highlight color, icon, screen title in recents.
        </li>
        <li>SHOULD display a closing affordance ("x") but MAY delay this until user interacts with screens.
        </li>
        <li>SHOULD implement a shortcut to switch easily to the previous activity
        </li>
        <li>MAY display affiliated recents as a group that moves together.
        </li>
      </ul>
      <p>
        Device implementations are STRONGLY RECOMMENDED to use the upstream Android user interface (or a similar thumbnail-based interface) for the overview screen.
      </p>
      <h4 id="3_8_9_input_management">
        3.8.9. Input Management
      </h4>
      <p>
        Android includes support for <a href="http://developer.android.com/guide/topics/text/creating-input-method.html">Input Management</a> and support for third-party input method editors. 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>
      <h4 id="3_8_10_lock_screen_media_control">
        3.8.10. Lock Screen Media Control
      </h4>
      <p>
        The Remote Control Client API is deprecated from Android 5.0 in favor of the <a href="http://developer.android.com/reference/android/app/Notification.MediaStyle.html">Media Notification Template</a> that allows media applications to integrate with playback controls that are displayed on the lock screen. Device implementations that support a lock screen, unless an Android Automotive or Watch implementation, MUST display the Lock screen Notifications including the Media Notification Template.
      </p>
      <h4 id="3_8_11_screen_savers_(previously_dreams)">
        3.8.11. Screen savers (previously Dreams)
      </h4>
      <p>
        Android includes support for <a href="http://developer.android.com/reference/android/service/dreams/DreamService.html">interactivescreensavers</a> , previously referred to as Dreams. Screen savers allow 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 screen savers, but other types of device implementations SHOULD include support for screen savers and provide a settings option for users toconfigure screen savers in response to the <code>android.settings.DREAM_SETTINGS</code> intent.
      </p>
      <h4 id="3_8_12_location">
        3.8.12. Location
      </h4>
      <p>
        When a device has a hardware sensor (e.g. GPS) that is capable of providing the location coordinates, <a href="http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE">location modes</a> MUST be displayed in the Location menu within Settings.
      </p>
      <h4 id="3_8_13_unicode_and_font">
        3.8.13. Unicode and Font
      </h4>
      <p>
        Android includes support for the emoji characters defined in <a href="http://www.unicode.org/versions/Unicode9.0.0/">Unicode 9.0</a> . All device implementations MUST be capable of rendering these emoji characters in color glyph and when Android device implementations include an IME, it SHOULD provide an input method to the user for these emoji characters.
      </p>
      <p>
        Android handheld devices SHOULD support the skin tone and diverse family emojis as specified in the <a href="http://unicode.org/reports/tr51">Unicode Technical Report #51</a> .
      </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>
      <h4 id="3_8_14_multi-windows">
        3.8.14. Multi-windows
      </h4>
      <p>
        A device implementation MAY choose not to implement any multi-window modes, but if it has the capability to display multiple activities at the same time it MUST implement such multi-window mode(s) in accordance with the application behaviors and APIs described in the Android SDK <a href="https://developer.android.com/preview/features/multi-window.html">multi-window mode support documentation</a> and meet the following requirements:
      </p>
      <ul>
        <li>Applications can indicate whether they are capable of operating in multi-window mode in the AndroidManifest.xml file, either explicitly via the <a href="https://developer.android.com/reference/android/R.attr.html#resizeableActivity"><code>android:resizeableActivity</code></a> attribute or implicitly by having the targetSdkVersion &gt; 24. Apps that explicitly set this attribute to false in their manifest MUST not be launched in multi-window mode. Apps that don't set the attribute in their manifest file (targetSdkVersion &lt; 24) can be launched in multi-window mode, but the system MUST provide warning that the app may not work as expected in multi-window mode.
        </li>
        <li>Device implementations MUST NOT offer split-screen or freeform mode if both the screen height and width is less than 440 dp.
        </li>
        <li>Device implementations with screen size <code>xlarge</code> SHOULD support freeform mode.
        </li>
        <li>Android Television device implementations MUST support picture-in-picture (PIP) mode multi-window and place the PIP multi-window in the top right corner when PIP is ON.
        </li>
        <li>Device implementations with PIP mode multi-window support MUST allocate at least 240x135 dp for the PIP window.
        </li>
        <li>If the PIP multi-window mode is supported the <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_WINDOW"><code>KeyEvent.KEYCODE_WINDOW</code></a> key MUST be used to control the PIP window; otherwise, the key MUST be available to the foreground activity.
        </li>
      </ul>
      <h3 id="3_9_device_administration">
        3.9. Device Administration
      </h3>
      <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 <a href="http://developer.android.com/guide/topics/admin/device-admin.html">Android Device Administration API</a> ]. Device implementations MUST provide an implementation of the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">DevicePolicyManager</a> class. Device implementations that supports a secure lock screen MUST implement the full range of <a href="http://developer.android.com/guide/topics/admin/device-admin.html">device administration</a> policies defined in the Android SDK documentation and report the platform feature android.software.device_admin.
      </p>
      <h4 id="3_9_1_device_provisioning">
        3.9.1 Device Provisioning
      </h4>
      <h5 id="3_9_1_1_device_owner_provisioning">
        3.9.1.1 Device owner provisioning
      </h5>
      <p>
        If a device implementation declares the <code>android.software.device_admin</code> feature then it MUST implement the provisioning of the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)">Device Owner app</a> of a Device Policy Client (DPC) application as indicated below:
      </p>
      <ul>
        <li>When the device implementation has no user data configured yet, it:
          <ul>
            <li>MUST report <code>true</code> for <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)"><code>DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</code></a> .
            </li>
            <li>MUST enroll the DPC application as the Device Owner app in response to the intent action <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_DEVICE"><code>android.app.action.PROVISION_MANAGED_DEVICE</code></a> .
            </li>
            <li>MUST enroll the DPC application as the Device Owner app if the device declares Near-Field Communications (NFC) support via the feature flag <code>android.hardware.nfc</code> and receives an NFC message containing a record with MIME type <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#MIME_TYPE_PROVISIONING_NFC"><code>MIME_TYPE_PROVISIONING_NFC</code></a> .
            </li>
          </ul>
        </li>
        <li>When the device implementation has user data, it:
          <ul>
            <li>MUST report <code>false</code> for the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)"><code>DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</code></a> .
            </li>
            <li>MUST not enroll any DPC application as the Device Owner App any more.
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Device implementations MAY have a preinstalled application performing device administration functions but this application MUST NOT be set as the Device Owner app without explicit consent or action from the user or the administrator of the device.
      </p>
      <h5 id="3_9_1_2_managed_profile_provisioning">
        3.9.1.2 Managed profile provisioning
      </h5>
      <p>
        If a device implementation declares the android.software.managed_users, it MUST be possible to enroll a Device Policy Controller (DPC) application as the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProfileOwnerApp(java.lang.String)">owner of a new Managed Profile</a> .
      </p>
      <p>
        The managed profile provisioning process (the flow initiated by <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE">android.app.action.PROVISION_MANAGED_PROFILE</a> ) user experience MUST align with the AOSP implementation.
      </p>
      <p>
        Device implementations MUST provide the following user affordances within the Settings user interface to indicate to the user when a particular system function has been disabled by the Device Policy Controller (DPC):
      </p>
      <ul>
        <li>A consistent icon or other user affordance (for example the upstream AOSP info icon) to represent when a particular setting is restricted by a Device Admin.
        </li>
        <li>A short explanation message, as provided by the Device Admin via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setShortSupportMessage%28android.content.ComponentName,%20java.lang.CharSequence%29"><code>setShortSupportMessage</code></a> .
        </li>
        <li>The DPC application’s icon.
        </li>
      </ul>
      <h3 id="3_9_2_managed_profile_support">
        3.9.2 Managed Profile Support
      </h3>
      <p>
        Managed profile capable devices are those devices that:
      </p>
      <ul>
        <li>Declare android.software.device_admin (see <a href="#3_9_device_administration">section 3.9 Device Administration</a> ).
        </li>
        <li>Are not low RAM devices (see <a href="#7_6_1_minimum_memory_and_storage">section 7.6.1</a> ).
        </li>
        <li>Allocate internal (non-removable) storage as shared storage (see <a href="#7_6_2_application_shared_storage">section 7.6.2</a> ).
        </li>
      </ul>
      <p>
        Managed profile capable devices MUST:
      </p>
      <ul>
        <li>Declare the platform feature flag <code>android.software.managed_users</code> .
        </li>
        <li>Support managed profiles via the <code>android.app.admin.DevicePolicyManager</code> APIs.
        </li>
        <li>Allow one and only <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE">one managed profile to be created</a> .
        </li>
        <li>Use an icon badge (similar to the AOSP upstream work badge) to represent the managed applications and widgets and other badged UI elements like Recents &amp; Notifications.
        </li>
        <li>Display a notification icon (similar to the AOSP upstream work badge) to indicate when user is within a managed profile application.
        </li>
        <li>Display a toast indicating that the user is in the managed profile if and when the device wakes up (ACTION_USER_PRESENT) and the foreground application is within the managed profile.
        </li>
        <li>Where a managed profile exists, show a visual affordance in the Intent 'Chooser' to allow the user to forward the intent from the managed profile to the primary user or vice versa, if enabled by the Device Policy Controller.
        </li>
        <li>Where a managed profile exists, expose the following user affordances for both the primary user and the managed profile:
          <ul>
            <li>Separate accounting for battery, location, mobile data and storage usage for the primary user and managed profile.
            </li>
            <li>Independent management of VPN Applications installed within the primary user or managed profile.
            </li>
            <li>Independent management of applications installed within the primary user or managed profile.
            </li>
            <li>Independent management of accounts within the primary user or managed profile.
            </li>
          </ul>
        </li>
        <li>Ensure the preinstalled dialer, contacts and messaging applications can search for and look up caller information from the managed profile (if one exists) alongside those from the primary profile, if the Device Policy Controller permits it. When contacts from the managed profile are displayed in the preinstalled call log, in-call UI, in-progress and missed-call notifications, contacts and messaging apps they SHOULD be badged with the same badge used to indicate managed profile applications.
        </li>
        <li>MUST ensure that it satisfies all the security requirements applicable for a device with multiple users enabled (see <a href="#9_5_multi-user_support">section 9.5</a> ), even though the managed profile is not counted as another user in addition to the primary user.
        </li>
        <li>Support the ability to specify a separate lock screen meeting the following requirements to grant access to apps running in a managed profile.
          <ul>
            <li>Device implementations MUST honor the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_SET_NEW_PASSWORD"><code>DevicePolicyManager.ACTION_SET_NEW_PASSWORD</code></a> intent and show an interface to configure a separate lock screen credential for the managed profile.
            </li>
            <li>The lock screen credentials of the managed profile MUST use the same credential storage and management mechanisms as the parent profile, as documented on the <a href="http://source.android.com/security/authentication/index.html">Android Open Source Project Site</a>
            </li>
            <li>The DPC <a href="https://developer.android.com/guide/topics/admin/device-admin.html#pwd">password policies</a> MUST apply to only the managed profile's lock screen credentials unless called upon the <code>DevicePolicyManager</code> instance returned by <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getParentProfileInstance%28android.content.ComponentName%29">getParentProfileInstance</a> .
            </li>
          </ul>
        </li>
      </ul>
      <h3 id="3_10_accessibility">
        3.10. Accessibility
      </h3>
      <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 <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html">accessibility service implementations</a> 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.
      </p>
      <p>
        Device implementations include the following requirements:
      </p>
      <ul>
        <li>Android Automotive implementations SHOULD provide an implementation of the Android accessibility framework consistent with the default Android implementation.
        </li>
        <li>Device implementations (Android Automotive excluded) MUST provide an implementation of the Android accessibility framework consistent with the default Android implementation.
        </li>
        <li>Device implementations (Android Automotive excluded) MUST support third-party accessibility service implementations through the <a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">android.accessibilityservice APIs</a> .
        </li>
        <li>Device implementations (Android Automotive excluded) MUST generate AccessibilityEvents and deliver these events to all registered AccessibilityService implementations in a manner consistent with the default Android implementation
        </li>
        <li>
          <p>
            Device implementations (Android Automotive and Android Watch devices with no audio output excluded), 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.
          </p>
        </li>
        <li>
          <p>
            Android device implementations with audio output are STRONGLY RECOMMENDED to provide implementations of accessibility services on the device comparable in or exceeding functionality of the TalkBack** and Switch Access accessibility services (https://github.com/google/talkback).
          </p>
        </li>
        <li>Android Watch devices with audio output SHOULD provide implementations of an accessibility service on the device comparable in or exceeding functionality of the TalkBack accessibility service (https://github.com/google/talkback).
        </li>
        <li>Device implementations SHOULD provide a mechanism in the out-of-box setup flow for users to enable relevant accessibility services, as well as options to adjust the font size, display size and magnification gestures.
        </li>
      </ul>
      <p>
        ** For languages supported by Text-to-speech.
      </p>
      <p>
        Also, note that if there is a preloaded accessibility service, it MUST be a Direct Boot aware {directBootAware} app if the device has encrypted storage using File Based Encryption (FBE).
      </p>
      <h3 id="3_11_text-to-speech">
        3.11. Text-to-Speech
      </h3>
      <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. Device implementations reporting the feature android.hardware.audio.output MUST meet these requirements related to the <a href="http://developer.android.com/reference/android/speech/tts/package-summary.html">Android TTS framework</a> .
      </p>
      <p>
        Android Automotive implementations:
      </p>
      <ul>
        <li>MUST support the Android TTS framework APIs.
        </li>
        <li>MAY support installation of third-party TTS engines. If supported, partners MUST provide a user-accessible interface that allows the user to select a TTS engine for use at system level.
        </li>
      </ul>
      <p>
        All other 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>
        <li>MUST support installation of third-party TTS engines.
        </li>
        <li>MUST provide a user-accessible interface that allows users to select a TTS engine for use at the system level.
        </li>
      </ul>
      <h3 id="3_12_tv_input_framework">
        3.12. TV Input Framework
      </h3>
      <p>
        The <a href="http://source.android.com/devices/tv/index.html">Android Television Input Framework (TIF)</a> 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 TV Input Framework.
      </p>
      <p>
        Device implementations that support TIF MUST declare the platform feature android.software.live_tv.
      </p>
      <h4 id="3_12_1_tv_app">
        3.12.1. TV App
      </h4>
      <p>
        Any device implementation that declares support for Live TV MUST have an installed TV application (TV App). The Android Open Source Project provides an implementation of the TV App.
      </p>
      <p>
        The TV App MUST provide facilities to install and use <a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html">TV Channels</a> and meet the following requirements:
      </p>
      <ul>
        <li>Device implementations MUST allow third-party TIF-based inputs ( <a href="https://source.android.com/devices/tv/index.html#third-party_input_example">third-party inputs</a> ) to be installed and managed.
        </li>
        <li>Device implementations MAY provide visual separation between pre-installed <a href="https://source.android.com/devices/tv/index.html#tv_inputs">TIF-based inputs</a> (installed inputs) and third-party inputs.
        </li>
        <li>Device implementations MUST NOT display the third-party inputs more than a single navigation action away from the TV App (i.e. expanding a list of third-party inputs from the TV App).
        </li>
      </ul>
      <h5 id="3_12_1_1_electronic_program_guide">
        3.12.1.1. Electronic Program Guide
      </h5>
      <p>
        Android Television device implementations MUST show an informational and interactive overlay, which MUST include an electronic program guide (EPG) generated from the values in the <a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html">TvContract.Programs</a> fields. The EPG MUST meet the following requirements:
      </p>
      <ul>
        <li>The EPG MUST display information from all installed inputs and third-party inputs.
        </li>
        <li>The EPG MAY provide visual separation between the installed inputs and third-party inputs.
        </li>
        <li>The EPG is STRONGLY RECOMMENDED to display installed inputs and third-party inputs with equal prominence. The EPG MUST NOT display the third-party inputs more than a single navigation action away from the installed inputs on the EPG.
        </li>
        <li>On channel change, device implementations MUST display EPG data for the currently playing program.
        </li>
      </ul>
      <h5 id="3_12_1_2_navigation">
        3.12.1.2. Navigation
      </h5>
      <p>
        The TV App MUST allow navigation for the following functions via the D-pad, Back, and Home keys on the Android Television device’s input device(s) (i.e. remote control, remote control application, or game controller):
      </p>
      <ul>
        <li>Changing TV channels
        </li>
        <li>Opening EPG
        </li>
        <li>Configuring and tuning to third-party TIF-based inputs
        </li>
        <li>Opening Settings menu
        </li>
      </ul>
      <p>
        The TV App SHOULD pass key events to HDMI inputs through CEC.
      </p>
      <h5 id="3_12_1_3_tv_input_app_linking">
        3.12.1.3. TV input app linking
      </h5>
      <p>
        Android Television device implementations MUST support <a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI">TV input app linking</a> , which allows all inputs to provide activity links from the current activity to another activity (i.e. a link from live programming to related content). The TV App MUST show TV input app linking when it is provided.
      </p>
      <h5 id="3_12_1_4_time_shifting">
        3.12.1.4. Time shifting
      </h5>
      <p>
        Android Television device implementations MUST support time shifting, which allows the user to pause and resume live content. Device implementations MUST provide the user a way to pause and resume the currently playing program, if time shifting for that program <a href="https://developer.android.com/reference/android/media/tv/TvInputManager.html#TIME_SHIFT_STATUS_AVAILABLE">is available</a> .
      </p>
      <h5 id="3_12_1_5_tv_recording">
        3.12.1.5. TV recording
      </h5>
      <p>
        Android Television device implementations are STRONGLY RECOMMENDED to support TV recording. If the TV input supports recording, the EPG MAY provide a way to <a href="https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord%28%29">record a program</a> if the recording of such a program is not <a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED">prohibited</a> . Device implementations SHOULD provide a user interface to play recorded programs.
      </p>
      <h3 id="3_13_quick_settings">
        3.13. Quick Settings
      </h3>
      <p>
        Android device implementations SHOULD include a Quick Settings UI component that allow quick access to frequently used or urgently needed actions.
      </p>
      <p>
        Android includes the <a href="https://developer.android.com/reference/android/service/quicksettings/package-summary.html"><code>quicksettings</code></a> API allowing third party apps to implement tiles that can be added by the user alongside the system-provided tiles in the Quick Settings UI component. If a device implementation has a Quick Settings UI component, it:
      </p>
      <ul>
        <li>MUST allow the user to add or remove tiles from a third-party app to Quick Settings.
        </li>
        <li>MUST NOT automatically add a tile from a third-party app directly to Quick Settings.
        </li>
        <li>MUST display all the user-added tiles from third-party apps alongside the system-provided quick setting tiles.
        </li>
      </ul>
      <h3 id="3_14_vehicle_ui_apis">
        3.14. Vehicle UI APIs
      </h3>
      <h4 id="3_14_1__vehicle_media_ui">
        3.14.1. Vehicle Media UI
      </h4>
      <p>
        Any device implementation that <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html?#FEATURE_AUTOMOTIVE?">declares automotive support</a> MUST include a UI framework to support third-party apps consuming the <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> and <a href="http://developer.android.com/reference/android/media/session/MediaSession.html">MediaSession</a> APIs.
      </p>
      <p>
        The UI framework supporting third-party apps that depend on MediaBrowser and MediaSession has the following visual requirements:
      </p>
      <ul>
        <li>MUST display <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.MediaItem.html">MediaItem</a> icons and notification icons unaltered.
        </li>
        <li>MUST display those items as described by MediaSession, e.g., metadata, icons, imagery.
        </li>
        <li>MUST show app title.
        </li>
        <li>MUST have drawer to present <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> hierarchy.
        </li>
      </ul>
      <h2 id="4_application_packaging_compatibility">
        4. Application Packaging Compatibility
      </h2>
      <p>
        Device implementations MUST install and run Android “.apk” files as generated by the “aapt” tool included in the <a href="http://developer.android.com/tools/help/index.html">official Android SDK</a> . For this reason device implementations SHOULD use the reference implementation’s package management system.
      </p>
      <p>
        The package manager MUST support verifying “.apk” files using the <a href="https://source.android.com/security/apksigning/v2.html">APK Signature Scheme v2</a> .
      </p>
      <p>
        Devices implementations MUST NOT extend either the <a href="http://developer.android.com/guide/components/fundamentals.html">.apk</a> , <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">Android Manifest</a> , <a href="https://android.googlesource.com/platform/dalvik/">Dalvik bytecode</a> , or RenderScript bytecode formats in such a way that would prevent those files from installing and running correctly on other compatible devices.
      </p>
      <p>
        Device implementations MUST NOT allow apps other than the current "installer of record" for the package to silently uninstall the app without any prompt, as documented in the SDK for the <a href="https://developer.android.com/reference/android/Manifest.permission.html#DELETE_PACKAGES"><code>DELETE_PACKAGE</code></a> permission. The only exceptions are the system package verifier app handling <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_NEEDS_VERIFICATION">PACKAGE_NEEDS_VERIFICATION</a> intent and the storage manager app handling <a href="https://developer.android.com/reference/android/os/storage/StorageManager.html#ACTION_MANAGE_STORAGE">ACTION_MANAGE_STORAGE</a> intent.
      </p>
      <h2 id="5_multimedia_compatibility">
        5. Multimedia Compatibility
      </h2>
      <h3 id="5_1_media_codecs">
        5.1. Media Codecs
      </h3>
      <p>
        Device implementations—
      </p>
      <ul>
        <li>
          <p>
            MUST support the <a href="http://developer.android.com/guide/appendix/media-formats.html">core media formats</a> specified in the Android SDK documentation, except where explicitly permitted in this document.
          </p>
        </li>
        <li>
          <p>
            MUST support the media formats, encoders, decoders, file types, and container formats defined in the tables below and reported via <a href="http://developer.android.com/reference/android/media/MediaCodecList.html">MediaCodecList</a> .
          </p>
        </li>
        <li>
          <p>
            MUST also be able to decode all profiles reported in its <a href="http://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>
          </p>
        </li>
        <li>
          <p>
            MUST be able to decode all formats it can encode. This includes all bitstreams that its encoders generate.
          </p>
        </li>
      </ul>
      <p>
        Codecs SHOULD aim for minimum codec latency, in other words, codecs—
      </p>
      <ul>
        <li>SHOULD NOT consume and store input buffers and return input buffers only once processed
        </li>
        <li>SHOULD NOT hold onto decoded buffers for longer than as specified by the standard (e.g. SPS).
        </li>
        <li>SHOULD NOT hold onto encoded buffers longer than required by the GOP structure.
        </li>
      </ul>
      <p>
        All of the codecs listed in the table below 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>
      <h4 id="5_1_1_audio_codecs">
        5.1.1. Audio Codecs
      </h4>
      <table>
        <tr>
          <th>
            Format/Codec
          </th>
          <th>
            Encoder
          </th>
          <th>
            Decoder
          </th>
          <th>
            Details
          </th>
          <th>
            Supported File Types/Container Formats
          </th>
        </tr>
        <tr>
          <td>
            MPEG-4 AAC Profile<br />
            (AAC LC)
          </td>
          <td>
            REQUIRED <sup>1</sup>
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            Support for mono/stereo/5.0/5.1 <sup>2</sup> content with standard sampling rates from 8 to 48 kHz.
          </td>
          <td>
            <ul>
              <li class="table_list">3GPP (.3gp)
              </li>
              <li class="table_list">MPEG-4 (.mp4, .m4a)
              </li>
              <li class="table_list">ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)
              </li>
              <li class="table_list">MPEG-TS (.ts, not seekable, Android 3.0+)
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            MPEG-4 HE AAC Profile (AAC+)
          </td>
          <td>
            REQUIRED <sup>1</sup><br />
            (Android 4.1+)
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            Support for mono/stereo/5.0/5.1 <sup>2</sup> content with standard sampling rates from 16 to 48 kHz.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>
            MPEG-4 HE AACv2<br />
            Profile (enhanced AAC+)
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td>
            Support for mono/stereo/5.0/5.1 <sup>2</sup> content with standard sampling rates from 16 to 48 kHz.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>
            AAC ELD (enhanced low delay AAC)
          </td>
          <td>
            REQUIRED <sup>1</sup><br />
            (Android 4.1+)
          </td>
          <td>
            REQUIRED<br />
            (Android 4.1+)
          </td>
          <td>
            Support for mono/stereo content with standard sampling rates from 16 to 48 kHz.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>
            AMR-NB
          </td>
          <td>
            REQUIRED <sup>3</sup>
          </td>
          <td>
            REQUIRED <sup>3</sup>
          </td>
          <td>
            4.75 to 12.2 kbps sampled @ 8 kHz
          </td>
          <td>
            3GPP (.3gp)
          </td>
        </tr>
        <tr>
          <td>
            AMR-WB
          </td>
          <td>
            REQUIRED <sup>3</sup>
          </td>
          <td>
            REQUIRED <sup>3</sup>
          </td>
          <td>
            9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16 kHz
          </td>
          <td></td>
        </tr>
        <tr>
          <td>
            FLAC
          </td>
          <td></td>
          <td>
            REQUIRED<br />
            (Android 3.1+)
          </td>
          <td>
            Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1 kHz is RECOMMENDED on devices with 44.1 kHz output, as the 48 to 44.1 kHz downsampler does not include a low-pass filter). 16-bit RECOMMENDED; no dither applied for 24-bit.
          </td>
          <td>
            FLAC (.flac) only
          </td>
        </tr>
        <tr>
          <td>
            MP3
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td>
            Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR)
          </td>
          <td>
            MP3 (.mp3)
          </td>
        </tr>
        <tr>
          <td>
            MIDI
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td>
            MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody
          </td>
          <td>
            <ul>
              <li class="table_list">Type 0 and 1 (.mid, .xmf, .mxmf)
              </li>
              <li class="table_list">RTTTL/RTX (.rtttl, .rtx)
              </li>
              <li class="table_list">OTA (.ota)
              </li>
              <li class="table_list">iMelody (.imy)
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            Vorbis
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            <ul>
              <li class="table_list">Ogg (.ogg)
              </li>
              <li class="table_list">Matroska (.mkv, Android 4.0+)
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            PCM/WAVE
          </td>
          <td>
            REQUIRED <sup>4</sup><br />
            (Android 4.1+)
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            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.
          </td>
          <td>
            WAVE (.wav)
          </td>
        </tr>
        <tr>
          <td>
            Opus
          </td>
          <td></td>
          <td>
            REQUIRED<br />
            (Android 5.0+)
          </td>
          <td></td>
          <td>
            Matroska (.mkv), Ogg(.ogg)
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 Required for device implementations that define android.hardware.microphone but optional for Android Watch device implementations.
      </p>
      <p class="table_footnote">
        2 Recording or playback MAY be performed in mono or stereo, but the decoding of AAC input buffers of multichannel streams (i.e. more than two channels) to PCM through the default AAC audio decoder in the android.media.MediaCodec API, the following MUST be supported:
      </p>
      <ul>
        <li>decoding is performed without downmixing (e.g. a 5.0 AAC stream must be decoded to five channels of PCM, a 5.1 AAC stream must be decoded to six channels of PCM),
        </li>
        <li>dynamic range metadata, as defined in "Dynamic Range Control (DRC)" in ISO/IEC 14496-3, and the android.media.MediaFormat DRC keys to configure the dynamic range-related behaviors of the audio decoder. The AAC DRC keys were introduced in API 21,and are: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL and KEY_AAC_ENCODED_TARGET_LEVEL
        </li>
      </ul>
      <p class="table_footnote">
        3 Required for Android Handheld device implementations.
      </p>
      <p class="table_footnote">
        4 Required for device implementations that define android.hardware.microphone, including Android Watch device implementations.
      </p>
      <h4 id="5_1_2_image_codecs">
        5.1.2. Image Codecs
      </h4>
      <table>
        <tr>
          <th>
            Format/Codec
          </th>
          <th>
            Encoder
          </th>
          <th>
            Decoder
          </th>
          <th>
            Details
          </th>
          <th>
            Supported File Types/Container Formats
          </th>
        </tr>
        <tr>
          <td>
            JPEG
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            Base+progressive
          </td>
          <td>
            JPEG (.jpg)
          </td>
        </tr>
        <tr>
          <td>
            GIF
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            GIF (.gif)
          </td>
        </tr>
        <tr>
          <td>
            PNG
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            PNG (.png)
          </td>
        </tr>
        <tr>
          <td>
            BMP
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            BMP (.bmp)
          </td>
        </tr>
        <tr>
          <td>
            WebP
          </td>
          <td>
            REQUIRED
          </td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            WebP (.webp)
          </td>
        </tr>
        <tr>
          <td>
            Raw
          </td>
          <td></td>
          <td>
            REQUIRED
          </td>
          <td></td>
          <td>
            ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)
          </td>
        </tr>
      </table>
      <h4 id="5_1_3_video_codecs">
        5.1.3. Video Codecs
      </h4>
      <ul>
        <li>
          <p>
            Codecs advertising HDR profile support MUST support HDR static metadata parsing and handling.
          </p>
        </li>
        <li>
          <p>
            If a media codec advertises intra refresh support, then it MUST support the refresh periods in the range of 10 - 60 frames and accurately operate within 20% of configured refresh period.
          </p>
        </li>
        <li>
          <p>
            Video codecs MUST support output and input bytebuffer sizes that accommodate the largest feasible compressed and uncompressed frame as dictated by the standard and configuration but also not overallocate.
          </p>
        </li>
        <li>
          <p>
            Video encoders and decoders MUST support YUV420 flexible color format (COLOR_FormatYUV420Flexible).
          </p>
        </li>
      </ul>
      <table>
        <tr>
          <th>
            Format/Codec
          </th>
          <th>
            Encoder
          </th>
          <th>
            Decoder
          </th>
          <th>
            Details
          </th>
          <th>
            Supported File Types/<br />
            Container Formats
          </th>
        </tr>
        <tr>
          <td>
            H.263
          </td>
          <td>
            MAY
          </td>
          <td>
            MAY
          </td>
          <td></td>
          <td>
            <ul>
              <li class="table_list">3GPP (.3gp)
              </li>
              <li class="table_list">MPEG-4 (.mp4)
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            H.264 AVC
          </td>
          <td>
            REQUIRED <sup>2</sup>
          </td>
          <td>
            REQUIRED <sup>2</sup>
          </td>
          <td>
            See <a href="#5_2_video_encoding">section 5.2</a> and <a href="#5_3_video_decoding">5.3</a> for details
          </td>
          <td>
            <ul>
              <li class="table_list">3GPP (.3gp)
              </li>
              <li class="table_list">MPEG-4 (.mp4)
              </li>
              <li class="table_list">MPEG-2 TS (.ts, AAC audio only, not seekable, Android 3.0+)
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            H.265 HEVC
          </td>
          <td></td>
          <td>
            REQUIRED <sup>5</sup>
          </td>
          <td>
            See <a href="#5_3_video_decoding">section 5.3</a> for details
          </td>
          <td>
            MPEG-4 (.mp4)
          </td>
        </tr>
        <tr>
          <td>
            MPEG-2
          </td>
          <td></td>
          <td>
            STRONGLY RECOMMENDED <sup>6</sup>
          </td>
          <td>
            Main Profile
          </td>
          <td>
            MPEG2-TS
          </td>
        </tr>
        <tr>
          <td>
            MPEG-4 SP
          </td>
          <td></td>
          <td>
            REQUIRED <sup>2</sup>
          </td>
          <td></td>
          <td>
            3GPP (.3gp)
          </td>
        </tr>
        <tr>
          <td>
            VP8 <sup>3</sup>
          </td>
          <td>
            REQUIRED <sup>2</sup><br />
            (Android 4.3+)
          </td>
          <td>
            REQUIRED <sup>2</sup><br />
            (Android 2.3.3+)
          </td>
          <td>
            See <a href="#5_2_video_encoding">section 5.2</a> and <a href="#5_3_video_decoding">5.3</a> for details
          </td>
          <td>
            <ul>
              <li class="table_list">
                <a href="http://www.webmproject.org/">WebM (.webm)</a>
              </li>
              <li class="table_list">Matroska (.mkv, Android 4.0+) <sup>4</sup>
              </li>
            </ul>
          </td>
        </tr>
        <tr>
          <td>
            VP9
          </td>
          <td></td>
          <td>
            REQUIRED <sup>2</sup><br />
            (Android 4.4+)
          </td>
          <td>
            See <a href="#5_3_video_decoding">section 5.3</a> for details
          </td>
          <td>
            <ul>
              <li class="table_list">
                <a href="http://www.webmproject.org/">WebM (.webm)</a>
              </li>
              <li class="table_list">Matroska (.mkv, Android 4.0+) <sup>4</sup>
              </li>
            </ul>
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 Required for device implementations that include camera hardware and define android.hardware.camera or android.hardware.camera.front.
      </p>
      <p class="table_footnote">
        2 Required for device implementations except Android Watch devices.
      </p>
      <p class="table_footnote">
        3 For acceptable quality of web video streaming and video-conference services, device implementations SHOULD use a hardware VP8 codec that meets the <a href="http://www.webmproject.org/hardware/rtc-coding-requirements/">requirements</a> .
      </p>
      <p class="table_footnote">
        4 Device implementations SHOULD support writing Matroska WebM files.
      </p>
      <p class="table_footnote">
        5 STRONGLY RECOMMENDED for Android Automotive, optional for Android Watch, and required for all other device types.
      </p>
      <p class="table_footnote">
        6 Applies only to Android Television device implementations.
      </p>
      <h3 id="5_2_video_encoding">
        5.2. Video Encoding
      </h3>
      <div class="note">
        Video codecs are optional for Android Watch device implementations.
      </div>
      <p>
        H.264, VP8, VP9 and HEVC video encoders—
      </p>
      <ul>
        <li>MUST support dynamically configurable bitrates.
        </li>
        <li>SHOULD support variable frame rates, where video encoder SHOULD determine instantaneous frame duration based on the timestamps of input buffers, and allocate its bit bucket based on that frame duration.
        </li>
      </ul>
      <p>
        H.263 and MPEG-4 video encoder SHOULD support dynamically configurable bitrates.
      </p>
      <p>
        All video encoders SHOULD meet the following bitrate targets over two sliding windows:
      </p>
      <ul>
        <li>It SHOULD be not more than ~15% over the bitrate between intraframe (I-frame) intervals.
        </li>
        <li>It SHOULD be not more than ~100% over the bitrate over a sliding window of 1 second.
        </li>
      </ul>
      <h4 id="5_2_1_h_263">
        5.2.1. H.263
      </h4>
      <p>
        Android device implementations with H.263 encoders MUST support Baseline Profile Level 45.
      </p>
      <h4 id="5_2_2_h-264">
        5.2.2. H-264
      </h4>
      <p>
        Android device implementations with H.264 codec support:
      </p>
      <ul>
        <li>MUST support Baseline Profile Level 3.<br />
          However, support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL. Moreover, to maintain compatibility with other Android devices, it is RECOMMENDED that ASO, FMO and RS are not used for Baseline Profile by encoders.
        </li>
        <li>MUST support the SD (Standard Definition) video encoding profiles in the following table.
        </li>
        <li>SHOULD support Main Profile Level 4.
        </li>
        <li>SHOULD support the HD (High Definition) video encoding profiles as indicated in the following table.
        </li>
        <li>In addition, Android Television devices are STRONGLY RECOMMENDED to encode HD 1080p video at 30 fps.
        </li>
      </ul>
      <table>
        <tr>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p <sup>1</sup>
          </th>
          <th>
            HD 1080p <sup>1</sup>
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            320 x 240 px
          </td>
          <td>
            720 x 480 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            20 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            384 Kbps
          </td>
          <td>
            2 Mbps
          </td>
          <td>
            4 Mbps
          </td>
          <td>
            10 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 When supported by hardware, but STRONGLY RECOMMENDED for Android Television devices.
      </p>
      <h4 id="5_2_3_vp8">
        5.2.3. VP8
      </h4>
      <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>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p <sup>1</sup>
          </th>
          <th>
            HD 1080p <sup>1</sup>
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            320 x 180 px
          </td>
          <td>
            640 x 360 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            800 Kbps
          </td>
          <td>
            2 Mbps
          </td>
          <td>
            4 Mbps
          </td>
          <td>
            10 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 When supported by hardware.
      </p>
      <h3 id="5_3_video_decoding">
        5.3. Video Decoding
      </h3>
      <div class="note">
        Video codecs are optional for Android Watch device implementations.
      </div>
      <p>
        Device implementations—
      </p>
      <ul>
        <li>
          <p>
            MUST support dynamic video resolution and frame rate switching through the standard Android APIs within the same stream for all VP8, VP9, H.264, and H.265 codecs in real time and up to the maximum resolution supported by each codec on the device.
          </p>
        </li>
        <li>
          <p>
            Implementations that support the Dolby Vision decoder—
          </p>
        </li>
        <li>MUST provide a Dolby Vision-capable extractor.
        </li>
        <li>
          <p>
            MUST properly display Dolby Vision content on the device screen or on a standard video output port (e.g., HDMI).
          </p>
        </li>
        <li>
          <p>
            Implementations that provide a Dolby Vision-capable extractor MUST set the track index of backward-compatible base-layer(s) (if present) to be the same as the combined Dolby Vision layer's track index.
          </p>
        </li>
      </ul>
      <h4 id="5_3_1_mpeg-2">
        5.3.1. MPEG-2
      </h4>
      <p>
        Android device implementations with MPEG-2 decoders must support the Main Profile High Level.
      </p>
      <h4 id="5_3_2_h_263">
        5.3.2. H.263
      </h4>
      <p>
        Android device implementations with H.263 decoders MUST support Baseline Profile Level 30 and Level 45.
      </p>
      <h4 id="5_3_3_mpeg-4">
        5.3.3. MPEG-4
      </h4>
      <p>
        Android device implementations with MPEG-4 decoders MUST support Simple Profile Level 3.
      </p>
      <h4 id="5_3_4_h_264">
        5.3.4. H.264
      </h4>
      <p>
        Android device implementations with H.264 decoders:
      </p>
      <ul>
        <li>MUST support Main Profile Level 3.1 and Baseline Profile.<br />
          Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL.
        </li>
        <li>MUST be capable of decoding videos with the SD (Standard Definition) profiles listed in the following table and encoded with the Baseline Profile and Main Profile Level 3.1 (including 720p30).
        </li>
        <li>SHOULD be capable of decoding videos with the HD (High Definition) profiles as indicated in the following table.
        </li>
        <li>In addition, Android Television devices—
          <ul>
            <li>MUST support High Profile Level 4.2 and the HD 1080p60 decoding profile.
            </li>
            <li>MUST be capable of decoding videos with both HD profiles as indicated in the following table and encoded with either the Baseline Profile, Main Profile, or the High Profile Level 4.2
            </li>
          </ul>
        </li>
      </ul>
      <table>
        <tr>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p <sup>1</sup>
          </th>
          <th>
            HD 1080p <sup>1</sup>
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            320 x 240 px
          </td>
          <td>
            720 x 480 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            60 fps
          </td>
          <td>
            30 fps (60 fps <sup>2</sup> )
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            800 Kbps
          </td>
          <td>
            2 Mbps
          </td>
          <td>
            8 Mbps
          </td>
          <td>
            20 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 REQUIRED for when the height as reported by the Display.getSupportedModes() method is equal or greater than the video resolution.
      </p>
      <p class="table_footnote">
        2 REQUIRED for Android Television device implementations.
      </p>
      <h4 id="5_3_5_h_265_(hevc)">
        5.3.5. H.265 (HEVC)
      </h4>
      <p>
        Android device implementations, when supporting H.265 codec as described in <a href="#5_1_3_video_codecs">section 5.1.3</a> :
      </p>
      <ul>
        <li>MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles as indicated in the following table.
        </li>
        <li>SHOULD support the HD decoding profiles as indicated in the following table.
        </li>
        <li>MUST support the HD decoding profiles as indicated in the following table if there is a hardware decoder.
        </li>
        <li>In addition, Android Television devices:
        </li>
        <li>MUST support the HD 720p decoding profile.
        </li>
        <li>STRONGLY RECOMMENDED to support the HD 1080p decoding profile. If the HD 1080p decoding profile is supported, it MUST support the Main Profile Level 4.1 Main tier.
        </li>
        <li>SHOULD support the UHD decoding profile. If the UHD decoding profile is supported the codec MUST support Main10 Level 5 Main Tier profile.
        </li>
      </ul>
      <table>
        <tr>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p
          </th>
          <th>
            HD 1080p
          </th>
          <th>
            UHD
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            352 x 288 px
          </td>
          <td>
            720 x 480 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
          <td>
            3840 x 2160 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps (60 fps <sup>1</sup> )
          </td>
          <td>
            60 fps
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            600 Kbps
          </td>
          <td>
            1.6 Mbps
          </td>
          <td>
            4 Mbps
          </td>
          <td>
            5 Mbps
          </td>
          <td>
            20 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 REQUIRED for Android Television device implementations with H.265 hardware decoding.
      </p>
      <h4 id="5_3_6_vp8">
        5.3.6. VP8
      </h4>
      <p>
        Android device implementations, when supporting VP8 codec as described in <a href="https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs">section 5.1.3</a> :
      </p>
      <ul>
        <li>MUST support the SD decoding profiles in the following table.
        </li>
        <li>SHOULD support the HD decoding profiles in the following table.
        </li>
        <li>Android Television devices MUST support the HD 1080p60 decoding profile.
        </li>
      </ul>
      <table>
        <tr>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p <sup>1</sup>
          </th>
          <th>
            HD 1080p <sup>1</sup>
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            320 x 180 px
          </td>
          <td>
            640 x 360 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps (60 fps <sup>2</sup> )
          </td>
          <td>
            30 (60 fps <sup>2</sup> )
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            800 Kbps
          </td>
          <td>
            2 Mbps
          </td>
          <td>
            8 Mbps
          </td>
          <td>
            20 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 REQUIRED for when the height as reported by the Display.getSupportedModes() method is equal or greater than the video resolution.
      </p>
      <p class="table_footnote">
        2 REQUIRED for Android Television device implementations.
      </p>
      <h4 id="5_3_7_vp9">
        5.3.7. VP9
      </h4>
      <p>
        Android device implementations, when supporting VP9 codec as described in <a href="https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs">section 5.1.3</a> :
      </p>
      <ul>
        <li>MUST support the SD video decoding profiles as indicated in the following table.
        </li>
        <li>SHOULD support the HD decoding profiles as indicated in the following table.
        </li>
        <li>MUST support the HD decoding profiles as indicated in the following table, if there is a hardware decoder.
        </li>
        <li>
          <p>
            In addition, Android Television devices:
          </p>
          <ul>
            <li>MUST support the HD 720p decoding profile.
            </li>
            <li>STRONGLY RECOMMENDED to support the HD 1080p decoding profile.
            </li>
            <li>SHOULD support the UHD decoding profile. If the UHD video decoding profile is supported, it MUST support 8-bit color depth and SHOULD support VP9 Profile 2 (10-bit).
            </li>
          </ul>
        </li>
      </ul>
      <table>
        <tr>
          <th></th>
          <th>
            SD (Low quality)
          </th>
          <th>
            SD (High quality)
          </th>
          <th>
            HD 720p
          </th>
          <th>
            HD 1080p
          </th>
          <th>
            UHD
          </th>
        </tr>
        <tr>
          <th>
            Video resolution
          </th>
          <td>
            320 x 180 px
          </td>
          <td>
            640 x 360 px
          </td>
          <td>
            1280 x 720 px
          </td>
          <td>
            1920 x 1080 px
          </td>
          <td>
            3840 x 2160 px
          </td>
        </tr>
        <tr>
          <th>
            Video frame rate
          </th>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps
          </td>
          <td>
            30 fps (60 fps <sup>1</sup> )
          </td>
          <td>
            60 fps
          </td>
        </tr>
        <tr>
          <th>
            Video bitrate
          </th>
          <td>
            600 Kbps
          </td>
          <td>
            1.6 Mbps
          </td>
          <td>
            4 Mbps
          </td>
          <td>
            5 Mbps
          </td>
          <td>
            20 Mbps
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 REQUIRED for Android Television device implementations with VP9 hardware decoding.
      </p>
      <h3 id="5_4_audio_recording">
        5.4. Audio Recording
      </h3>
      <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>STRONGLY RECOMMENDED</strong> to meet these requirements that are stated as SHOULD, or they will not be able to attain Android compatibility when upgraded to the future version.
      </p>
      <h4 id="5_4_1_raw_audio_capture">
        5.4.1. Raw Audio Capture
      </h4>
      <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>
        <li>
          <strong>Sampling rates</strong> : 8000, 11025, 16000, 44100
        </li>
        <li>
          <strong>Channels</strong> : Mono
        </li>
      </ul>
      <p>
        The capture for the above sample rates MUST be done without up-sampling, and any down-sampling MUST include an appropriate anti-aliasing filter.
      </p>
      <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>
        <li>
          <strong>Sampling rates</strong> : 22050, 48000
        </li>
        <li>
          <strong>Channels</strong> : Stereo
        </li>
      </ul>
      <p>
        If capture for the above sample rates is supported, then the capture MUST be done without up-sampling at any ratio higher than 16000:22050 or 44100:48000. Any up-sampling or down-sampling MUST include an appropriate anti-aliasing filter.
      </p>
      <h4 id="5_4_2_capture_for_voice_recognition">
        5.4.2. Capture for Voice Recognition
      </h4>
      <p>
        The android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source MUST support capture at one of the sampling rates, 44100 and 48000.
      </p>
      <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>
        <li>Audio input sensitivity SHOULD be set such that a 90 dB sound power level (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.
        </li>
        <li>PCM amplitude levels SHOULD linearly track input SPL changes over at least a 30 dB range from -18 dB to +12 dB re 90 dB SPL at the microphone.
        </li>
        <li>Total harmonic distortion SHOULD be less than 1% for 1 kHz at 90 dB SPL input level at the microphone.
        </li>
        <li>Noise reduction processing, if present, MUST be disabled.
        </li>
        <li>Automatic gain control, if present, MUST be disabled.
        </li>
      </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>
      <h4 id="5_4_3_capture_for_rerouting_of_playback">
        5.4.3. Capture for Rerouting of Playback
      </h4>
      <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>
        <li>STREAM_ALARM
        </li>
        <li>STREAM_NOTIFICATION
        </li>
      </ul>
      <h3 id="5_5_audio_playback">
        5.5. Audio Playback
      </h3>
      <p>
        Device implementations that declare android.hardware.audio.output MUST conform to the requirements in this section.
      </p>
      <h4 id="5_5_1_raw_audio_playback">
        5.5.1. Raw Audio Playback
      </h4>
      <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>
        <li>
          <strong>Sampling rates</strong> : 8000, 11025, 16000, 22050, 32000, 44100
        </li>
        <li>
          <strong>Channels</strong> : Mono, Stereo
        </li>
      </ul>
      <p>
        The device SHOULD allow playback of raw audio content with the following characteristics:
      </p>
      <ul>
        <li>
          <strong>Sampling rates</strong> : 24000, 48000
        </li>
      </ul>
      <h4 id="5_5_2_audio_effects">
        5.5.2. Audio Effects
      </h4>
      <p>
        Android provides an <a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">API for audio effects</a> for device implementations. 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>
        <li>MUST support the visualizer API implementation, controllable through the Visualizer class.
        </li>
        <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.
        </li>
      </ul>
      <h4 id="5_5_3_audio_output_volume">
        5.5.3. Audio Output Volume
      </h4>
      <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>
      <p>
        Android Automotive device implementations SHOULD allow adjusting audio volume separately per each audio stream using the content type or usage as defined by <a href="" title="http://developer.android.com/reference/android/media/AudioAttributes.html">AudioAttributes</a> and car audio usage as publicly defined in <code>android.car.CarAudioManager</code> .
      </p>
      <h3 id="5_6_audio_latency">
        5.6. Audio Latency
      </h3>
      <p>
        Audio latency is the time delay as an audio signal passes through a system. Many classes of applications rely on short latencies, to achieve real-time 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 is presented to environment at an on-device transducer or signal leaves the device via a port and can be observed externally.
        </li>
        <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>
        <li>
          <strong>continuous output latency</strong> . The output latency for subsequent frames, after the device is playing audio.
        </li>
        <li>
          <strong>input latency</strong> . The interval between when a sound is presented by environment to device at an on-device transducer or signal enters the device via a port and when an application reads the corresponding frame of PCM-coded data.
        </li>
        <li>
          <strong>lost input</strong> . The initial portion of an input signal that is unusable or unavailable.
        </li>
        <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>
        <li>
          <strong>continuous input latency</strong> . The input latency for subsequent frames, while the device is capturing audio.
        </li>
        <li>
          <strong>cold output jitter</strong> . The variability among separate measurements of cold output latency values.
        </li>
        <li>
          <strong>cold input jitter</strong> . The variability among separate measurements of cold input latency values.
        </li>
        <li>
          <strong>continuous round-trip latency</strong> . The sum of continuous input latency plus continuous output latency plus one buffer period. The buffer period allows time for the app to process the signal and time for the app to mitigate phase difference between input and output streams.
        </li>
        <li>
          <strong>OpenSL ES PCM buffer queue API</strong> . The set of PCM-related OpenSL ES APIs within <a href="https://developer.android.com/ndk/index.html">Android NDK</a> .
        </li>
      </ul>
      <p>
        Device implementations that declare android.hardware.audio.output are STRONGLY RECOMMENDED to meet or exceed these audio output requirements:
      </p>
      <ul>
        <li>cold output latency of 100 milliseconds or less
        </li>
        <li>continuous output latency of 45 milliseconds or less
        </li>
        <li>minimize the cold output jitter
        </li>
      </ul>
      <p>
        If a device implementation meets the requirements of this section after any initial calibration when using the OpenSL ES PCM buffer queue API, for continuous output latency and cold output latency over at least one supported audio output device, it is STRONGLY RECOMMENDED to report support for low-latency audio, by reporting the feature android.hardware.audio.low_latency via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class. 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 are STRONGLY RECOMMENDED to meet these input audio requirements:
      </p>
      <ul>
        <li>cold input latency of 100 milliseconds or less
        </li>
        <li>continuous input latency of 30 milliseconds or less
        </li>
        <li>continuous round-trip latency of 50 milliseconds or less
        </li>
        <li>minimize the cold input jitter
        </li>
      </ul>
      <h3 id="5_7_network_protocols">
        5.7. Network Protocols
      </h3>
      <p>
        Devices MUST support the <a href="http://developer.android.com/guide/appendix/media-formats.html">media network protocols</a> for audio and video playback as specified in the Android SDK documentation. Specifically, devices MUST support the following media network protocols:
      </p>
      <ul>
        <li>
          <p>
            HTTP(S) progressive streaming<br />
            All required codecs and container formats in <a href="#5_1_media_codecs">section 5.1</a> MUST be supported over HTTP(S)
          </p>
        </li>
        <li>
          <p>
            <a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-07">HTTP Live Streaming draft protocol, Version 7</a><br />
            The following media segment formats MUST be supported:
          </p>
        </li>
      </ul>
      <table>
        <tr>
          <th>
            Segment formats
          </th>
          <th>
            Reference(s)
          </th>
          <th>
            Required codec support
          </th>
        </tr>
        <tr id="mp2t">
          <td>
            MPEG-2 Transport Stream
          </td>
          <td>
            <a href="http://www.iso.org/iso/catalogue_detail?csnumber=44169">ISO 13818</a>
          </td>
          <td>
            Video codecs:
            <ul>
              <li class="table_list">H264 AVC
              </li>
              <li class="table_list">MPEG-4 SP
              </li>
              <li class="table_list">MPEG-2
              </li>
            </ul>See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H264 AVC, MPEG2-4 SP,<br />
            and MPEG-2.
            <p>
              Audio codecs:
            </p>
            <ul>
              <li class="table_list">AAC
              </li>
            </ul>See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants.
          </td>
        </tr>
        <tr>
          <td>
            AAC with ADTS framing and ID3 tags
          </td>
          <td>
            <a href="http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=43345">ISO 13818-7</a>
          </td>
          <td>
            See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
          </td>
        </tr>
        <tr>
          <td>
            WebVTT
          </td>
          <td>
            <a href="http://dev.w3.org/html5/webvtt/">WebVTT</a>
          </td>
          <td></td>
        </tr>
      </table>
      <ul>
        <li>
          <p>
            RTSP (RTP, SDP)
          </p>
          <p>
            The following RTP audio video profile and related codecs MUST be supported. For exceptions please see the table footnotes in <a href="#5_1_media_codecs">section 5.1</a> .
          </p>
        </li>
      </ul>
      <table>
        <tr>
          <th>
            Profile name
          </th>
          <th>
            Reference(s)
          </th>
          <th>
            Required codec support
          </th>
        </tr>
        <tr>
          <td>
            H264 AVC
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc6184">RFC 6184</a>
          </td>
          <td>
            See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H264 AVC
          </td>
        </tr>
        <tr>
          <td>
            MP4A-LATM
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a>
          </td>
          <td>
            See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
          </td>
        </tr>
        <tr>
          <td>
            H263-1998
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc3551">RFC 3551</a><br />
            <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a><br />
            <a href="https://tools.ietf.org/html/rfc2190">RFC 2190</a>
          </td>
          <td>
            See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
          </td>
        </tr>
        <tr>
          <td>
            H263-2000
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a>
          </td>
          <td>
            See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
          </td>
        </tr>
        <tr>
          <td>
            AMR
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a>
          </td>
          <td>
            See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-NB
          </td>
        </tr>
        <tr>
          <td>
            AMR-WB
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a>
          </td>
          <td>
            See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-WB
          </td>
        </tr>
        <tr>
          <td>
            MP4V-ES
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a>
          </td>
          <td>
            See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on MPEG-4 SP
          </td>
        </tr>
        <tr>
          <td>
            mpeg4-generic
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc3640">RFC 3640</a>
          </td>
          <td>
            See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
          </td>
        </tr>
        <tr>
          <td>
            MP2T
          </td>
          <td>
            <a href="https://tools.ietf.org/html/rfc2250">RFC 2250</a>
          </td>
          <td>
            See <a href="#mp2t">MPEG-2 Transport Stream</a> underneath HTTP Live Streaming for details
          </td>
        </tr>
      </table>
      <h3 id="5_8_secure_media">
        5.8. Secure Media
      </h3>
      <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>
      <h3 id="5_9_musical_instrument_digital_interface_(midi)">
        5.9. Musical Instrument Digital Interface (MIDI)
      </h3>
      <p>
        If a device implementation supports the inter-app MIDI software transport (virtual MIDI devices), and it supports MIDI over <em>all</em> of the following MIDI-capable hardware transports for which it provides generic non-MIDI connectivity, it is STRONGLY RECOMMENDED to report support for feature android.software.midi via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
      </p>
      <p>
        The MIDI-capable hardware transports are:
      </p>
      <ul>
        <li>USB host mode (section 7.7 USB)
        </li>
        <li>USB peripheral mode (section 7.7 USB)
        </li>
        <li>MIDI over Bluetooth LE acting in central role (section 7.4.3 Bluetooth)
        </li>
      </ul>
      <p>
        Conversely, if the device implementation provides generic non-MIDI connectivity over a particular MIDI-capable hardware transport listed above, but does not support MIDI over that hardware transport, it MUST NOT report support for feature android.software.midi.
      </p>
      <h3 id="5_10_professional_audio">
        5.10. Professional Audio
      </h3>
      <p>
        If a device implementation meets <em>all</em> of the following requirements, it is STRONGLY RECOMMENDED to report support for feature android.hardware.audio.pro via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
      </p>
      <ul>
        <li>The device implementation MUST report support for feature android.hardware.audio.low_latency.
        </li>
        <li>The continuous round-trip audio latency, as defined in section 5.6 Audio Latency, MUST be 20 milliseconds or less and SHOULD be 10 milliseconds or less over at least one supported path.
        </li>
        <li>If the device includes a 4 conductor 3.5mm audio jack, the continuous round-trip audio latency MUST be 20 milliseconds or less over the audio jack path, and SHOULD be 10 milliseconds or less over at the audio jack path.
        </li>
        <li>The device implementation MUST include a USB port(s) supporting USB host mode and USB peripheral mode.
        </li>
        <li>The USB host mode MUST implement the USB audio class.
        </li>
        <li>If the device includes an HDMI port, the device implementation MUST support output in stereo and eight channels at 20-bit or 24-bit depth and 192 kHz without bit-depth loss or resampling.
        </li>
        <li>The device implementation MUST report support for feature android.software.midi.
        </li>
        <li>If the device includes a 4 conductor 3.5mm audio jack, the device implementation is STRONGLY RECOMMENDED to comply with section <a href="https://source.android.com/accessories/headset/specification.html#mobile_device_jack_specifications">Mobile device (jack) specifications</a> of the <a href="https://source.android.com/accessories/headset/specification.html">Wired Audio Headset Specification (v1.1)</a> .
        </li>
      </ul>
      <p>
        Latencies and USB audio requirements MUST be met using the <a href="https://developer.android.com/ndk/guides/audio/opensl-for-android.html">OpenSL ES</a> PCM buffer queue API.
      </p>
      <p>
        In addition, a device implementation that reports support for this feature SHOULD:
      </p>
      <ul>
        <li>Provide a sustainable level of CPU performance while audio is active.
        </li>
        <li>Minimize audio clock inaccuracy and drift relative to standard time.
        </li>
        <li>Minimize audio clock drift relative to the CPU <code>CLOCK_MONOTONIC</code> when both are active.
        </li>
        <li>Minimize audio latency over on-device transducers.
        </li>
        <li>Minimize audio latency over USB digital audio.
        </li>
        <li>Document audio latency measurements over all paths.
        </li>
        <li>Minimize jitter in audio buffer completion callback entry times, as this affects usable percentage of full CPU bandwidth by the callback.
        </li>
        <li>Provide zero audio underruns (output) or overruns (input) under normal use at reported latency.
        </li>
        <li>Provide zero inter-channel latency difference.
        </li>
        <li>Minimize MIDI mean latency over all transports.
        </li>
        <li>Minimize MIDI latency variability under load (jitter) over all transports.
        </li>
        <li>Provide accurate MIDI timestamps over all transports.
        </li>
        <li>Minimize audio signal noise over on-device transducers, including the period immediately after cold start.
        </li>
        <li>Provide zero audio clock difference between the input and output sides of corresponding end-points, when both are active. Examples of corresponding end-points include the on-device microphone and speaker, or the audio jack input and output.
        </li>
        <li>Handle audio buffer completion callbacks for the input and output sides of corresponding end-points on the same thread when both are active, and enter the output callback immediately after the return from the input callback. Or if it is not feasible to handle the callbacks on the same thread, then enter the output callback shortly after entering the input callback to permit the application to have a consistent timing of the input and output sides.
        </li>
        <li>Minimize the phase difference between HAL audio buffering for the input and output sides of corresponding end-points.
        </li>
        <li>Minimize touch latency.
        </li>
        <li>Minimize touch latency variability under load (jitter).
        </li>
      </ul>
      <h3 id="5_11_capture_for_unprocessed">
        5.11. Capture for Unprocessed
      </h3>
      <p>
        Starting from Android 7.0, a new recording source has been added. It can be accessed using the <code>android.media.MediaRecorder.AudioSource.UNPROCESSED</code> audio source. In OpenSL ES, it can be accessed with the record preset <code>SL_ANDROID_RECORDING_PRESET_UNPROCESSED</code> .
      </p>
      <p>
        A device MUST satisfy all of the following requirements to report support of the unprocessed audio source via the <code>android.media.AudioManager</code> property <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED">PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED</a> :
      </p>
      <ul>
        <li>
          <p>
            The device MUST exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±10dB from 100 Hz to 7000 Hz.
          </p>
        </li>
        <li>
          <p>
            The device MUST exhibit amplitude levels in the low frequency range: specifically from ±20 dB from 5 Hz to 100 Hz compared to the mid-frequency range.
          </p>
        </li>
        <li>
          <p>
            The device MUST exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 7000 Hz to 22 KHz compared to the mid-frequency range.
          </p>
        </li>
        <li>
          <p>
            Audio input sensitivity MUST be set such that a 1000 Hz sinusoidal tone source played at 94 dB Sound Pressure Level (SPL) yields a response with RMS of 520 for 16 bit-samples (or -36 dB Full Scale for floating point/double precision samples).
          </p>
        </li>
        <li>
          <p>
            SNR &gt; 60 dB (difference between 94 dB SPL and equivalent SPL of self noise, A-weighted).
          </p>
        </li>
        <li>
          <p>
            Total harmonic distortion MUST be less than 1% for 1 kHZ at 90 dB SPL input level at the microphone.
          </p>
        </li>
        <li>
          <p>
            The only signal processing allowed in the path is a level multiplier to bring the level to desired range. This level multiplier MUST NOT introduce delay or latency to the signal path.
          </p>
        </li>
        <li>
          <p>
            No other signal processing is allowed in the path, such as Automatic Gain Control, High Pass Filter, or Echo Cancellation. If any signal processing is present in the architecture for any reason, it MUST be disabled and effectively introduce zero delay or extra latency to the signal path.
          </p>
        </li>
      </ul>
      <p>
        All SPL measurements are made directly next to the microphone under test.
      </p>
      <p>
        For multiple microphone configurations, these requirements apply to each microphone.
      </p>
      <p>
        It is STRONGLY RECOMMENDED that a device satisfy as many of the requirements for the signal path for the unprocessed recording source; however, a device must satisfy <em>all</em> of these requirements, listed above, if it claims to support the unprocessed audio source.
      </p>
      <h2 id="6_developer_tools_and_options_compatibility">
        6. Developer Tools and Options Compatibility
      </h2>
      <h3 id="6_1_developer_tools">
        6.1. Developer Tools
      </h3>
      <p>
        Device implementations MUST support the Android Developer Tools provided in the Android SDK. Android compatible devices MUST be compatible with:
      </p>
      <ul>
        <li>
          <a href="http://developer.android.com/tools/help/adb.html"><strong>Android Debug Bridge (adb)</strong></a>
          <ul>
            <li>Device implementations MUST support all adb functions as documented in the Android SDK including <a href="https://source.android.com/devices/input/diagnostics.html">dumpsys</a> .
            </li>
            <li>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).
            </li>
            <li>Android includes support for secure adb. Secure adb enables adb on known authenticated hosts. Device implementations MUST support secure adb.
            </li>
          </ul>
        </li>
        <li>
          <a href="http://developer.android.com/tools/debugging/ddms.html"><strong>Dalvik Debug Monitor Service (ddms)</strong></a>
          <ul>
            <li>Device implementations MUST support all ddms features as documented in the Android SDK.
            </li>
            <li>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.
            </li>
          </ul>
        </li>
        <li>
          <a href="http://developer.android.com/tools/help/monkey.html"><strong>Monkey</strong></a> Device implementations MUST include the Monkey framework, and make it available for applications to use.
        </li>
        <li>
          <a href="http://developer.android.com/tools/help/systrace.html"><strong>SysTrace</strong></a>
          <ul>
            <li>Device implementations MUST support systrace tool as documented in the Android SDK. Systrace must be inactive by default, and there MUST be a user-accessible mechanism to turn on Systrace.
            </li>
            <li>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.)
            </li>
            <li>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 10 in both 32-bit and 64-bit versions.
            </li>
          </ul>
        </li>
      </ul>
      <h3 id="6_2_developer_options">
        6.2. Developer Options
      </h3>
      <p>
        Android includes support for developers to configure application development-related settings. Device implementations MUST honor the <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS">android.settings.APPLICATION_DEVELOPMENT_SETTINGS</a> intent to show application development-related settings 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> &gt; <strong>About Device</strong> &gt; <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>
      <div class="note">
        Android Automotive implementations MAY limit access to the Developer Options menu by visually hiding or disabling the menu when the vehicle is in motion.
      </div>
      <h2 id="7_hardware_compatibility">
        7. Hardware Compatibility
      </h2>
      <p>
        If a device includes a particular hardware component that has a corresponding API for third-party developers, the device implementation MUST implement that API as described in the Android SDK documentation. If an API in the SDK interacts with a hardware component that is stated to be optional and the device implementation does not possess that component:
      </p>
      <ul>
        <li>Complete class definitions (as documented by the SDK) for the component APIs MUST still be presented.
        </li>
        <li>The API’s behaviors MUST be implemented as no-ops in some reasonable fashion.
        </li>
        <li>API methods MUST return null values where permitted by the SDK documentation.
        </li>
        <li>API methods MUST return no-op implementations of classes where null values are not permitted by the SDK documentation.
        </li>
        <li>API methods MUST NOT throw exceptions not documented by the SDK documentation.
        </li>
      </ul>
      <p>
        A typical example of a scenario where these requirements apply is the telephony API: Even on non-phone devices, these APIs must be implemented as reasonable no-ops.
      </p>
      <p>
        Device implementations MUST consistently report accurate hardware configuration information via the getSystemAvailableFeatures() and hasSystemFeature(String) methods on the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class for the same build fingerprint.
      </p>
      <h3 id="7_1_display_and_graphics">
        7.1. Display and Graphics
      </h3>
      <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 <a href="http://developer.android.com/guide/practices/screens_support.html">variety of hardware configurations</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>
        <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>
        <li>
          <strong>aspect ratio</strong> . The ratio of the pixels of the longer dimension to the shorter dimension of the screen. For example, a display of 480x854 pixels would be 854/480 = 1.779, or roughly “16:9”.
        </li>
        <li>
          <strong>density-independent pixel (dp)</strong> . The virtual pixel unit normalized to a 160 dpi screen, calculated as: pixels = dps * (density/160).
        </li>
      </ul>
      <h4 id="7_1_1_screen_configuration">
        7.1.1. Screen Configuration
      </h4>
      <h5 id="7_1_1_1_screen_size">
        7.1.1.1. Screen Size
      </h5>
      <div class="note">
        Android Watch devices (detailed in <a href="#2_device_types">section 2</a> ) MAY have smaller screen sizes as described in this section.
      </div>
      <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 <a href="http://developer.android.com/guide/practices/screens_support.html">screen size</a> as defined in the Android SDK documentation 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>
        <li>Devices that report screen size ‘normal’ MUST have screen sizes of at least 480 dp x 320 dp.
        </li>
        <li>Devices that report screen size ‘large’ MUST have screen sizes of at least 640 dp x 480 dp.
        </li>
        <li>Devices that report screen size ‘xlarge’ MUST have screen sizes of at least 960 dp x 720 dp.
        </li>
      </ul>
      <p>
        In addition:
      </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>
        <li>Android Automotive devices MUST have a screen with the physical diagonal size greater than or equal to 6 inches.
        </li>
        <li>Android Automotive devices MUST have a screen size of at least 750 dp x 480 dp.
        </li>
        <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.
        </li>
      </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 &lt;supports-screens&gt; 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>
      <h5 id="7_1_1_2_screen_aspect_ratio">
        7.1.1.2. Screen Aspect Ratio
      </h5>
      <div class="note">
        Android Watch devices MAY have an aspect ratio of 1.0 (1:1).
      </div>
      <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>
      <h5 id="7_1_1_3_screen_density">
        7.1.1.3. Screen Density
      </h5>
      <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>
        <li>160 dpi (mdpi)
        </li>
        <li>213 dpi (tvdpi)
        </li>
        <li>240 dpi (hdpi)
        </li>
        <li>280 dpi (280dpi)
        </li>
        <li>320 dpi (xhdpi)
        </li>
        <li>360 dpi (360dpi)
        </li>
        <li>400 dpi (400dpi)
        </li>
        <li>420 dpi (420dpi)
        </li>
        <li>480 dpi (xxhdpi)
        </li>
        <li>560 dpi (560dpi)
        </li>
        <li>640 dpi (xxxhdpi)
        </li>
      </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>
      <p>
        Device implementations are STRONGLY RECOMMENDED to provide users a setting to change the display size. If there is an implementation to change the display size of the device, it MUST align with the AOSP implementation as indicated below:
      </p>
      <ul>
        <li>The display size MUST NOT be scaled any larger than 1.5 times the native density or produce an effective minimum screen dimension smaller than 320dp (equivalent to resource qualifier sw320dp), whichever comes first.
        </li>
        <li>Display size MUST NOT be scaled any smaller than 0.85 times the native density.
        </li>
        <li>To ensure good usability and consistent font sizes, it is RECOMMENDED that the following scaling of Native Display options be provided (while complying with the limits specified above)
        </li>
        <li>Small: 0.85x
        </li>
        <li>Default: 1x (Native display scale)
        </li>
        <li>Large: 1.15x
        </li>
        <li>Larger: 1.3x
        </li>
        <li>Largest 1.45x
        </li>
      </ul>
      <h4 id="7_1_2_display_metrics">
        7.1.2. Display Metrics
      </h4>
      <p>
        Device implementations MUST report correct values for all display metrics defined in <a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">android.util.DisplayMetrics</a> and MUST report the same values regardless of whether the embedded or external screen is used as the default display.
      </p>
      <h4 id="7_1_3_screen_orientation">
        7.1.3. Screen Orientation
      </h4>
      <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>
      <h4 id="7_1_4_2d_and_3d_graphics_acceleration">
        7.1.4. 2D and 3D Graphics Acceleration
      </h4>
      <p>
        Device implementations MUST support both OpenGL ES 1.0 and 2.0, as embodied and detailed in the Android SDK documentations. Device implementations SHOULD support OpenGL ES 3.0, 3.1, or 3.2 on devices capable of supporting it. Device implementations MUST also support <a href="http://developer.android.com/guide/topics/renderscript/">Android RenderScript</a> , as detailed in the Android SDK documentation.
      </p>
      <p>
        Device implementations MUST also correctly identify themselves as supporting OpenGL ES 1.0, OpenGL ES 2.0, OpenGL ES 3.0, OpenGL 3.1, or OpenGL 3.2. 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>
        <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>
        <li>Device implementations that declare support for OpenGL ES 3.0, 3.1, or 3.2 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, 3.1, or 3.2 libGLESv2.so MUST export the corresponding function symbols in addition to the OpenGL ES 2.0 function symbols.
        </li>
      </ul>
      <p>
        Android provides an OpenGL ES <a href="https://developer.android.com/reference/android/opengl/GLES31Ext.html">extension pack</a> with Java interfaces and native support for advanced graphics functionality such as tessellation and the ASTC texture compression format. Android device implementations MUST support the extension pack if the device supports OpenGL ES 3.2 and MAY support it otherwise. If the extension pack is supported in its entirety, the device MUST identify the support through the <code>android.hardware.opengles.aep</code> 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 <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">android:hardwareAccelerated</a> or direct API calls.
      </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 <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">hardware acceleration</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 <a href="https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt">EGL_ANDROID_RECORDABLE</a> extension.
      </p>
      <h4 id="7_1_5_legacy_application_compatibility_mode">
        7.1.5. Legacy Application Compatibility Mode
      </h4>
      <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.
      </p>
      <ul>
        <li>Android Automotive does not support legacy compatibility mode.
        </li>
        <li>All other 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.
        </li>
      </ul>
      <h4 id="7_1_6_screen_technology">
        7.1.6. Screen Technology
      </h4>
      <p>
        The Android platform includes APIs that allow applications to render rich graphics to the display. Devices MUST support all of these APIs as defined by the Android SDK unless specifically allowed in this document.
      </p>
      <ul>
        <li>Devices MUST support displays capable of rendering 16-bit color graphics and SHOULD support displays capable of 24-bit color graphics.
        </li>
        <li>Devices MUST support displays capable of rendering animations.
        </li>
        <li>The display technology used MUST have a pixel aspect ratio (PAR) between 0.9 and 1.15. That is, the pixel aspect ratio MUST be near square (1.0) with a 10 ~ 15% tolerance.
        </li>
      </ul>
      <h4 id="7_1_7_secondary_displays">
        7.1.7. Secondary Displays
      </h4>
      <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 <a href="http://developer.android.com/reference/android/hardware/display/DisplayManager.html">display manager API</a> as described in the Android SDK documentation.
      </p>
      <h3 id="7_2_input_devices">
        7.2. Input Devices
      </h3>
      <p>
        Devices MUST support a touchscreen or meet the requirements listed in 7.2.2 for non-touch navigation.
      </p>
      <h4 id="7_2_1_keyboard">
        7.2.1. Keyboard
      </h4>
      <div class="note">
        Android Watch and Android Automotive implementations MAY implement a soft keyboard. All other device implementations MUST implement a soft keyboard and:
      </div>
      <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>
        <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>
        <li>MAY include additional soft keyboard implementations.
        </li>
        <li>MAY include a hardware keyboard.
        </li>
        <li>MUST NOT include a hardware keyboard that does not match one of the formats specified in <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.keyboard</a> (QWERTY or 12-key).
        </li>
      </ul>
      <h4 id="7_2_2_non-touch_navigation">
        7.2.2. Non-touch Navigation
      </h4>
      <div class="note">
        Android Television devices MUST support D-pad.
      </div>
      <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>
        <li>MUST report the correct value for <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.navigation</a> .
        </li>
        <li>MUST provide a reasonable alternative user interface mechanism for the selection and editing of text, compatible with Input Management Engines. The upstream Android open source implementation includes a selection mechanism suitable for use with devices that lack non-touch navigation inputs.
        </li>
      </ul>
      <h4 id="7_2_3_navigation_keys">
        7.2.3. Navigation Keys
      </h4>
      <div class="note">
        The availability and visibility requirement of the Home, Recents, and Back functions differ between device types as described in this section.
      </div>
      <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>
        <li>Android Television device implementations MUST provide the Home and Back functions.
        </li>
        <li>Android Watch device implementations MUST have the Home function available to the user, and the Back function except for when it is in <code>UI_MODE_TYPE_WATCH</code> .
        </li>
        <li>Android Watch device implementations, and no other Android device types, MAY consume the long press event on the key event <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK"><code>KEYCODE_BACK</code></a> and omit it from being sent to the foreground application.
        </li>
        <li>Android Automotive implementations MUST provide the Home function and MAY provide Back and Recent functions.
        </li>
        <li>All other types of device implementations MUST provide the Home and Back functions.
        </li>
      </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 7.1 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 &gt; 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 7.1, this is RECOMMENDED.
        </li>
        <li>MUST NOT modify the position of the action overflow popup displayed by selecting the overflow button in the action bar.
        </li>
        <li>MAY render the action overflow popup at a modified position on the screen when it is displayed by selecting the physical menu button.
        </li>
      </ul>
      <p>
        For backwards compatibility, device implementations MUST make the Menu function available to applications when targetSdkVersion is less than 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 device implementations supporting the <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Assist action</a> and/or <a href="https://developer.android.com/reference/android/service/voice/VoiceInteractionService.html"><code>VoiceInteractionService</code></a> MUST be able to launch an assist app with a single interaction (e.g. tap, double-click, or gesture) when other navigation keys are visible. It is STRONGLY RECOMMENDED to use long press on home as this interaction. The designated interaction MUST launch the user-selected assist app, in other words the app that implements a VoiceInteractionService, or an activity handling the ACTION_ASSIST intent.
      </p>
      <p>
        Device implementations MAY use a distinct portion of the screen to display the navigation keys, but if so, MUST meet these requirements:
      </p>
      <ul>
        <li>Device implementation navigation keys MUST use a distinct portion of the screen, not available to applications, and MUST NOT obscure or otherwise interfere with the portion of the screen available to applications.
        </li>
        <li>Device implementations MUST make available a portion of the display to applications that meets the requirements defined in <a href="#7_1_1_screen_configuration">section 7.1.1</a> .
        </li>
        <li>Device implementations MUST display the navigation keys when applications do not specify a system UI mode, or specify SYSTEM_UI_FLAG_VISIBLE.
        </li>
        <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>
        <li>Device implementations MUST hide the navigation keys when applications specify SYSTEM_UI_FLAG_HIDE_NAVIGATION.
        </li>
      </ul>
      <h4 id="7_2_4_touchscreen_input">
        7.2.4. Touchscreen Input
      </h4>
      <div class="note">
        Android Handhelds and Watch Devices MUST support touchscreen input.
      </div>
      <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>
        <li>MUST report the value of <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.touchscreen</a> corresponding to the type of the specific touchscreen on the device.
        </li>
      </ul>
      <p>
        Android includes support for a variety of touchscreens, touch pads, and fake touch input devices. <a href="http://source.android.com/devices/tech/input/touch-devices.html">Touchscreen-based device implementations</a> are associated with a display 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="#7_2_5_fake_touch_input">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="#7_2_5_fake_touch_input">section 7.2.5</a> .
      </p>
      <h4 id="7_2_5_fake_touch_input">
        7.2.5. Fake Touch Input
      </h4>
      <p>
        Device implementations that declare support for android.hardware.faketouch:
      </p>
      <ul>
        <li>MUST report the <a href="http://developer.android.com/reference/android/view/MotionEvent.html">absolute X and Y screen positions</a> of the pointer location and display a visual pointer on the screen.
        </li>
        <li>MUST report touch event with the action code that specifies the state change that occurs on the pointer <a href="http://developer.android.com/reference/android/view/MotionEvent.html">going down or up on the screen</a> .
        </li>
        <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>
        <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 <a href="http://developer.android.com/reference/android/view/MotionEvent.html">emulate double tap</a> on an object on the screen.
        </li>
        <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>
        <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.
        </li>
      </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>
      <h4 id="7_2_6_game_controller_support">
        7.2.6. Game Controller Support
      </h4>
      <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>
      <h5 id="7_2_6_1_button_mappings">
        7.2.6.1. Button Mappings
      </h5>
      <p>
        Android Television device implementations MUST support the following key mappings:
      </p>
      <table>
        <tr>
          <th>
            Button
          </th>
          <th>
            HID Usage <sup>2</sup>
          </th>
          <th>
            Android Button
          </th>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_A">A</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0001
          </td>
          <td>
            KEYCODE_BUTTON_A (96)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_B">B</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0002
          </td>
          <td>
            KEYCODE_BUTTON_B (97)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_X">X</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0004
          </td>
          <td>
            KEYCODE_BUTTON_X (99)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_Y">Y</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0005
          </td>
          <td>
            KEYCODE_BUTTON_Y (100)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_UP">D-pad up</a> <sup>1</sup><br />
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_DOWN">D-pad down</a> <sup>1</sup>
          </td>
          <td>
            0x01 0x0039 <sup>3</sup>
          </td>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_Y">AXIS_HAT_Y</a> <sup>4</sup>
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_LEFT">D-pad left</a> 1<br />
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_RIGHT">D-pad right</a> <sup>1</sup>
          </td>
          <td>
            0x01 0x0039 <sup>3</sup>
          </td>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_X">AXIS_HAT_X</a> <sup>4</sup>
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_L1">Left shoulder button</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0007
          </td>
          <td>
            KEYCODE_BUTTON_L1 (102)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_R1">Right shoulder button</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x0008
          </td>
          <td>
            KEYCODE_BUTTON_R1 (103)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBL">Left stick click</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x000E
          </td>
          <td>
            KEYCODE_BUTTON_THUMBL (106)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBR">Right stick click</a> <sup>1</sup>
          </td>
          <td>
            0x09 0x000F
          </td>
          <td>
            KEYCODE_BUTTON_THUMBR (107)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME">Home</a> <sup>1</sup>
          </td>
          <td>
            0x0c 0x0223
          </td>
          <td>
            KEYCODE_HOME (3)
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">Back</a> <sup>1</sup>
          </td>
          <td>
            0x0c 0x0224
          </td>
          <td>
            KEYCODE_BACK (4)
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a>
      </p>
      <p class="table_footnote">
        2 The above HID usages must be declared within a Game pad CA (0x01 0x0005).
      </p>
      <p class="table_footnote">
        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 class="table_footnote">
        4 <a href="http://developer.android.com/reference/android/view/MotionEvent.html">MotionEvent</a>
      </p>
      <table>
        <tr>
          <th>
            Analog Controls <sup>1</sup>
          </th>
          <th>
            HID Usage
          </th>
          <th>
            Android Button
          </th>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_LTRIGGER">Left Trigger</a>
          </td>
          <td>
            0x02 0x00C5
          </td>
          <td>
            AXIS_LTRIGGER
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_THROTTLE">Right Trigger</a>
          </td>
          <td>
            0x02 0x00C4
          </td>
          <td>
            AXIS_RTRIGGER
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Y">Left Joystick</a>
          </td>
          <td>
            0x01 0x0030<br />
            0x01 0x0031
          </td>
          <td>
            AXIS_X<br />
            AXIS_Y
          </td>
        </tr>
        <tr>
          <td>
            <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Z">Right Joystick</a>
          </td>
          <td>
            0x01 0x0032<br />
            0x01 0x0035
          </td>
          <td>
            AXIS_Z<br />
            AXIS_RZ
          </td>
        </tr>
      </table>
      <p class="table_footnote">
        1 <a href="http://developer.android.com/reference/android/view/MotionEvent.html">MotionEvent</a>
      </p>
      <h4 id="7_2_7_remote_control">
        7.2.7. Remote Control
      </h4>
      <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>
        <li>
          <strong>Navigation</strong> . All Android Television remotes MUST include <a href="http://developer.android.com/reference/android/view/KeyEvent.html">Back, Home, and Select buttons and support for D-pad events</a> .
        </li>
      </ul>
      <h3 id="7_3_sensors">
        7.3. Sensors
      </h3>
      <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 <a href="http://source.android.com/devices/sensors/">sensors</a> . For example, device implementations:
      </p>
      <ul>
        <li>MUST accurately report the presence or absence of sensors per the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
        </li>
        <li>MUST return an accurate list of supported sensors via the SensorManager.getSensorList() and similar methods.
        </li>
        <li>MUST behave reasonably for all other sensor APIs (for example, by returning true or false as appropriate when applications attempt to register listeners, not calling sensor listeners when the corresponding sensors are not present; etc.).
        </li>
        <li>MUST <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">report all sensor measurements</a> using the relevant International System of Units (metric) values for each sensor type as defined in the Android SDK documentation.
        </li>
        <li>SHOULD <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp">report the event time</a> 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>STRONGLY RECOMMENDED</strong> to meet these requirements 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.
        </li>
        <li>MUST report sensor data with a maximum latency of 100 milliseconds + 2 * sample_time for the case of a sensor streamed with a minimum required latency of 5 ms + 2 * sample_time when the application processor is active. This delay does not include any filtering delays.
        </li>
        <li>MUST report the first sensor sample within 400 milliseconds + 2 * sample_time of the sensor being activated. It is acceptable for this sample to have an accuracy of 0.
        </li>
      </ul>
      <p>
        The list above is not comprehensive; the documented behavior of the Android SDK and the Android Open Source Documentations on <a href="http://source.android.com/devices/sensors/">sensors</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="https://source.android.com/devices/sensors/sensor-types.html">sensor types</a> . If a device implementation includes a composite sensor it MUST implement the sensor as described in the Android Open Source documentation on <a href="https://source.android.com/devices/sensors/sensor-types.html#composite_sensor_type_summary">composite sensors</a> .
      </p>
      <p>
        Some Android sensors support a <a href="https://source.android.com/devices/sensors/report-modes.html#continuous">“continuous” trigger mode</a> , which returns data continuously. 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>
      <h4 id="7_3_1_accelerometer">
        7.3.1. Accelerometer
      </h4>
      <p>
        Device implementations SHOULD include a 3-axis accelerometer. Android Handheld devices, Android Automotive implementations, and Android Watch devices are STRONGLY RECOMMENDED to include this sensor. If a device implementation does include a 3-axis accelerometer, it:
      </p>
      <ul>
        <li>MUST implement and report <a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">TYPE_ACCELEROMETER sensor</a> .
        </li>
        <li>MUST be able to report events up to a frequency of at least 50 Hz for Android Watch devices as such devices have a stricter power constraint and 100 Hz for all other device types.
        </li>
        <li>SHOULD report events up to at least 200 Hz.
        </li>
        <li>MUST comply with the <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate system</a> as detailed in the Android APIs. Android Automotive implementations MUST comply with the Android <a href="http://source.android.com/devices/sensors/sensor-types.html#auto_axes">car sensor coordinate system</a> .
        </li>
        <li>MUST be capable of measuring from freefall up to four times the gravity (4g) or more on any axis.
        </li>
        <li>MUST have a resolution of at least 12-bits and SHOULD have a resolution of at least 16-bits.
        </li>
        <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>
        <li>SHOULD be temperature compensated.
        </li>
        <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>
        <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>STRONGLY RECOMMENDED</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>
        <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 RECOMMENDED to implement the TYPE_GAME_ROTATION_VECTOR sensor.
        </li>
        <li>MUST implement a TYPE_ROTATION_VECTOR composite sensor, if a gyroscope sensor and a magnetometer sensor is also included.
        </li>
      </ul>
      <h4 id="7_3_2_magnetometer">
        7.3.2. Magnetometer
      </h4>
      <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 RECOMMENDED to implement the TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor.
        </li>
        <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>
        <li>MUST comply with the <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate system</a> as detailed in the Android APIs.
        </li>
        <li>MUST be capable of measuring between -900 µT and +900 µT on each axis before saturating.
        </li>
        <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>
        <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>
        <li>SHOULD be temperature compensated.
        </li>
        <li>MUST support online calibration and compensation of the hard iron bias, and preserve the compensation parameters between device reboots.
        </li>
        <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>
        <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>
        <li>MUST implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer sensor and a gyroscope sensor is also included.
        </li>
        <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.
        </li>
      </ul>
      <h4 id="7_3_3_gps">
        7.3.3. GPS
      </h4>
      <p>
        Device implementations SHOULD include a GPS/GNSS receiver. If a device implementation does include a GPS/GNSS receiver and reports the capability to applications through the <code>android.hardware.location.gps</code> feature flag:
      </p>
      <ul>
        <li>It is STRONGLY RECOMMENDED that the device continue to deliver normal GPS/GNSS outputs to applications during an emergency phone call and that location output not be blocked during an emergency phone call.
        </li>
        <li>It MUST support location outputs at a rate of at least 1 Hz when requested via <code>LocationManager#requestLocationUpdate</code> .
        </li>
        <li>It MUST be able to determine the location in open-sky conditions (strong signals, negligible multipath, HDOP &lt; 2) within 10 seconds (fast time to first fix), when connected to a 0.5 Mbps or faster data speed internet connection. This requirement is typically met by the use of some form of Assisted or Predicted GPS/GNSS technique to minimize GPS/GNSS lock-on time (Assistance data includes Reference Time, Reference Location and Satellite Ephemeris/Clock).
          <ul>
            <li>After making such a location calculation, it is STRONGLY RECOMMENDED for the device to be able to determine its location, in open sky, within 10 seconds, when location requests are restarted, up to an hour after the initial location calculation, even when the subsequent request is made without a data connection, and/or after a power cycle.
            </li>
          </ul>
        </li>
        <li>In open sky conditions after determining the location, while stationary or moving with less than 1 meter per second squared of acceleration:
          <ul>
            <li>It MUST be able to determine location within 20 meters, and speed within 0.5 meters per second, at least 95% of the time.
            </li>
            <li>It MUST simultaneously track and report via <a href="https://developer.android.com/reference/android/location/GnssStatus.Callback.html#GnssStatus.Callback()'">GnssStatus.Callback</a> at least 8 satellites from one constellation.
            </li>
            <li>It SHOULD be able to simultaneously track at least 24 satellites, from multiple constellations (e.g. GPS + at least one of Glonass, Beidou, Galileo).
            </li>
          </ul>
        </li>
        <li>It MUST report the GNSS technology generation through the test API ‘getGnssYearOfHardware’.
        </li>
        <li>It is STRONGLY RECOMMENDED to meet and MUST meet all requirements below if the GNSS technology generation is reported as the year "2016" or newer.
          <ul>
            <li>It MUST report GPS measurements, as soon as they are found, even if a location calculated from GPS/GNSS is not yet reported.
            </li>
            <li>It MUST report GPS pseudoranges and pseudorange rates, that, in open-sky conditions after determining the location, while stationary or moving with less than 0.2 meter per second squared of acceleration, are sufficient to calculate position within 20 meters, and speed within 0.2 meters per second, at least 95% of the time.
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Note that while some of the GPS requirements above are stated as STRONGLY RECOMMENDED, the Compatibility Definition for the next major version is expected to change these to a MUST.
      </p>
      <h4 id="7_3_4_gyroscope">
        7.3.4. Gyroscope
      </h4>
      <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 RECOMMENDED to implement the SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensor.
        </li>
        <li>MUST be capable of measuring orientation changes up to 1,000 degrees per second.
        </li>
        <li>MUST be able to report events up to a frequency of at least 50 Hz for Android Watch devices as such devices have a stricter power constraint and 100 Hz for all other device types.
        </li>
        <li>SHOULD report events up to at least 200 Hz.
        </li>
        <li>MUST have a resolution of 12-bits or more and SHOULD have a resolution of 16-bits or more.
        </li>
        <li>MUST be temperature compensated.
        </li>
        <li>MUST be calibrated and compensated while in use, and preserve the compensation parameters between device reboots.
        </li>
        <li>MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz, or rad^2 / s). The variance is allowed to vary with the sampling rate, but must be constrained by this value. In other words, if you measure the variance of the gyro at 1 Hz sampling rate it should be no greater than 1e-7 rad^2/s^2.
        </li>
        <li>MUST implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer sensor and a magnetometer sensor is also included.
        </li>
        <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 RECOMMENDED to implement the TYPE_GAME_ROTATION_VECTOR sensor.
        </li>
      </ul>
      <h4 id="7_3_5_barometer">
        7.3.5. Barometer
      </h4>
      <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>
        <li>MUST be able to deliver events at 5 Hz or greater.
        </li>
        <li>MUST have adequate precision to enable estimating altitude.
        </li>
        <li>MUST be temperature compensated.
        </li>
      </ul>
      <h4 id="7_3_6_thermometer">
        7.3.6. Thermometer
      </h4>
      <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>
      <div class="note">
        For Android Automotive implementations, SENSOR_TYPE_AMBIENT_TEMPERATURE MUST measure the temperature inside the vehicle cabin.
      </div>
      <h4 id="7_3_7_photometer">
        7.3.7. Photometer
      </h4>
      <p>
        Device implementations MAY include a photometer (ambient light sensor).
      </p>
      <h4 id="7_3_8_proximity_sensor">
        7.3.8. Proximity Sensor
      </h4>
      <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>
        <li>MUST have 1-bit of accuracy or more.
        </li>
      </ul>
      <h4 id="7_3_9_high_fidelity_sensors">
        7.3.9. High Fidelity Sensors
      </h4>
      <p>
        Device implementations supporting a set of higher quality sensors that can meet all the requirements listed in this section MUST identify the support through the <code>android.hardware.sensor.hifi_sensors</code> feature flag.
      </p>
      <p>
        A device declaring android.hardware.sensor.hifi_sensors MUST support all of the following sensor types meeting the quality requirements as below:
      </p>
      <ul>
        <li>SENSOR_TYPE_ACCELEROMETER
          <ul>
            <li>MUST have a measurement range between at least -8g and +8g.
            </li>
            <li>MUST have a measurement resolution of at least 1024 LSB/G.
            </li>
            <li>MUST have a minimum measurement frequency of 12.5 Hz or lower.
            </li>
            <li>MUST have a maximum measurement frequency of 400 Hz or higher.
            </li>
            <li>MUST have a measurement noise not above 400 uG/√Hz.
            </li>
            <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 3000 sensor events.
            </li>
            <li>MUST have a batching power consumption not worse than 3 mW.
            </li>
            <li>SHOULD have a stationary noise bias stability of \&lt;15 μg √Hz from 24hr static dataset.
            </li>
            <li>SHOULD have a bias change vs. temperature of ≤ +/- 1mg / °C.
            </li>
            <li>SHOULD have a best-fit line non-linearity of ≤ 0.5%, and sensitivity change vs. temperature of ≤ 0.03%/C°.
            </li>
          </ul>
        </li>
        <li>
          <p>
            SENSOR_TYPE_GYROSCOPE
          </p>
          <ul>
            <li>MUST have a measurement range between at least -1000 and +1000 dps.
            </li>
            <li>MUST have a measurement resolution of at least 16 LSB/dps.
            </li>
            <li>MUST have a minimum measurement frequency of 12.5 Hz or lower.
            </li>
            <li>MUST have a maximum measurement frequency of 400 Hz or higher.
            </li>
            <li>MUST have a measurement noise not above 0.014°/s/√Hz.
            </li>
            <li>SHOULD have a stationary bias stability of &lt; 0.0002 °/s √Hz from 24-hour static dataset.
            </li>
            <li>SHOULD have a bias change vs. temperature of ≤ +/- 0.05 °/ s / °C.
            </li>
            <li>SHOULD have a sensitivity change vs. temperature of ≤ 0.02% / °C.
            </li>
            <li>SHOULD have a best-fit line non-linearity of ≤ 0.2%.
            </li>
            <li>SHOULD have a noise density of ≤ 0.007 °/s/√Hz.
            </li>
          </ul>
        </li>
        <li>
          <p>
            SENSOR_TYPE_GYROSCOPE_UNCALIBRATED with the same quality requirements as SENSOR_TYPE_GYROSCOPE.
          </p>
        </li>
        <li>SENSOR_TYPE_GEOMAGNETIC_FIELD
          <ul>
            <li>MUST have a measurement range between at least -900 and +900 uT.
            </li>
            <li>MUST have a measurement resolution of at least 5 LSB/uT.
            </li>
            <li>MUST have a minimum measurement frequency of 5 Hz or lower.
            </li>
            <li>MUST have a maximum measurement frequency of 50 Hz or higher.
            </li>
            <li>MUST have a measurement noise not above 0.5 uT.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED with the same quality requirements as SENSOR_TYPE_GEOMAGNETIC_FIELD and in addition:
          <ul>
            <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 600 sensor events.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_PRESSURE
          <ul>
            <li>MUST have a measurement range between at least 300 and 1100 hPa.
            </li>
            <li>MUST have a measurement resolution of at least 80 LSB/hPa.
            </li>
            <li>MUST have a minimum measurement frequency of 1 Hz or lower.
            </li>
            <li>MUST have a maximum measurement frequency of 10 Hz or higher.
            </li>
            <li>MUST have a measurement noise not above 2 Pa/√Hz.
            </li>
            <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 300 sensor events.
            </li>
            <li>MUST have a batching power consumption not worse than 2 mW.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_GAME_ROTATION_VECTOR
          <ul>
            <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 300 sensor events.
            </li>
            <li>MUST have a batching power consumption not worse than 4 mW.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_SIGNIFICANT_MOTION
          <ul>
            <li>MUST have a power consumption not worse than 0.5 mW when device is static and 1.5 mW when device is moving.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_STEP_DETECTOR
          <ul>
            <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 100 sensor events.
            </li>
            <li>MUST have a power consumption not worse than 0.5 mW when device is static and 1.5 mW when device is moving.
            </li>
            <li>MUST have a batching power consumption not worse than 4 mW.
            </li>
          </ul>
        </li>
        <li>SENSOR_TYPE_STEP_COUNTER
          <ul>
            <li>MUST have a power consumption not worse than 0.5 mW when device is static and 1.5 mW when device is moving.
            </li>
          </ul>
        </li>
        <li>SENSOR_TILT_DETECTOR
          <ul>
            <li>MUST have a power consumption not worse than 0.5 mW when device is static and 1.5 mW when device is moving.
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Also such a device MUST meet the following sensor subsystem requirements:
      </p>
      <ul>
        <li>The event timestamp of the same physical event reported by the Accelerometer, Gyroscope sensor and Magnetometer MUST be within 2.5 milliseconds of each other.
        </li>
        <li>The Gyroscope sensor event timestamps MUST be on the same time base as the camera subsystem and within 1 milliseconds of error.
        </li>
        <li>High Fidelity sensors MUST deliver samples to applications within 5 milliseconds from the time when the data is available on the physical sensor to the application.
        </li>
        <li>The power consumption MUST not be higher than 0.5 mW when device is static and 2.0 mW when device is moving when any combination of the following sensors are enabled:
          <ul>
            <li>SENSOR_TYPE_SIGNIFICANT_MOTION
            </li>
            <li>SENSOR_TYPE_STEP_DETECTOR
            </li>
            <li>SENSOR_TYPE_STEP_COUNTER
            </li>
            <li>SENSOR_TILT_DETECTORS
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Note that all power consumption requirements in this section do not include the power consumption of the Application Processor. It is inclusive of the power drawn by the entire sensor chain—the sensor, any supporting circuitry, any dedicated sensor processing system, etc.
      </p>
      <p>
        The following sensor types MAY also be supported on a device implementation declaring android.hardware.sensor.hifi_sensors, but if these sensor types are present they MUST meet the following minimum buffering capability requirement:
      </p>
      <ul>
        <li>SENSOR_TYPE_PROXIMITY: 100 sensor events
        </li>
      </ul>
      <h4 id="7_3_10_fingerprint_sensor">
        7.3.10. Fingerprint Sensor
      </h4>
      <p>
        Device implementations with a secure lock screen SHOULD include a fingerprint sensor. If a device implementation includes a fingerprint sensor and has a corresponding API for third-party developers, it:
      </p>
      <ul>
        <li>MUST declare support for the android.hardware.fingerprint feature.
        </li>
        <li>MUST fully implement the <a href="https://developer.android.com/reference/android/hardware/fingerprint/package-summary.html">corresponding API</a> as described in the Android SDK documentation.
        </li>
        <li>MUST have a false acceptance rate not higher than 0.002%.
        </li>
        <li>Is STRONGLY RECOMMENDED to have a false rejection rate of less than 10%, as measured on the device
        </li>
        <li>Is STRONGLY RECOMMENDED to have a latency below 1 second, measured from when the fingerprint sensor is touched until the screen is unlocked, for one enrolled finger.
        </li>
        <li>MUST rate limit attempts for at least 30 seconds after five false trials for fingerprint verification.
        </li>
        <li>MUST have a hardware-backed keystore implementation, and perform the fingerprint matching in a Trusted Execution Environment (TEE) or on a chip with a secure channel to the TEE.
        </li>
        <li>MUST have all identifiable fingerprint data encrypted and cryptographically authenticated such that they cannot be acquired, read or altered outside of the Trusted Execution Environment (TEE) as documented in the <a href="https://source.android.com/devices/tech/security/authentication/fingerprint-hal.html">implementation guidelines</a> on the Android Open Source Project site.
        </li>
        <li>MUST prevent adding a fingerprint without first establishing a chain of trust by having the user confirm existing or add a new device credential (PIN/pattern/password) that's secured by TEE; the Android Open Source Project implementation provides the mechanism in the framework to do so.
        </li>
        <li>MUST NOT enable 3rd-party applications to distinguish between individual fingerprints.
        </li>
        <li>MUST honor the DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT flag.
        </li>
        <li>MUST, when upgraded from a version earlier than Android 6.0, have the fingerprint data securely migrated to meet the above requirements or removed.
        </li>
        <li>SHOULD use the Android Fingerprint icon provided in the Android Open Source Project.
        </li>
      </ul>
      <h4 id="7_3_11_android_automotive-only_sensors">
        7.3.11. Android Automotive-only sensors
      </h4>
      <p>
        Automotive-specific sensors are defined in the <code>android.car.CarSensorManager API</code> .
      </p>
      <h5 id="7_3_11_1_current_gear">
        7.3.11.1. Current Gear
      </h5>
      <p>
        Android Automotive implementations SHOULD provide current gear as SENSOR_TYPE_GEAR.
      </p>
      <h5 id="7_3_11_2_day_night_mode">
        7.3.11.2. Day Night Mode
      </h5>
      <p>
        Android Automotive implementations MUST support day/night mode defined as SENSOR_TYPE_NIGHT. The value of this flag MUST be consistent with dashboard day/night mode and SHOULD be based on ambient light sensor input. The underlying ambient light sensor MAY be the same as <a href="#7_3_7_photometer">Photometer</a> .
      </p>
      <h5 id="7_3_11_3_driving_status">
        7.3.11.3. Driving Status
      </h5>
      <p>
        Android Automotive implementations MUST support driving status defined as SENSOR_TYPE_DRIVING_STATUS, with a default value of DRIVE_STATUS_UNRESTRICTED when the vehicle is fully stopped and parked. It is the responsibility of device manufacturers to configure SENSOR_TYPE_DRIVING_STATUS in compliance with all laws and regulations that apply to markets where the product is shipping.
      </p>
      <h5 id="7_3_11_4_wheel_speed">
        7.3.11.4. Wheel Speed
      </h5>
      <p>
        Android Automotive implementations MUST provide vehicle speed defined as SENSOR_TYPE_CAR_SPEED.
      </p>
      <h3 id="7_3_12_pose_sensor">
        7.3.12. Pose Sensor
      </h3>
      <p>
        Device implementations MAY support pose sensor with 6 degrees of freedom. Android Handheld devices are RECOMMENDED to support this sensor. If a device implementation does support pose sensor with 6 degrees of freedom, it:
      </p>
      <ul>
        <li>MUST implement and report <a href="https://developer.android.com/reference/android/hardware/Sensor.html#TYPE_POSE_6DOF"><code>TYPE_POSE_6DOF</code></a> sensor.
        </li>
        <li>MUST be more accurate than the rotation vector alone.
        </li>
      </ul>
      <h3 id="7_4_data_connectivity">
        7.4. Data Connectivity
      </h3>
      <h4 id="7_4_1_telephony">
        7.4.1. Telephony
      </h4>
      <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>
      <h5 id="7_4_1_1_number_blocking_compatibility">
        7.4.1.1. Number Blocking Compatibility
      </h5>
      <p>
        Android Telephony device implementations MUST include number blocking support and:
      </p>
      <ul>
        <li>MUST fully implement <a href="http://developer.android.com/reference/android/provider/BlockedNumberContract.html">BlockedNumberContract</a> and the corresponding API as described in the SDK documentation.
        </li>
        <li>MUST block all calls and messages from a phone number in 'BlockedNumberProvider' without any interaction with apps. The only exception is when number blocking is temporarily lifted as described in the SDK documentation.
        </li>
        <li>MUST NOT write to the <a href="http://developer.android.com/reference/android/provider/CallLog.html">platform call log provider</a> for a blocked call.
        </li>
        <li>MUST NOT write to the <a href="http://developer.android.com/reference/android/provider/Telephony.html">Telephony provider</a> for a blocked message.
        </li>
        <li>MUST implement a blocked numbers management UI, which is opened with the intent returned by TelecomManager.createManageBlockedNumbersIntent() method.
        </li>
        <li>MUST NOT allow secondary users to view or edit the blocked numbers on the device as the Android platform assumes the primary user to have full control of the telephony services, a single instance, on the device. All blocking related UI MUST be hidden for secondary users and the blocked list MUST still be respected.
        </li>
        <li>SHOULD migrate the blocked numbers into the provider when a device updates to Android 7.0.
        </li>
      </ul>
      <h4 id="7_4_2_ieee_802_11_(wi-fi)">
        7.4.2. IEEE 802.11 (Wi-Fi)
      </h4>
      <p>
        All Android device implementations 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>
        <li>MUST implement the <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html">multicast API</a> as described in the SDK documentation.
        </li>
        <li>MUST support multicast DNS (mDNS) and MUST NOT filter mDNS packets (224.0.0.251) at any time of operation including:
          <ul>
            <li>Even when the screen is not in an active state.
            </li>
            <li>For Android Television device implementations, even when in standby power states.
            </li>
          </ul>
        </li>
      </ul>
      <h5 id="7_4_2_1_wi-fi_direct">
        7.4.2.1. Wi-Fi Direct
      </h5>
      <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 <a href="http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html">corresponding Android API</a> as described in the SDK documentation. 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>
        <li>MUST support regular Wi-Fi operation.
        </li>
        <li>SHOULD support concurrent Wi-Fi and Wi-Fi Direct operation.
        </li>
      </ul>
      <h5 id="7_4_2_2_wi-fi_tunneled_direct_link_setup">
        7.4.2.2. Wi-Fi Tunneled Direct Link Setup
      </h5>
      <p>
        Device implementations SHOULD include support for <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html">Wi-Fi Tunneled Direct Link Setup (TDLS)</a> as described in the Android SDK Documentation. 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>
        <li>SHOULD have some heuristic and NOT use TDLS when its performance might be worse than going through the Wi-Fi access point.
        </li>
      </ul>
      <h4 id="7_4_3_bluetooth">
        7.4.3. Bluetooth
      </h4>
      <div class="note">
        Android Watch implementations MUST support Bluetooth. Android Television implementations MUST support Bluetooth and Bluetooth LE. Android Automotive implementations MUST support Bluetooth and SHOULD support Bluetooth LE.
      </div>
      <p>
        Device implementations that support <code>android.hardware.vr.high_performance</code> feature MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension.
      </p>
      <p>
        Android includes support for <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">Bluetooth and Bluetooth Low Energy</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.
      </p>
      <p>
        Android Automotive implementations SHOULD support Message Access Profile (MAP). Android Automotive implementations MUST support the following Bluetooth profiles:
      </p>
      <ul>
        <li>Phone calling over Hands-Free Profile (HFP).
        </li>
        <li>Media playback over Audio Distribution Profile (A2DP).
        </li>
        <li>Media playback control over Remote Control Profile (AVRCP).
        </li>
        <li>Contact sharing using the Phone Book Access Profile (PBAP).
        </li>
      </ul>
      <p>
        Device implementations including support for Bluetooth Low Energy:
      </p>
      <ul>
        <li>MUST declare the hardware feature android.hardware.bluetooth_le.
        </li>
        <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">android.bluetooth</a> .
        </li>
        <li>are STRONGLY RECOMMENDED to implement a Resolvable Private Address (RPA) timeout no longer than 15 minutes and rotate the address at timeout to protect user privacy.
        </li>
        <li>SHOULD support offloading of the filtering logic to the bluetooth chipset when implementing the <a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">ScanFilter API</a> , and MUST report the correct value of where the filtering logic is implemented whenever queried via the android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported() method.
        </li>
        <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.BluetoothAdapter.isOffloadedScanBatchingSupported() method.
        </li>
        <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.
        </li>
      </ul>
      <h4 id="7_4_4_near-field_communications">
        7.4.4. Near-Field Communications
      </h4>
      <p>
        Device implementations SHOULD include a transceiver and related hardware for Near-Field Communications (NFC). If a device implementation does include NFC hardware and plans to make it available to third-party apps, then it:
      </p>
      <ul>
        <li>MUST report the android.hardware.nfc feature from the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature() method</a> .
        </li>
        <li>MUST be capable of reading and writing NDEF messages via the following NFC standards:
          <ul>
            <li>MUST be capable of acting as an NFC Forum reader/writer (as defined by the NFC Forum technical specification NFCForum-TS-DigitalProtocol-1.0) via the following NFC standards:
              <ul>
                <li>NfcA (ISO14443-3A)
                </li>
                <li>NfcB (ISO14443-3B)
                </li>
                <li>NfcF (JIS X 6319-4)
                </li>
                <li>IsoDep (ISO 14443-4)
                </li>
                <li>NFC Forum Tag Types 1, 2, 3, 4 (defined by the NFC Forum)
                </li>
              </ul>
            </li>
            <li>STRONGLY RECOMMENDED to be capable of reading and writing NDEF messages as well as raw data via the following NFC standards. Note that while the NFC standards below are stated as STRONGLY RECOMMENDED, 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 very strongly encouraged to meet these requirements now so they will be able to upgrade to the future platform releases.
              <ul>
                <li>NfcV (ISO 15693)
                </li>
              </ul>
            </li>
            <li>SHOULD be capable of reading the barcode and URL (if encoded) of <a href="http://developer.android.com/reference/android/nfc/tech/NfcBarcode.html">Thinfilm NFC Barcode</a> products.
            </li>
            <li>MUST be capable of transmitting and receiving data via the following peer-to-peer standards and protocols:
              <ul>
                <li>ISO 18092
                </li>
                <li>LLCP 1.2 (defined by the NFC Forum)
                </li>
                <li>SDP 1.0 (defined by the NFC Forum)
                </li>
                <li>
                  <a href="http://static.googleusercontent.com/media/source.android.com/en/us/compatibility/ndef-push-protocol.pdf">NDEF Push Protocol</a>
                </li>
                <li>SNEP 1.0 (defined by the NFC Forum)
                </li>
              </ul>
            </li>
            <li>MUST include support for <a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">Android Beam</a> .
            </li>
            <li>MUST implement the SNEP default server. Valid NDEF messages received by the default SNEP server MUST be dispatched to applications using the android.nfc.ACTION_NDEF_DISCOVERED intent. Disabling Android Beam in settings MUST NOT disable dispatch of incoming NDEF message.
            </li>
            <li>MUST honor the android.settings.NFCSHARING_SETTINGS intent to show <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS">NFC sharing settings</a> .
            </li>
            <li>MUST implement the NPP server. Messages received by the NPP server MUST be processed the same way as the SNEP default server.
            </li>
            <li>MUST implement a SNEP client and attempt to send outbound P2P NDEF to the default SNEP server when Android Beam is enabled. If no default SNEP server is found then the client MUST attempt to send to an NPP server.
            </li>
            <li>MUST allow foreground activities to set the outbound P2P NDEF message using android.nfc.NfcAdapter.setNdefPushMessage, and android.nfc.NfcAdapter.setNdefPushMessageCallback, and android.nfc.NfcAdapter.enableForegroundNdefPush.
            </li>
            <li>SHOULD use a gesture or on-screen confirmation, such as 'Touch to Beam', before sending outbound P2P NDEF messages.
            </li>
            <li>SHOULD enable Android Beam by default and MUST be able to send and receive using Android Beam, even when another proprietary NFC P2p mode is turned on.
            </li>
            <li>MUST support NFC Connection handover to Bluetooth when the device supports Bluetooth Object Push Profile. Device implementations MUST support connection handover to Bluetooth when using android.nfc.NfcAdapter.setBeamPushUris, by implementing the “ <a href="http://members.nfc-forum.org/specs/spec_list/#conn_handover">Connection Handover version 1.2</a> ” and “ <a href="http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf">Bluetooth Secure Simple Pairing Using NFC version 1.0</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.
            </li>
            <li>MUST poll for all supported technologies while in NFC discovery mode.
            </li>
            <li>SHOULD be in NFC discovery mode while the device is awake with the screen active and the lock-screen unlocked.
            </li>
          </ul>
        </li>
      </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 chipset capable of HCE (for NfcA and/or NfcB) and it supports Application ID (AID) routing, then it:
      </p>
      <ul>
        <li>MUST report the android.hardware.nfc.hce feature constant.
        </li>
        <li>MUST support <a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">NFC HCE APIs</a> as defined in the Android SDK.
        </li>
      </ul>
      <p>
        If a device implementation does include an NFC controller chipset capable of HCE for NfcF, and it implements the feature for third-party applications, then it:
      </p>
      <ul>
        <li>MUST report the android.hardware.nfc.hcef feature constant.
        </li>
        <li>MUST implement the [NfcF Card Emulation APIs] (https://developer.android.com/reference/android/nfc/cardemulation/NfcFCardEmulation.html) as defined in the Android SDK.
        </li>
      </ul>
      <p>
        Additionally, device implementations MAY include reader/writer support for the following MIFARE technologies.
      </p>
      <ul>
        <li>MIFARE Classic
        </li>
        <li>MIFARE Ultralight
        </li>
        <li>NDEF on MIFARE Classic
        </li>
      </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>
        <li>MUST report the feature com.nxp.mifare from the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature()</a> method. Note that this is not a standard Android feature and as such does not appear as a constant in the android.content.pm.PackageManager class.
        </li>
        <li>MUST NOT implement the corresponding Android APIs nor report the com.nxp.mifare feature unless it also implements general NFC support as described in this section.
        </li>
      </ul>
      <p>
        If a device implementation does not include NFC hardware, it MUST NOT declare the android.hardware.nfc feature from the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature()</a> method, 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>
      <h4 id="7_4_5_minimum_network_capability">
        7.4.5. Minimum Network Capability
      </h4>
      <p>
        Device implementations MUST include support for one or more forms of data networking. Specifically, device implementations MUST include support for at least one data standard capable of 200Kbit/sec or greater. Examples of technologies that satisfy this requirement include EDGE, HSPA, EV-DO, 802.11g, Ethernet, 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>
      <p>
        Devices MUST include an IPv6 networking stack and support IPv6 communication using the managed APIs, such as <code>java.net.Socket</code> and <code>java.net.URLConnection</code> , as well as the native APIs, such as <code>AF_INET6</code> sockets. The required level of IPv6 support depends on the network type, as follows:
      </p>
      <ul>
        <li>Devices that support Wi-Fi networks MUST support dual-stack and IPv6-only operation on Wi-Fi.
        </li>
        <li>Devices that support Ethernet networks MUST support dual-stack operation on Ethernet.
        </li>
        <li>Devices that support cellular data SHOULD support IPv6 operation (IPv6-only and possibly dual-stack) on cellular data.
        </li>
        <li>When a device is simultaneously connected to more than one network (e.g., Wi-Fi and cellular data), it MUST simultaneously meet these requirements on each network to which it is connected.
        </li>
      </ul>
      <p>
        IPv6 MUST be enabled by default.
      </p>
      <p>
        In order to ensure that IPv6 communication is as reliable as IPv4, unicast IPv6 packets sent to the device MUST NOT be dropped, even when the screen is not in an active state. Redundant multicast IPv6 packets, such as repeated identical Router Advertisements, MAY be rate-limited in hardware or firmware if doing so is necessary to save power. In such cases, rate-limiting MUST NOT cause the device to lose IPv6 connectivity on any IPv6-compliant network that uses RA lifetimes of at least 180 seconds.
      </p>
      <p>
        IPv6 connectivity MUST be maintained in doze mode.
      </p>
      <h4 id="7_4_6_sync_settings">
        7.4.6. Sync Settings
      </h4>
      <p>
        Device implementations MUST have the master auto-sync setting on by default so that the method <a href="http://developer.android.com/reference/android/content/ContentResolver.html">getMasterSyncAutomatically()</a> returns “true”.
      </p>
      <h4 id="7_4_7_data_saver">
        7.4.7. Data Saver
      </h4>
      <p>
        Device implementations with a metered connection are STRONGLY RECOMMENDED to provide the data saver mode.
      </p>
      <p>
        If a device implementation provides the data saver mode, it:
      </p>
      <ul>
        <li>
          <p>
            MUST support all the APIs in the <code>ConnectivityManager</code> class as described in the <a href="https://developer.android.com/training/basics/network-ops/data-saver.html">SDK documentation</a>
          </p>
        </li>
        <li>
          <p>
            MUST provide a user interface in the settings, allowing users to add applications to or remove applications from the whitelist.
          </p>
        </li>
      </ul>
      <p>
        Conversely if a device implementation does not provide the data saver mode, it:
      </p>
      <ul>
        <li>
          <p>
            MUST return the value <code>RESTRICT_BACKGROUND_STATUS_DISABLED</code> for <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#getRestrictBackgroundStatus%28%29"><code>ConnectivityManager.getRestrictBackgroundStatus()</code></a>
          </p>
        </li>
        <li>
          <p>
            MUST not broadcast <code>ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED</code>
          </p>
        </li>
        <li>
          <p>
            MUST have an activity that handles the <code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code> intent but MAY implement it as a no-op.
          </p>
        </li>
      </ul>
      <h3 id="7_5_cameras">
        7.5. Cameras
      </h3>
      <p>
        Device implementations SHOULD include a rear-facing camera and MAY include a front-facing camera. A rear-facing camera is a camera located on the side of the device opposite the display; that is, it images scenes on the far side of the device, like a traditional camera. A front-facing camera is a camera located on the same side of the device as the display; that is, a camera typically used to image the user, such as for video conferencing and similar applications.
      </p>
      <p>
        If a device implementation includes at least one camera, it MUST be possible for an application to simultaneously allocate 3 RGBA_8888 bitmaps equal to the size of the images produced by the largest-resolution camera sensor on the device, while camera is open for the purpose of basic preview and still capture.
      </p>
      <h4 id="7_5_1_rear-facing_camera">
        7.5.1. Rear-Facing Camera
      </h4>
      <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>
        <li>MUST have a resolution of at least 2 megapixels.
        </li>
        <li>SHOULD have either hardware auto-focus or software auto-focus implemented in the camera driver (transparent to application software).
        </li>
        <li>MAY have fixed-focus or EDOF (extended depth of field) hardware.
        </li>
        <li>MAY include a flash. If the Camera includes a flash, the flash lamp MUST NOT be lit while an android.hardware.Camera.PreviewCallback instance has been registered on a Camera preview surface, unless the application has explicitly enabled the flash by enabling the 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.
        </li>
      </ul>
      <h4 id="7_5_2_front-facing_camera">
        7.5.2. Front-Facing Camera
      </h4>
      <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>
        <li>MUST have a resolution of at least VGA (640x480 pixels).
        </li>
        <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>
        <li>MAY include features (such as auto-focus, flash, etc.) available to rear-facing cameras as described in <a href="#7_5_1_rear-facing_camera">section 7.5.1</a> .
        </li>
        <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>
            <li>If the current application has explicitly requested that the Camera display be rotated via a call to the <a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)">android.hardware.Camera.setDisplayOrientation()</a> method, the camera preview MUST be mirrored horizontally relative to the orientation specified by the application.
            </li>
            <li>Otherwise, the preview MUST be mirrored along the device’s default horizontal axis.
            </li>
          </ul>
        </li>
        <li>MUST mirror the image displayed by the postview in the same manner as the camera preview image stream. If the device implementation does not support postview, this requirement obviously does not apply.
        </li>
        <li>MUST NOT mirror the final captured still image or video streams returned to application callbacks or committed to media storage.
        </li>
      </ul>
      <h4 id="7_5_3_external_camera">
        7.5.3. External Camera
      </h4>
      <p>
        Device implementations MAY include support for an external camera that is not necessarily always connected. If a device includes support for an external camera, it:
      </p>
      <ul>
        <li>MUST declare the platform feature flag <code>android.hardware.camera.external</code> and <code>android.hardware camera.any</code> .
        </li>
        <li>MAY support multiple cameras.
        </li>
        <li>MUST support USB Video Class (UVC 1.0 or higher) if the external camera connects through the USB port.
        </li>
        <li>SHOULD support video compressions such as MJPEG to enable transfer of high-quality unencoded streams (i.e. raw or independently compressed picture streams).
        </li>
        <li>MAY support camera-based video encoding. If supported, a simultaneous unencoded / MJPEG stream (QVGA or greater resolution) MUST be accessible to the device implementation.
        </li>
      </ul>
      <h4 id="7_5_4_camera_api_behavior">
        7.5.4. Camera API Behavior
      </h4>
      <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>
        <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>
        <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>
        <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.
        </li>
      </ul>
      <p>
        Device implementations MUST still implement the full <a href="http://developer.android.com/reference/android/hardware/Camera.html">Camera API</a> included in the Android SDK documentation, 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 <a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">android.hardware.Camera.Parameters</a> 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.
      </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 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">android.info.supportedHardwareLevel</a> property as described in the Android SDK and report the appropriate <a href="http://source.android.com/devices/camera/versioning.html">framework feature flags</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 <a href="http://source.android.com/devices/camera/versioning.html">feature flags</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>
      <h4 id="7_5_5_camera_orientation">
        7.5.5. Camera Orientation
      </h4>
      <p>
        Both front- and rear-facing cameras, if present, MUST be oriented so that the long dimension of the camera aligns with the screen’s long 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>
      <h3 id="7_6_memory_and_storage">
        7.6. Memory and Storage
      </h3>
      <h4 id="7_6_1_minimum_memory_and_storage">
        7.6.1. Minimum Memory and Storage
      </h4>
      <div class="note">
        Android Television devices MUST have at least 4GB of non-volatile storage available for application private data.
      </div>
      <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="#7_1_1_screen_configuration">section 7.1.1</a> for screen size and density definitions.)
      </p>
      <table>
        <tr>
          <th>
            Density and screen size
          </th>
          <th>
            32-bit device
          </th>
          <th>
            64-bit device
          </th>
        </tr>
        <tr>
          <td>
            Android Watch devices (due to smaller screens)
          </td>
          <td>
            416MB
          </td>
          <td>
            Not applicable
          </td>
        </tr>
        <tr>
          <td>
            <ul>
              <li class="table_list">280dpi or lower on small/normal screens
              </li>
              <li class="table_list">mdpi or lower on large screens
              </li>
              <li class="table_list">ldpi or lower on extra large screens
              </li>
            </ul>
          </td>
          <td>
            512MB
          </td>
          <td>
            816MB
          </td>
        </tr>
        <tr>
          <td>
            <ul>
              <li class="table_list">xhdpi or higher on small/normal screens
              </li>
              <li class="table_list">hdpi or higher on large screens
              </li>
              <li class="table_list">mdpi or higher on extra large screens
              </li>
            </ul>
          </td>
          <td>
            608MB
          </td>
          <td>
            944MB
          </td>
        </tr>
        <tr>
          <td>
            <ul>
              <li class="table_list">400dpi or higher on small/normal screens
              </li>
              <li class="table_list">xhdpi or higher on large screens
              </li>
              <li class="table_list">tvdpi or higher on extra large screens
              </li>
            </ul>
          </td>
          <td>
            896MB
          </td>
          <td>
            1280MB
          </td>
        </tr>
        <tr>
          <td>
            <ul>
              <li class="table_list">560dpi or higher on small/normal screens
              </li>
              <li class="table_list">400dpi or higher on large screens
              </li>
              <li class="table_list">xhdpi or higher on extra large screens
              </li>
            </ul>
          </td>
          <td>
            1344MB
          </td>
          <td>
            1824MB
          </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>
        Device implementations with less than 512MB of memory available to the kernel and userspace, unless an Android Watch, MUST return the value "true" for ActivityManager.isLowRamDevice().
      </p>
      <p>
        Android Television devices MUST have at least 4GB and other device implementations MUST have at least 3GB of non-volatile storage available for application private data. That is, the /data partition MUST be at least 4GB for Android Television devices and at least 3GB for other device implementations. Device implementations that run Android are <strong>STRONGLY RECOMMENDED</strong> to have at least 4GB 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 <a href="http://developer.android.com/reference/android/app/DownloadManager.html">Download Manager</a> that applications MAY use to download data files. 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>
      <h4 id="7_6_2_application_shared_storage">
        7.6.2. Application Shared Storage
      </h4>
      <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 Linuxpath /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>
        <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>
        <li>MUST mount the SD card by default.
        </li>
      </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, while that storage MAY share space with the application private data, it MUST be at least 1GB in size 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 allow only pre-installed &amp; privileged Android applications with the WRITE_EXTERNAL_STORAGE permission to write to the secondary external storage, except when writing to their package-specific directories or within the <code>URI</code> returned by firing the <code>ACTION_OPEN_DOCUMENT_TREE</code> intent.
      </p>
      <p>
        However, device implementations 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, if the device implementation has a USB port with USB peripheral mode support, it MUST provide some mechanism to access the contents of shared storage from a host computer. Device implementations MAY use USB mass storage, but SHOULD use Media Transfer Protocol to satisfy this requirement. If the device implementation supports Media Transfer Protocol, it:
      </p>
      <ul>
        <li>SHOULD be compatible with the reference Android MTP host, <a href="http://www.android.com/filetransfer">Android File Transfer</a> .
        </li>
        <li>SHOULD report a USB device class of 0x00.
        </li>
        <li>SHOULD report a USB interface name of 'MTP'.
        </li>
      </ul>
      <h4 id="7_6_3_adoptable_storage">
        7.6.3. Adoptable Storage
      </h4>
      <p>
        Device implementations are STRONGLY RECOMMENDED to implement <a href="http://source.android.com/devices/storage/adoptable.html">adoptable storage</a> if the removable storage device port is in a long-term stable location, such as within the battery compartment or other protective cover.
      </p>
      <p>
        Device implementations such as a television, MAY enable adoption through USB ports as the device is expected to be static and not mobile. But for other device implementations that are mobile in nature, it is STRONGLY RECOMMENDED to implement the adoptable storage in a long-term stable location, since accidentally disconnecting them can cause data loss/corruption.
      </p>
      <h3 id="7_7_usb">
        7.7. USB
      </h3>
      <p>
        Device implementations SHOULD support USB peripheral mode and SHOULD support USB host mode.
      </p>
      <h4 id="7_7_1_usb_peripheral_mode">
        7.7.1. USB peripheral mode
      </h4>
      <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>
        <li>The port SHOULD use micro-B, micro-AB or Type-C USB form factor. Existing and new Android devices are <strong>STRONGLY RECOMMENDED to meet these requirements</strong> so they will be able to upgrade to the future platform releases.
        </li>
        <li>The port SHOULD be located 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>STRONGLY RECOMMENDED to meet these requirements</strong> so they will be able to upgrade to future platform releases.
        </li>
        <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.
        </li>
        <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 <a href="http://developer.android.com/guide/topics/connectivity/usb/accessory.html">android.hardware.usb.accessory</a> .
            </li>
            <li>MUST implement the <a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">USB audio class</a> as documented in the Android SDK documentation.
            </li>
            <li>The USB mass storage class MUST include the string "android" at the end of the interface description <code>iInterface</code> string of the USB mass storage
            </li>
          </ul>
        </li>
        <li>It SHOULD implement support to draw 1.5 A current during HS chirp and traffic as specified in the <a href="http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip">USB Battery Charging specification, revision 1.2</a> . Existing and new Android devices are <strong>STRONGLY RECOMMENDED to meet these requirements</strong> so they will be able to upgrade to the future platform releases.
        </li>
        <li>Type-C devices MUST detect 1.5A and 3.0A chargers per the Type-C resistor standard and it must detect changes in the advertisement.
        </li>
        <li>Type-C devices also supporting USB host mode are STRONGLY RECOMMENDED to support Power Delivery for data and power role swapping.
        </li>
        <li>Type-C devices SHOULD support Power Delivery for high-voltage charging and support for Alternate Modes such as display out.
        </li>
        <li>The value of iSerialNumber in USB standard device descriptor MUST be equal to the value of android.os.Build.SERIAL.
        </li>
        <li>Type-C devices are STRONGLY RECOMMENDED to not support proprietary charging methods that modify Vbus voltage beyond default levels, or alter sink/source roles as such may result in interoperability issues with the chargers or devices that support the standard USB Power Delivery methods. While this is called out as "STRONGLY RECOMMENDED", in future Android versions we might REQUIRE all type-C devices to support full interoperability with standard type-C chargers.
        </li>
      </ul>
      <h4 id="7_7_2_usb_host_mode">
        7.7.2. USB host mode
      </h4>
      <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>
        <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>
        <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>
        <li>is <strong>STRONGLY RECOMMENDED</strong> to implement the <a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">USB audio class</a> as documented in the Android SDK documentation.
        </li>
        <li>MUST implement the Android USB host API as documented in the Android SDK, and MUST declare support for the hardware feature <a href="http://developer.android.com/guide/topics/connectivity/usb/host.html">android.hardware.usb.host</a> .
        </li>
        <li>SHOULD support the Charging Downstream Port output current range of 1.5 A ~ 5 A as specified in the <a href="http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip">USB Battery Charging specifications, revision 1.2</a> .
        </li>
        <li>USB Type-C devices are STRONGLY RECOMMENDED to support DisplayPort, SHOULD support USB SuperSpeed Data Rates, and are STRONGLY RECOMMENDED to support Power Delivery for data and power role swapping.
        </li>
        <li>Devices with any type-A or type-AB ports MUST NOT ship with an adapter converting from this port to a type-C receptacle.
        </li>
        <li>MUST recognize any remotely connected MTP (Media Transfer Protocol) devices and make their contents accessible through the <code>ACTION_GET_CONTENT</code> , <code>ACTION_OPEN_DOCUMENT</code> , and <code>ACTION_CREATE_DOCUMENT</code> intents, if the Storage Access Framework (SAF) is supported.
        </li>
        <li>MUST, if using a Type-C USB port and including support for peripheral mode, implement Dual Role Port functionality as defined by the USB Type-C specification (section 4.5.1.3.3).
        </li>
        <li>SHOULD, if the Dual Role Port functionality is supported, implement the Try.* model that is most appropriate for the device form factor. For example a handheld device SHOULD implement the Try.SNK model.
        </li>
      </ul>
      <h3 id="7_8_audio">
        7.8. Audio
      </h3>
      <h4 id="7_8_1_microphone">
        7.8.1. Microphone
      </h4>
      <div class="note">
        Android Handheld, Watch, and Automotive implementations MUST include a microphone.
      </div>
      <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="#7_hardware_compatibility">section 7</a> . Conversely, device implementations that do possess a microphone:
      </p>
      <ul>
        <li>MUST report the android.hardware.microphone feature constant.
        </li>
        <li>MUST meet the audio recording requirements in <a href="#5_4_audio_recording">section 5.4</a> .
        </li>
        <li>MUST meet the audio latency requirements in <a href="#5_6_audio_latency">section 5.6</a> .
        </li>
        <li>STRONGLY RECOMMENDED to support near-ultrasound recording as described in <a href="#7_8_3_near_ultrasound">section 7.8.3</a> .
        </li>
      </ul>
      <h4 id="7_8_2_audio_output">
        7.8.2. Audio Output
      </h4>
      <div class="note">
        Android Watch devices MAY include an audio output.
      </div>
      <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>
        <li>MUST meet the audio playback requirements in <a href="#5_5_audio_playback">section 5.5</a> .
        </li>
        <li>MUST meet the audio latency requirements in <a href="#5_6_audio_latency">section 5.6</a> .
        </li>
        <li>STRONGLY RECOMMENDED to support near-ultrasound playback as described in <a href="#7_8_3_near_ultrasound">section 7.8.3</a> .
        </li>
      </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>
      <h5 id="7_8_2_1_analog_audio_ports">
        7.8.2.1. Analog Audio Ports
      </h5>
      <p>
        In order to be compatible with the <a href="http://source.android.com/accessories/headset-spec.html">headsets and other audio accessories</a> using the 3.5mm audio plug across the Android ecosystem, 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>
        <li>MUST support TRRS audio plugs with the CTIA pin-out order, and SHOULD support audio plugs with the OMTP pin-out order.
        </li>
        <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>
        <li>MUST 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>
            <li>
              <strong>210-290 Ohm</strong> : KEYCODE_VOLUME_UP
            </li>
            <li>
              <strong>360-680 Ohm</strong> : KEYCODE_VOLUME_DOWN
            </li>
          </ul>
        </li>
        <li>STRONGLY RECOMMENDED to detect and map 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
            </li>
          </ul>
        </li>
        <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>
        <li>MUST be capable of driving at least 150mV ± 10% of output voltage on a 32 Ohm speaker impedance.
        </li>
        <li>MUST have a microphone bias voltage between 1.8V ~ 2.9V.
        </li>
      </ul>
      <h4 id="7_8_3_near-ultrasound">
        7.8.3. Near-Ultrasound
      </h4>
      <p>
        Near-Ultrasound audio is the 18.5 kHz to 20 kHz band. Device implementations MUST correctly report the support of near-ultrasound audio capability via the <a href="http://developer.android.com/reference/android/media/AudioManager.html#getProperty%28java.lang.String%29">AudioManager.getProperty</a> API as follows:
      </p>
      <ul>
        <li>If <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND">PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND</a> is "true", then the following requirements must be met by the VOICE_RECOGNITION and UNPROCESSED audio sources:
          <ul>
            <li>The microphone's mean power response in the 18.5 kHz to 20 kHz band MUST be no more than 15 dB below the response at 2 kHz.
            </li>
            <li>The microphone's unweighted signal to noise ratio over 18.5 kHz to 20 kHz for a 19 kHz tone at -26 dBFS MUST be no lower than 50 dB.
            </li>
          </ul>
        </li>
        <li>If <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND">PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND</a> is "true", then the speaker's mean response in 18.5 kHz - 20 kHz MUST be no lower than 40 dB below the response at 2 kHz.
        </li>
      </ul>
      <h3 id="7_9_virtual_reality">
        7.9. Virtual Reality
      </h3>
      <p>
        Android includes APIs and facilities to build "Virtual Reality" (VR) applications including high quality mobile VR experiences. Device implementations MUST properly implement these APIs and behaviors, as detailed in this section.
      </p>
      <h4 id="7_9_1_virtual_reality_mode">
        7.9.1. Virtual Reality Mode
      </h4>
      <p>
        Android handheld device implementations that support a mode for VR applications that handles stereoscopic rendering of notifications and disable monocular system UI components while a VR application has user focus MUST declare <code>android.software.vr.mode</code> feature. Devices declaring this feature MUST include an application implementing <code>android.service.vr.VrListenerService</code> that can be enabled by VR applications via <code>android.app.Activity#setVrModeEnabled</code> .
      </p>
      <h4 id="7_9_2_virtual_reality_high_performance">
        7.9.2. Virtual Reality High Performance
      </h4>
      <p>
        Android handheld device implementations MUST identify the support of high performance virtual reality for longer user periods through the <code>android.hardware.vr.high_performance</code> feature flag and meet the following requirements.
      </p>
      <ul>
        <li>Device implementations MUST have at least 2 physical cores.
        </li>
        <li>Device implementations MUST declare android.software.vr.mode feature.
        </li>
        <li>Device implementations MAY provide an exclusive core to the foreground application and MAY support the <code>Process.getExclusiveCores</code> API to return the numbers of the CPU cores that are exclusive to the top foreground application. If exclusive core is supported, then the core MUST not allow any other userspace processes to run on it (except device drivers used by the application), but MAY allow some kernel processes to run as necessary.
        </li>
        <li>Device implementations MUST support sustained performance mode.
        </li>
        <li>Device implementations MUST support OpenGL ES 3.2.
        </li>
        <li>Device implementations MUST support Vulkan Hardware Level 0 and SHOULD support Vulkan Hardware Level 1.
        </li>
        <li>Device implementations MUST implement EGL_KHR_mutable_render_buffer and EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_create_native_client_buffer, EGL_KHR_fence_sync and EGL_KHR_wait_sync so that they may be used for Shared Buffer Mode, and expose the extensions in the list of available EGL extensions.
        </li>
        <li>The GPU and display MUST be able to synchronize access to the shared front buffer such that alternating-eye rendering of VR content at 60fps with two render contexts will be displayed with no visible tearing artifacts.
        </li>
        <li>Device implementations MUST implement EGL_IMG_context_priority, and expose the extension in the list of available EGL extensions.
        </li>
        <li>Device implementations MUST implement GL_EXT_multisampled_render_to_texture, GL_OVR_multiview, GL_OVR_multiview2 and GL_OVR_multiview_multisampled_render_to_texture, and expose the extensions in the list of available GL extensions.
        </li>
        <li>Device implementations MUST implement EGL_EXT_protected_content and GL_EXT_protected_textures so that it may be used for Secure Texture Video Playback, and expose the extensions in the list of available EGL and GL extensions.
        </li>
        <li>Device implementations MUST support H.264 decoding at least 3840x2160@30fps-40Mbps (equivalent to 4 instances of 1920x1080@30fps-10Mbps or 2 instances of 1920x1080@60fps-20Mbps).
        </li>
        <li>Device implementations MUST support HEVC and VP9, MUST be capable to decode at least 1920x1080@30fps-10Mbps and SHOULD be capable to decode 3840x2160@30fps-20Mbps (equivalent to 4 instances of 1920x1080@30fps-5Mbps).
        </li>
        <li>The device implementations are STRONGLY RECOMMENDED to support android.hardware.sensor.hifi_sensors feature and MUST meet the gyroscope, accelerometer, and magnetometer related requirements for android.hardware.hifi_sensors.
        </li>
        <li>Device implementations MUST support HardwarePropertiesManager.getDeviceTemperatures API and return accurate values for skin temperature.
        </li>
        <li>The device implementation MUST have an embedded screen, and its resolution MUST be at least be FullHD(1080p) and STRONGLY RECOMMENDED TO BE be QuadHD (1440p) or higher.
        </li>
        <li>The display MUST measure between 4.7" and 6" diagonal.
        </li>
        <li>The display MUST update at least 60 Hz while in VR Mode.
        </li>
        <li>The display latency on Gray-to-Gray, White-to-Black, and Black-to-White switching time MUST be ≤ 3 ms.
        </li>
        <li>The display MUST support a low-persistence mode with ≤5 ms persistence,persistence being defined as the amount of time for which a pixel is emitting light.
        </li>
        <li>Device implementations MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension <a href="#7_4_3_bluetooth">section 7.4.3</a> .
        </li>
      </ul>
      <h2 id="8_performance_and_power">
        8. Performance and Power
      </h2>
      <p>
        Some minimum performance and power criteria are critical to the user experience and impact 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>
      <h3 id="8_1_user_experience_consistency">
        8.1. User Experience Consistency
      </h3>
      <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>
        <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>
        <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.
        </li>
      </ul>
      <h3 id="8_2_file_i/o_access_performance">
        8.2. File I/O Access Performance
      </h3>
      <p>
        Device implementations MUST ensure internal storage 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 at least 5MB/s for a 256MB file using 10MB write buffer.
        </li>
        <li>
          <strong>Random write</strong> . Device implementations MUST ensure a random write performance of at least 0.5MB/s for a 256MB file using 4KB write buffer.
        </li>
        <li>
          <strong>Sequential read</strong> . Device implementations MUST ensure a sequential read performance of at least 15MB/s for a 256MB file using 10MB write buffer.
        </li>
        <li>
          <strong>Random read</strong> . Device implementations MUST ensure a random read performance of at least 3.5MB/s for a 256MB file using 4KB write buffer.
        </li>
      </ul>
      <h3 id="8_3_power-saving_modes">
        8.3. Power-Saving Modes
      </h3>
      <p>
        Android 6.0 introduced App Standby and Doze power-saving modes to optimize battery usage. All Apps exempted from these modes MUST be made visible to the end user. Further, the triggering, maintenance, wakeup algorithms and the use of global system settings of these power-saving modes MUST not deviate from the Android Open Source Project.
      </p>
      <p>
        In addition to the power-saving modes, Android device implementations MAY implement any or all of the 4 sleeping power states as defined by the Advanced Configuration and Power Interface (ACPI), but if it implements S3 and S4 power states, it can only enter these states when closing a lid that is physically part of the device.
      </p>
      <h3 id="8_4_power_consumption_accounting">
        8.4. Power Consumption Accounting
      </h3>
      <p>
        A more accurate accounting and reporting of the power consumption provides the app developer both the incentives and the tools to optimize the power usage pattern of the application. Therefore, device implementations:
      </p>
      <ul>
        <li>MUST be able to track hardware component power usage and attribute that power usage to specific applications. Specifically, implementations:
          <ul>
            <li>MUST provide a per-component power profile that defines the <a href="http://source.android.com/devices/tech/power/values.html">current consumption value</a> for each hardware component and the approximate battery drain caused by the components over time as documented in the Android Open Source Project site.
            </li>
            <li>MUST report all power consumption values in milliampere hours (mAh).
            </li>
            <li>SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
            </li>
            <li>MUST report CPU power consumption per each process's UID. The Android Open Source Project meets the requirement through the <code>uid_cputime</code> kernel module implementation.
            </li>
          </ul>
        </li>
        <li>MUST make this power usage available via the <a href="http://source.android.com/devices/tech/power/batterystats.html"><code>adb shell dumpsys batterystats</code></a> shell command to the app developer.
        </li>
        <li>MUST honor the <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY">android.intent.action.POWER_USAGE_SUMMARY</a> intent and display a settings menu that shows this power usage.
        </li>
      </ul>
      <h3 id="8_5_consistent_performance">
        8.5. Consistent Performance
      </h3>
      <p>
        Performance can fluctuate dramatically for high-performance long-running apps, either because of the other apps running in the background or the CPU throttling due to temperature limits. Android includes programmatic interfaces so that when the device is capable, the top foreground application can request that the system optimize the allocation of the resources to address such fluctuations.
      </p>
      <p>
        Device implementations SHOULD support Sustained Performance Mode which can provide the top foreground application a consistent level of performance for a prolonged amount of time when requested through the <a href="https://developer.android.com/reference/android/view/Window.html#setSustainedPerformanceMode%28boolean%29"><code>Window.setSustainedPerformanceMode()</code></a> API method. A Device implementation MUST report the support of Sustained Performance Mode accurately through the <a href="https://developer.android.com/reference/android/os/PowerManager.html#isSustainedPerformanceModeSupported%28%29"><code>PowerManager.isSustainedPerformanceModeSupported()</code></a> API method.
      </p>
      <p>
        Device implementations with two or more CPU cores SHOULD provide at least one exclusive core that can be reserved by the top foreground application. If provided, implementations MUST meet the following requirements:
      </p>
      <ul>
        <li>Implementations MUST report through the <a href="https://developer.android.com/reference/android/os/Process.html#getExclusiveCores%28%29"><code>Process.getExclusiveCores()</code></a> API method the id numbers of the exclusive cores that can be reserved by the top foreground application.
        </li>
        <li>Device implementations MUST not allow any user space processes except the device drivers used by the application to run on the exclusive cores, but MAY allow some kernel processes to run as necessary.
        </li>
      </ul>
      <p>
        If a device implementation does not support an exclusive core, it MUST return an empty list through the <a href="https://developer.android.com/reference/android/os/Process.html#getExclusiveCores%28%29"><code>Process.getExclusiveCores()</code></a> API method.
      </p>
      <h2 id="9_security_model_compatibility">
        9. Security Model Compatibility
      </h2>
      <p>
        Device implementations MUST implement a security model consistent with the Android platform security model as defined in <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference document</a> in the APIs 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>
      <h3 id="9_1_permissions">
        9.1. Permissions
      </h3>
      <p>
        Device implementations MUST support the <a href="http://developer.android.com/guide/topics/security/permissions.html">Android permissions model</a> as defined in the Android developer documentation. 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>
      <p>
        Permissions with a <code>protectionLevel</code> of <a href="https://developer.android.com/reference/android/content/pm/PermissionInfo.html#PROTECTION_FLAG_PRIVILEGED">'PROTECTION_FLAG_PRIVILEGED'</a> MUST only be granted to apps preloaded in the whitelisted privileged path(s) of the system image, such as the <code>system/priv-app</code> path in the AOSP implementation.
      </p>
      <p>
        Permissions with a protection level of dangerous are runtime permissions. Applications with targetSdkVersion &gt; 22 request them at runtime. Device implementations:
      </p>
      <ul>
        <li>MUST show a dedicated interface for the user to decide whether to grant the requested runtime permissions and also provide an interface for the user to manage runtime permissions.
        </li>
        <li>MUST have one and only one implementation of both user interfaces.
        </li>
        <li>MUST NOT grant any runtime permissions to preinstalled apps unless:
          <ul>
            <li>the user's consent can be obtained before the application uses it
            </li>
            <li>the runtime permissions are associated with an intent pattern for which the preinstalled application is set as the default handler
            </li>
          </ul>
        </li>
      </ul>
      <h3 id="9_2_uid_and_process_isolation">
        9.2. UID and Process Isolation
      </h3>
      <p>
        Device implementations MUST support the Android application sandbox model, in which each application runs as a unique 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 <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference</a> .
      </p>
      <h3 id="9_3_filesystem_permissions">
        9.3. Filesystem Permissions
      </h3>
      <p>
        Device implementations MUST support the Android file access permissions model as defined in the <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference</a> .
      </p>
      <h3 id="9_4_alternate_execution_environments">
        9.4. Alternate Execution Environments
      </h3>
      <p>
        Device implementations MAY include runtime environments that execute applications using some other software or technology than the Dalvik 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="#9_security_model_compatibility">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 &lt;uses-permission&gt; 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>
        <li>MAY provide a single Android sandbox shared by all applications using the alternate runtime.
        </li>
        <li>Installed applications using an alternate runtime MUST NOT reuse the sandbox of any other app installed on the device, except through the standard Android mechanisms of shared user ID and signing certificate.
        </li>
        <li>MUST NOT launch with, grant, or be granted access to the sandboxes corresponding to other Android applications.
        </li>
        <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.
        </li>
      </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>
      <h3 id="9_5_multi-user_support">
        9.5. Multi-User Support
      </h3>
      <div class="note">
        This feature is optional for all device types.
      </div>
      <p>
        Android includes <a href="http://developer.android.com/reference/android/os/UserManager.html">support for multiple users</a> and provides support for full user isolation. Device implementations MAY enable multiple users, but when enabled MUST meet the following requirements related to <a href="http://source.android.com/devices/storage/traditional.html">multi-user support</a> :
      </p>
      <ul>
        <li>Android Automotive device implementations with multi-user support enabled MUST include a guest account that allows all functions provided by the vehicle system without requiring a user to log in.
        </li>
        <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>
        <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>
        <li>Device implementations MUST, for each user, implement a security model consistent with the Android platform security model as defined in <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference document</a> in the APIs.
        </li>
        <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 <a href="http://developer.android.com/reference/android/os/Environment.html">removable media</a> for primary external storage.
        </li>
      </ul>
      <h3 id="9_6_premium_sms_warning">
        9.6. Premium SMS Warning
      </h3>
      <p>
        Android includes support for warning users of any outgoing <a href="http://en.wikipedia.org/wiki/Short_code">premium SMS message</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>
      <h3 id="9_7_kernel_security_features">
        9.7. Kernel Security Features
      </h3>
      <p>
        The Android Sandbox includes features that use the Security-Enhanced Linux (SELinux) mandatory access control (MAC) system, seccomp sandboxing, and other security features in the Linux kernel. SELinux or any other security features implemented below the Android framework:
      </p>
      <ul>
        <li>MUST maintain compatibility with existing applications.
        </li>
        <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>
        <li>SHOULD NOT be user or developer configurable.
        </li>
      </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, if using a kernel other than Linux, an equivalent mandatory access control system. Devices MUST also 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 set SELinux to global enforcing mode.
        </li>
        <li>MUST configure all domains in enforcing mode. No permissive mode domains are allowed, including domains specific to a device/vendor.
        </li>
        <li>MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy folder provided in the upstream Android Open Source Project (AOSP) and the policy MUST compile with all neverallow rules present, for both AOSP SELinux domains as well as device/vendor specific domains.
        </li>
        <li>MUST split the media framework into multiple processes so that it is possible to more narrowly grant access for each process as <a href="https://source.android.com/devices/media/framework-hardening.html#arch_changes">described</a> in the Android Open Source Project site.
        </li>
      </ul>
      <p>
        Device implementations SHOULD retain the default SELinux policy provided in the system/sepolicy folder of the upstream Android Open Source Project and only further add to this policy for their own device-specific configuration. Device implementations MUST be compatible with the upstream Android Open Source Project.
      </p>
      <p>
        Devices MUST implement a kernel application sandboxing mechanism which allows filtering of system calls using a configurable policy from multithreaded programs. The upstream Android Open Source Project meets this requirement through enabling the seccomp-BPF with threadgroup synchronization (TSYNC) as described <a href="http://source.android.com/devices/tech/config/kernel.html#Seccomp-BPF-TSYNC">in the Kernel Configuration section of source.android.com</a> .
      </p>
      <h3 id="9_8_privacy">
        9.8. Privacy
      </h3>
      <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>
      <p>
        If a device implementation has a mechanism that routes network data traffic through a proxy server or VPN gateway by default (for example, preloading a VPN service with android.permission.CONTROL_VPN granted), the device implementation MUST ask for the user's consent before enabling that mechanism, unless that VPN is enabled by the Device Policy Controller via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setAlwaysOnVpnPackage(android.content.ComponentName,%20java.lang.String,%20boolean)"><code>DevicePolicyManager.setAlwaysOnVpnPackage()</code></a> , in which case the user does not need to provide a separate consent, but MUST only be notified.
      </p>
      <p>
        Device implementations MUST ship with an empty user-added Certificate Authority (CA) store, and MUST preinstall the same root certificates for the system-trusted CA store as <a href="https://source.android.com/security/overview/app-security.html#certificate-authorities">provided</a> in the upstream Android Open Source Project.
      </p>
      <p>
        When devices are routed through a VPN, or a user root CA is installed, the implementation MUST display a warning indicating the network traffic may be monitored to the user.
      </p>
      <p>
        If a device implementation has a USB port with USB peripheral mode support, it MUST present a user interface asking for the user's consent before allowing access to the contents of the shared storage over the USB port.
      </p>
      <h3 id="9_9_data_storage_encryption">
        9.9. Data Storage Encryption
      </h3>
      <div class="note">
        Optional for Android device implementations without a secure lock screen.
      </div>
      <p>
        If the device implementation supports a secure lock screen as described in section 9.11.1, then the device MUST support data storage encryption of the application private data (/data partition), as well as the application shared storage partition (/sdcard partition) if it is a permanent, non-removable part of the device.
      </p>
      <p>
        For device implementations supporting data storage encryption and with Advanced Encryption Standard (AES) crypto performance above 50MiB/sec, the data storage encryption MUST be enabled by default at the time the user has completed the out-of-box setup experience. If a device implementation is already launched on an earlier Android version with encryption disabled by default, such a device cannot meet the requirement through a system software update and thus MAY be exempted.
      </p>
      <p>
        Device implementations SHOULD meet the above data storage encryption requirement via implementing <a href="https://source.android.com/security/encryption/file-based.html">File Based Encryption</a> (FBE).
      </p>
      <h4 id="9_9_1_direct_boot">
        9.9.1. Direct Boot
      </h4>
      <p>
        All devices MUST implement the <a href="http://developer.android.com/preview/features/direct-boot.html">Direct Boot mode</a> APIs even if they do not support Storage Encryption. In particular, the <a href="https://developer.android.com/reference/android/content/Intent.html#LOCKED_BOOT_COMPLETED">LOCKED_BOOT_COMPLETED</a> and <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_USER_UNLOCKED">ACTION_USER_UNLOCKED</a> Intents must still be broadcast to signal Direct Boot aware applications that Device Encrypted (DE) and Credential Encrypted (CE) storage locations are available for user.
      </p>
      <h4 id="9_9_2_file_based_encryption">
        9.9.2. File Based Encryption
      </h4>
      <p>
        Device implementations supporting FBE:
      </p>
      <ul>
        <li>MUST boot up without challenging the user for credentials and allow Direct Boot aware apps to access to the Device Encrypted (DE) storage after the LOCKED_BOOT_COMPLETED message is broadcasted.
        </li>
        <li>MUST only allow access to Credential Encrypted (CE) storage after the user has unlocked the device by supplying their credentials (eg. passcode, pin, pattern or fingerprint) and the ACTION_USER_UNLOCKED message is broadcasted. Device implementations MUST NOT offer any method to unlock the CE protected storage without the user supplied credentials.
        </li>
        <li>MUST support Verified Boot and ensure that DE keys are cryptographically bound to the device's hardware root of trust.
        </li>
        <li>MUST support encrypting file contents using AES with a key length of 256-bits in XTS mode.
        </li>
        <li>MUST support encrypting file name using AES with a key length of 256-bits in CBC-CTS mode.
        </li>
        <li>MAY support alternative ciphers, key lengths and modes for file content and file name encryption, but MUST use the mandatorily supported ciphers, key lengths and modes by default.
        </li>
        <li>SHOULD make preloaded essential apps (e.g. Alarm, Phone, Messenger) Direct Boot aware.
        </li>
      </ul>
      <p>
        The keys protecting CE and DE storage areas:
      </p>
      <ul>
        <li>MUST be cryptographically bound to a hardware-backed Keystore. CE keys must be bound to a user's lock screen credentials. If the user has specified no lock screen credentials then the CE keys MUST be bound to a default passcode.
        </li>
        <li>MUST be unique and distinct, in other words no user's CE or DE key may match any other user's CE or DE keys.
        </li>
      </ul>
      <p>
        The upstream Android Open Source project provides a preferred implementation of this feature based on the Linux kernel ext4 encryption feature.
      </p>
      <h4 id="9_9_3_full_disk_encryption">
        9.9.3. Full Disk Encryption
      </h4>
      <p>
        Device implementations supporting <a href="http://source.android.com/devices/tech/security/encryption/index.html">full disk encryption</a> (FDE). 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. The user MUST be provided with the possibility to AES encrypt the encryption key, except when it is in active use, with the lock screen credentials stretched using a slow stretching algorithm (e.g. PBKDF2 or scrypt). If the user has not specified a lock screen credentials 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>
      <h3 id="9_10_device_integrity">
        9.10. Device Integrity
      </h3>
      <p>
        The following requirements ensures there is transparancy to the status of the device integrity.
      </p>
      <p>
        Device implementations MUST correctly report through the System API method PersistentDataBlockManager.getFlashLockState() whether their bootloader state permits flashing of the system image. The <code>FLASH_LOCK_UNKNOWN</code> state is reserved for device implementations upgrading from an earlier version of Android where this new system API method did not exist.
      </p>
      <p>
        Verified boot is a feature that guarantees the integrity of the device software. If a device implementation supports the feature, it MUST:
      </p>
      <ul>
        <li>Declare the platform feature flag android.software.verified_boot.
        </li>
        <li>Perform verification on every boot sequence.
        </li>
        <li>Start verification from an immutable hardware key that is the root of trust and go all the way up to the system partition.
        </li>
        <li>Implement each stage of verification to check the integrity and authenticity of all the bytes in the next stage before executing the code in the next stage.
        </li>
        <li>Use verification algorithms as strong as current recommendations from NIST for hashing algorithms (SHA-256) and public key sizes (RSA-2048).
        </li>
        <li>MUST NOT allow boot to complete when system verification fails, unless the user consents to attempt booting anyway, in which case the data from any non-verified storage blocks MUST not be used.
        </li>
        <li>MUST NOT allow verified partitions on the device to be modified unless the user has explicitly unlocked the boot loader.
        </li>
      </ul>
      <p>
        The upstream Android Open Source Project provides a preferred implementation of this feature based on the Linux kernel feature dm-verity.
      </p>
      <p>
        Starting from Android 6.0, device implementations with Advanced Encryption Standard (AES) crypto performance above 50 MiB/seconds MUST support verified boot for device integrity.
      </p>
      <p>
        If a device implementation is already launched without supporting verified boot on an earlier version of Android, such a device can not add support for this feature with a system software update and thus are exempted from the requirement.
      </p>
      <h3 id="9_11_keys_and_credentials">
        9.11. Keys and Credentials
      </h3>
      <p>
        The <a href="https://developer.android.com/training/articles/keystore.html">Android Keystore System</a> allows app developers to store cryptographic keys in a container and use them in cryptographic operations through the <a href="https://developer.android.com/reference/android/security/KeyChain.html">KeyChain API</a> or the <a href="https://developer.android.com/reference/java/security/KeyStore.html">Keystore API</a> .
      </p>
      <p>
        All Android device implementations MUST meet the following requirements:
      </p>
      <ul>
        <li>SHOULD not limit the number of keys that can be generated, and MUST at least allow more than 8,192 keys to be imported.
        </li>
        <li>The lock screen authentication MUST rate limit attempts and MUST have an exponential backoff algorithm. Beyond 150 failed attempts, the delay MUST be at least 24 hours per attempt.
        </li>
        <li>When the device implementation supports a secure lock screen it MUST back up the keystore implementation with secure hardware and meet following requirements:
          <ul>
            <li>MUST have hardware backed implementations of RSA, AES, ECDSA and HMAC cryptographic algorithms and MD5, SHA1, SHA-2 Family hash functions to properly support the <a href="https://developer.android.com/training/articles/keystore.html#SupportedAlgorithms">Android Keystore system's supported algorithms</a> .
            </li>
            <li>MUST perform the lock screen authentication in the secure hardware and only when successful allow the authentication-bound keys to be used. The upstream Android Open Source Project provides the <a href="http://source.android.com/devices/tech/security/authentication/gatekeeper.html">Gatekeeper Hardware Abstraction Layer (HAL)</a> that can be used to satisfy this requirement.
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Note that if a device implementation is already launched on an earlier Android version, and does not have a fingerprint scanner, such a device is exempted from the requirement to have a hardware-backed keystore.
      </p>
      <h4 id="9_11_1_secure_lock_screen">
        9.11.1. Secure Lock Screen
      </h4>
      <p>
        Device implementations MAY add or modify the authentication methods to unlock the lock screen, but MUST still meet the following requirements:
      </p>
      <ul>
        <li>The authentication method, if based on a known secret, MUST NOT be treated as a secure lock screen unless it meets all following requirements:
          <ul>
            <li>The entropy of the shortest allowed length of inputs MUST be greater than 10 bits.
            </li>
            <li>The maximum entropy of all possible inputs MUST be greater than 18 bits.
            </li>
            <li>MUST not replace any of the existing authentication methods (PIN, pattern, password) implemented and provided in AOSP.
            </li>
            <li>MUST be disabled when the Device Policy Controller (DPC) application has set the password quality policy via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than <code>PASSWORD_QUALITY_SOMETHING</code> .
            </li>
          </ul>
        </li>
        <li>The authenticaion method, if based on a physical token or the location, MUST NOT be treated as a secure lock screen unless it meets all following requirements:
          <ul>
            <li>It MUST have a fall-back mechanism to use one of the primary authentication methods which is based on a known secret and meets the requirements to be treated as a secure lock screen.
            </li>
            <li>It MUST be disabled and only allow the primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the policy with either the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)</code></a> method or the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than <code>PASSWORD_QUALITY_UNSPECIFIED</code> .
            </li>
          </ul>
        </li>
        <li>The authentication method, if based on biometrics, MUST NOT be treated as a secure lock screen unless it meets all following requirements:
          <ul>
            <li>It MUST have a fall-back mechanism to use one of the primary authentication methods which is based on a known secret and meets the requirements to be treated as a secure lock screen.
            </li>
            <li>It MUST be disabled and only allow the primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the keguard feature policy by calling the method <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT)</code></a> .
            </li>
            <li>It MUST have a false acceptance rate that is equal or stronger than what is required for a fingerprint sensor as described in section 7.3.10, or otherwise MUST be disabled and only allow the primary authentication to unlock the screen when the Device Policy Controller (DPC) application has set the password quality policy via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than <code>PASSWORD_QUALITY_BIOMETRIC_WEAK</code> .
            </li>
          </ul>
        </li>
        <li>If the authentication method can not be treated as a secure lock screen, it:
          <ul>
            <li>MUST return <code>false</code> for both the <a href="http://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardSecure%28%29"><code>KeyguardManager.isKeyguardSecure()</code></a> and the <a href="https://developer.android.com/reference/android/app/KeyguardManager.html#isDeviceSecure%28%29"><code>KeyguardManager.isDeviceSecure()</code></a> methods.
            </li>
            <li>MUST be disabled when the Device Policy Controller (DPC) application has set the password quality policy via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than <code>PASSWORD_QUALITY_UNSPECIFIED</code> .
            </li>
            <li>MUST NOT reset the password expiration timers set by <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout%28android.content.ComponentName,%20long%29"><code>DevicePolicyManager.setPasswordExpirationTimeout()</code></a> .
            </li>
            <li>MUST NOT authenticate access to keystores if the application has called <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a> ).
            </li>
          </ul>
        </li>
        <li>If the authentication method is based on a physical token, the location, or biometrics that has higher false acceptance rate than what is required for fingerprint sensors as described in section 7.3.10, then it:
          <ul>
            <li>MUST NOT reset the password expiration timers set by <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout%28android.content.ComponentName,%20long%29"><code>DevicePolicyManager.setPasswordExpirationTimeout()</code></a> .
            </li>
            <li>MUST NOT authenticate access to keystores if the application has called <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a> .
            </li>
          </ul>
        </li>
      </ul>
      <h3 id="9_12_data_deletion">
        9.12. Data Deletion
      </h3>
      <p>
        Devices MUST provide users with a mechanism to perform a "Factory Data Reset" that allows logical and physical deletion of all data except for the following:
      </p>
      <ul>
        <li>The system image
        </li>
        <li>Any operating system files required by the system image
        </li>
      </ul>
      <p>
        All user-generated data MUST be deleted. This MUST satisfy relevant industry standards for data deletion such as NIST SP800-88. This MUST be used for the implementation of the wipeData() API (part of the Android Device Administration API) described in <a href="#3_9_device_administration">section 3.9 Device Administration</a> .
      </p>
      <p>
        Devices MAY provide a fast data wipe that conducts a logical data erase.
      </p>
      <h3 id="9_13_safe_boot_mode">
        9.13. Safe Boot Mode
      </h3>
      <p>
        Android provides a mode enabling users to boot up into a mode where only preinstalled system apps are allowed to run and all third-party apps are disabled. This mode, known as "Safe Boot Mode", provides the user the capability to uninstall potentially harmful third-party apps.
      </p>
      <p>
        Android device implementations are STRONGLY RECOMENDED to implement Safe Boot Mode and meet following requirements:
      </p>
      <ul>
        <li>
          <p>
            Device implementations SHOULD provide the user an option to enter Safe Boot Mode from the boot menu which is reachable through a workflow that is different from that of normal boot.
          </p>
        </li>
        <li>
          <p>
            Device implementations MUST provide the user an option to enter Safe Boot Mode in such a way that is uninterruptible from third-party apps installed on the device, except for when the third party app is a Device Policy Controller and has set the <a href="https://developer.android.com/reference/android/os/UserManager.html#DISALLOW_SAFE_BOOT"><code>UserManager.DISALLOW_SAFE_BOOT</code></a> flag as true.
          </p>
        </li>
        <li>
          <p>
            Device implementations MUST provide the user the capability to uninstall any third-party apps within Safe Mode.
          </p>
        </li>
      </ul>
      <h3 id="9_14_automotive_vehicle_system_isolation">
        9.14. Automotive Vehicle System Isolation
      </h3>
      <p>
        Android Automotive devices are expected to exchange data with critical vehicle subsystems, e.g., by using the <a href="http://source.android.com/devices/automotive.html">vehicle HAL</a> to send and receive messages over vehicle networks such as CAN bus. Android Automotive device implementations MUST implement security features below the Android framework layers to prevent malicious or unintentional interaction between the Android framework or third-party apps and vehicle subsystems. These security features are as follows:
      </p>
      <ul>
        <li>Gatekeeping messages from Android framework vehicle subsystems, e.g., whitelisting permitted message types and message sources.
        </li>
        <li>Watchdog against denial of service attacks from the Android framework or third-party apps. This guards against malicious software flooding the vehicle network with traffic, which may lead to malfunctioning vehicle subsystems.
        </li>
      </ul>
      <h2 id="10_software_compatibility_testing">
        10. Software Compatibility Testing
      </h2>
      <p>
        Device implementations MUST pass all tests described in this section.
      </p>
      <p>
        However, note that no software test package is fully comprehensive. For this reason, device implementers are <strong>STRONGLY RECOMMENDED</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>
      <h3 id="10_1_compatibility_test_suite">
        10.1. Compatibility Test Suite
      </h3>
      <p>
        Device implementations MUST pass the <a href="http://source.android.com/compatibility/index.html">Android Compatibility Test Suite (CTS)</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 7.1. Device implementations MUST pass the latest CTS version available at the time the device software is completed.
      </p>
      <h3 id="10_2_cts_verifier">
        10.2. CTS Verifier
      </h3>
      <p>
        Device implementations MUST correctly execute all applicable cases in the CTS Verifier. The CTS Verifier is included with the Compatibility Test Suite, and is intended to be run by a human operator to test functionality that cannot be tested by an automated system, such as correct functioning of a camera and sensors.
      </p>
      <p>
        The CTS Verifier has tests for many kinds of hardware, including some hardware that is optional. Device implementations MUST pass all tests for hardware 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>
      <h2 id="11_updatable_software">
        11. Updatable Software
      </h2>
      <p>
        Device implementations MUST include a mechanism to replace the entirety of the system software. The mechanism need not perform “live” upgrades—that is, a device restart MAY be required.
      </p>
      <p>
        Any method can be used, provided that it can replace the entirety of the software preinstalled on the device. For instance, any of the following approaches will satisfy this requirement:
      </p>
      <ul>
        <li>“Over-the-air (OTA)” downloads with offline update via reboot.
        </li>
        <li>“Tethered” updates over USB from a host PC.
        </li>
        <li>“Offline” updates via a reboot and update from a file on removable storage.
        </li>
      </ul>
      <p>
        However, if the device implementation includes support for an unmetered data connection such as 802.11 or Bluetooth PAN (Personal Area Network) profile, it MUST support OTA downloads 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 6.0 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>
        Also, device implementations SHOULD support <a href="https://source.android.com/devices/tech/ota/ab_updates.html">A/B system updates</a> . The AOSP implements this feature using the boot control HAL.
      </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>
      <p>
        Android includes features that allow the Device Owner app (if present) to control the installation of system updates. To facilitate this, the system update subsystem for devices that report android.software.device_admin MUST implement the behavior described in the <a href="http://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html">SystemUpdatePolicy</a> class.
      </p>
      <h2 id="12_document_changelog">
        12. Document Changelog
      </h2>
      <p>
        For a summary of changes to the Compatibility Definition in this release:
      </p>
      <ul>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/?pretty=full&amp;no-merges">Document changelog</a>
        </li>
      </ul>
      <p>
        For a summary of changes to individuals sections:
      </p>
      <ol>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/1_introduction?pretty=full&amp;no-merges">Introduction</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/2_device_types?pretty=full&amp;no-merges">Device Types</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/3_software?pretty=full&amp;no-merges">Software</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/4_application-packaging?pretty=full&amp;no-merges">Application Packaging</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/5_multimedia?pretty=full&amp;no-merges">Multimedia</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/6_dev-tools-and-options?pretty=full&amp;no-merges">Developer Tools and Options</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/7_hardware-compatibility?pretty=full&amp;no-merges">Hardware Compatibility</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/8_performance-and-power?pretty=full&amp;no-merges">Performance and Power</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/9_security-model?pretty=full&amp;no-merges">Security Model</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/10_software-compatibility-testing?pretty=full&amp;no-merges">Software Compatibility Testing</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/11_updatable-software?pretty=full&amp;no-merges">Updatable Software</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/12_document-changelog?pretty=full&amp;no-merges">Document Changelog</a>
        </li>
        <li>
          <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-mr1-dev/13_contact-us?pretty=full&amp;no-merges">Contact Us</a>
        </li>
      </ol>
      <h3 id="12_1_changelog_viewing_tips">
        12.1. Changelog Viewing Tips
      </h3>
      <p>
        Changes are marked as follows:
      </p>
      <ul>
        <li>
          <p>
            <strong>CDD</strong><br />
            Substantive changes to the compatibility requirements.
          </p>
        </li>
        <li>
          <p>
            <strong>Docs</strong><br />
            Cosmetic or build related changes.
          </p>
        </li>
      </ul>
      <p>
        For best viewing, append the <code>pretty=full</code> and <code>no-merges</code> URL parameters to your changelog URLs.
      </p>
      <h2 id="13_contact_us">
        13. Contact Us
      </h2>
      <p>
        You can join the <a href="https://groups.google.com/forum/#!forum/android-compatibility">android-compatibility forum</a> and ask for clarifications or bring up any issues that you think the document does not cover.
      </p>
