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">
    <h4>In this document</h5>
    <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>
      <h2 id="2_1_device_configurations">
        2.1 Device Configurations
      </h2>
      <p>
        This is a summary of major differences in hardware configuration by device type. (Empty cells denote a “MAY”). Not all configurations are covered in this table; see relevant hardware sections for more detail.
      </p>
      <table>
        <tr>
          <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="5">
            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>
      <h2 id="3_1_managed_api_compatibility">
        3.1. Managed API Compatibility
      </h2>
      <p>
        The managed Dalvik bytecode execution environment is the primary vehicle for Android applications. The Android application programming interface (API) is the set of Android platform interfaces exposed to applications running in the managed runtime environment. Device implementations MUST provide complete implementations, including all documented behaviors, of any documented API exposed by the <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>
      <h2 id="3_1_1_android_extensions">
        3.1.1. Android Extensions
      </h2>
      <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>
      <h2 id="3_2_soft_api_compatibility">
        3.2. Soft API Compatibility
      </h2>
      <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"><code>android.telecom.action.CHANGE_DEFAULT_DIALER</code></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>
      <h2 id="3_3_native_api_compatibility">
        3.3. Native API Compatibility
      </h2>
      <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>libvukan.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 delare 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>
      <h2 id="3_4_web_compatibility">
        3.4. Web Compatibility
      </h2>
      <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>
      <h2 id="3_5_api_behavioral_compatibility">
        3.5. API Behavioral Compatibility
      </h2>
      <p>
        The behaviors of each of the API types (managed, soft, native, and web) must be consistent with the preferred implementation of the upstream <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>
      <h2 id="3_6_api_namespaces">
        3.6. API Namespaces
      </h2>
      <p>
        Android follows the package and class namespace conventions defined by the Java programming language. To ensure compatibility with third-party applications, device implementers MUST NOT make any prohibited modifications (see below) to these package namespaces:
      </p>
      <ul>
        <li>java.*
        </li>
        <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>
      <h2 id="3_7_runtime_compatibility">
        3.7. Runtime Compatibility
      </h2>
      <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>
      <h2 id="3_8_user_interface_compatibility">
        3.8. User Interface Compatibility
      </h2>
      <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> .
        </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>MUST at least display the title of 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>
      <h2 id="3_9_device_administration">
        3.9. Device Administration
      </h2>
      <p>
        Android includes features that allow security-aware applications to perform device administration functions at the system level, such as enforcing password policies or performing remote wipe, through the <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%28java.lang.String%29">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%28java.lang.String%29"><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%28java.lang.String%29"><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%28java.lang.String%29">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 [ <code>setShortSupportMessage</code> ](https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setShortSupportMessage(android.content.ComponentName, java.lang.CharSequence).
        </li>
        <li>The DPC application’s icon.
        </li>
      </ul>
      <h2 id="3_9_2_managed_profile_support">
        3.9.2 Managed Profile Support
      </h2>
      <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(android.content.ComponentName)">getParentProfileInstance</a> ..
            </li>
          </ul>
        </li>
      </ul>
      <h2 id="3_10_accessibility">
        3.10. Accessibility
      </h2>
      <p>
        Android provides an accessibility layer that helps users with disabilities to navigate their devices more easily. In addition, Android provides platform APIs that enable <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>
      <h2 id="3_11_text-to-speech">
        3.11. Text-to-Speech
      </h2>
      <p>
        Android includes APIs that allow applications to make use of text-to-speech (TTS) services and allows service providers to provide implementations of TTS services. 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>
      <h2 id="3_12_tv_input_framework">
        3.12. TV Input Framework
      </h2>
      <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>
      <h2 id="3_13_quick_settings">
        3.13. Quick Settings
      </h2>
      <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>
      <h2 id="3_14_vehicle_ui_apis">
        3.14. Vehicle UI APIs
      </h2>
      <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>
      <h2 id="5_1_media_codecs">
        5.1. Media Codecs
      </h2>
      <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>
      <h2 id="5_2_video_encoding">
        5.2. Video Encoding
      </h2>
      <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&amp;emdash;
      </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>
      <h2 id="5_3_video_decoding">
        5.3. Video Decoding
      </h2>
      <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>
            10 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>
      <h2 id="5_4_audio_recording">
        5.4. Audio Recording
      </h2>
      <p>
        While some of the requirements outlined in this section are stated as SHOULD since Android 4.3, the Compatibility Definition for a future version is planned to change these to MUST. Existing and new Android devices are <strong>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>
      <h2 id="5_5_audio_playback">
        5.5. Audio Playback
      </h2>
      <p>
        Device implementations that declare android.hardware.audio.output MUST conform to the requirements in this section.
      </p>
      <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>
      <h2 id="5_6_audio_latency">
        5.6. Audio Latency
      </h2>
      <p>
        Audio latency is the time delay as an audio signal passes through a system. Many classes of applications rely on short latencies, to achieve real-time sound effects.
      </p>
      <p>
        For the purposes of this section, use the following definitions:
      </p>
      <ul>
        <li>
          <strong>output latency</strong> . The interval between when an application writes a frame of PCM-coded data and when the corresponding sound 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>
      <h2 id="5_7_network_protocols">
        5.7. Network Protocols
      </h2>
      <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>
      <h2 id="5_8_secure_media">
        5.8. Secure Media
      </h2>
      <p>
        Device implementations that support secure video output and are capable of supporting secure surfaces MUST declare support for Display.FLAG_SECURE. Device implementations that declare support for Display.FLAG_SECURE, if they support a wireless display protocol, MUST secure the link with a cryptographically strong mechanism such as HDCP 2.x or higher for Miracast wireless displays. Similarly if they support a wired external display, the device implementations MUST support HDCP 1.2 or higher. Android Television device implementations MUST support HDCP 2.2 for devices supporting 4K resolution and HDCP 1.4 or above for lower resolutions. The upstream Android open source implementation includes support for wireless (Miracast) and wired (HDMI) displays that satisfies this requirement.
      </p>
      <h2 id="5_9_musical_instrument_digital_interface_(midi)">
        5.9. Musical Instrument Digital Interface (MIDI)
      </h2>
      <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>
      <h2 id="5_10_professional_audio">
        5.10. Professional Audio
      </h2>
      <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>
      <h2 id="5_11_capture_for_unprocessed">
        5.11. Capture for Unprocessed
      </h2>
      <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 4000 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>
      <h2 id="6_1_developer_tools">
        6.1. Developer Tools
      </h2>
      <p>
        Device implementations MUST support the Android Developer Tools provided in the Android SDK. Android compatible devices MUST be compatible with:
      </p>
      <ul>
        <li>
          <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>
      <h2 id="6_2_developer_options">
        6.2. Developer Options
      </h2>
      <p>
        Android includes support for developers to configure application development-related settings. Device implementations MUST honor the <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>
      <h2 id="7_1_display_and_graphics">
        7.1. Display and Graphics
      </h2>
      <p>
        Android includes facilities that automatically adjust application assets and UI layouts appropriately for the device to ensure that third-party applications run well on a <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>
      <h2 id="7_2_input_devices">
        7.2. Input Devices
      </h2>
      <p>
        Devices MUST support a touchscreen or meet the requirements listed in 7.2.2 for non-touch navigation.
      </p>
      <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>
      <h2 id="7_3_sensors">
        7.3. Sensors
      </h2>
      <p>
        Android includes APIs for accessing a variety of sensor types. Devices implementations generally MAY omit these sensors, as provided for in the following subsections. If a device includes a particular sensor type that has a corresponding API for third-party developers, the device implementation MUST implement that API as described in the Android SDK documentation and the Android Open Source documentation on <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.07 °/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) using the TEE as implemented in the Android Open Source project.
        </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>
      <h2 id="7_3_12_pose_sensor">
        7.3.12. Pose Sensor
      </h2>
      <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>
      <h2 id="7_4_data_connectivity">
        7.4. Data Connectivity
      </h2>
      <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>
      <h2 id="7_5_cameras">
        7.5. Cameras
      </h2>
      <p>
        Device implementations SHOULD include a rear-facing camera and MAY include a front-facing camera. A rear-facing camera is a camera located on the side of the device opposite the display; that is, it images scenes on the far side of the device, like a traditional camera. A front-facing camera is a camera located on the same side of the device as the display; that is, a camera typically used to image the user, such as for video conferencing and similar applications.
      </p>
      <p>
        If a device implementation includes at least one camera, it 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%28int%29">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>
      <h2 id="7_6_memory_and_storage">
        7.6. Memory and Storage
      </h2>
      <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>
      <h2 id="7_7_usb">
        7.7. USB
      </h2>
      <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>
      <h2 id="7_8_audio">
        7.8. Audio
      </h2>
      <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>
      <h2 id="7_9_virtual_reality">
        7.9. Virtual Reality
      </h2>
      <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 MUST provide an exclusive core to the foreground application and MUST support the Process.getExclusiveCores API to return the numbers of the cpu cores that are exclusive to the top foreground application. This 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>
      <h2 id="8_1_user_experience_consistency">
        8.1. User Experience Consistency
      </h2>
      <p>
        Device implementations MUST provide a smooth user interface by ensuring a consistent frame rate and response times for applications and games. Device implementations MUST meet the following requirements:
      </p>
      <ul>
        <li>
          <strong>Consistent frame latency</strong> . Inconsistent frame latency or a delay to render frames MUST NOT happen more often than 5 frames in a second, and SHOULD be below 1 frames in a second.
        </li>
        <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>
      <h2 id="8_2_file_i/o_access_performance">
        8.2. File I/O Access Performance
      </h2>
      <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>
      <h2 id="8_3_power-saving_modes">
        8.3. Power-Saving Modes
      </h2>
      <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>
      <h2 id="8_4_power_consumption_accounting">
        8.4. Power Consumption Accounting
      </h2>
      <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>
      <h2 id="8_5_consistent_performance">
        8.5. Consistent Performance
      </h2>
      <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>
      <h2 id="9_1_permissions">
        9.1. Permissions
      </h2>
      <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>
      <h2 id="9_2_uid_and_process_isolation">
        9.2. UID and Process Isolation
      </h2>
      <p>
        Device implementations MUST support the Android application sandbox model, in which each application runs as a unique Unixstyle UID and in a separate process. Device implementations MUST support running multiple applications as the same Linux user ID, provided that the applications are properly signed and constructed, as defined in the <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference</a> .
      </p>
      <h2 id="9_3_filesystem_permissions">
        9.3. Filesystem Permissions
      </h2>
      <p>
        Device implementations MUST support the Android file access permissions model as defined in the <a href="http://developer.android.com/guide/topics/security/permissions.html">Security and Permissions reference</a> .
      </p>
      <h2 id="9_4_alternate_execution_environments">
        9.4. Alternate Execution Environments
      </h2>
      <p>
        Device implementations MAY include runtime environments that execute applications using some other software or technology than the Dalvik Executable Format or native code. However, such alternate execution environments MUST NOT compromise the Android security model or the security of installed Android applications, as described in this section.
      </p>
      <p>
        Alternate runtimes MUST themselves be Android applications, and abide by the standard Android security model, as described elsewhere in <a href="#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>
      <h2 id="9_5_multi-user_support">
        9.5. Multi-User Support
      </h2>
      <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>
      <h2 id="9_6_premium_sms_warning">
        9.6. Premium SMS Warning
      </h2>
      <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>
      <h2 id="9_7_kernel_security_features">
        9.7. Kernel Security Features
      </h2>
      <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>
      <h2 id="9_8_privacy">
        9.8. Privacy
      </h2>
      <p>
        If the device implements functionality in the system that captures the contents displayed on the screen and/or records the audio stream played on the device, it MUST continuously notify the user whenever this functionality is enabled and actively capturing/recording.
      </p>
      <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%28android.content.ComponentName,%20java.lang.String,%20boolean%29"><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>
      <h2 id="9_9_data_storage_encryption">
        9.9. Data Storage Encryption
      </h2>
      <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>
      <h2 id="9_10_device_integrity">
        9.10. Device Integrity
      </h2>
      <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>
      <h2 id="9_11_keys_and_credentials">
        9.11. Keys and Credentials
      </h2>
      <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()"><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>
      <h2 id="9_12_data_deletion">
        9.12. Data Deletion
      </h2>
      <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>
      <h2 id="9_13_safe_boot_mode">
        9.13. Safe Boot Mode
      </h2>
      <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>
      <h2 id="9_14_automotive_vehicle_system_isolation">
        9.14. Automotive Vehicle System Isolation
      </h2>
      <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>
      <h2 id="10_1_compatibility_test_suite">
        10.1. Compatibility Test Suite
      </h2>
      <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>
      <h2 id="10_2_cts_verifier">
        10.2. CTS Verifier
      </h2>
      <p>
        Device implementations MUST correctly execute all applicable cases in the CTS Verifier. The CTS Verifier is included with the Compatibility Test Suite, and is intended to be run by a human operator to test functionality that cannot be tested by an automated system, such as correct functioning of a camera and sensors.
      </p>
      <p>
        The CTS Verifier has tests for many kinds of hardware, including some hardware that is optional. Device implementations MUST pass all tests for hardware that they possess; for instance, if a device possesses an accelerometer, it MUST correctly execute the Accelerometer test case in the CTS Verifier. Test cases for features noted as optional by this Compatibility Definition Document MAY be skipped or omitted.
      </p>
      <p>
        Every device and every build MUST correctly run the CTS Verifier, as noted above. However, since many builds are very similar, device implementers are not expected to explicitly run the CTS Verifier on builds that differ only in trivial ways. Specifically, device implementations that differ from an implementation that has passed the CTS Verifier only by the set of included locales, branding, etc. MAY omit the CTS Verifier test.
      </p>
      <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>
      <h2 id="12_1_changelog_viewing_tips">
        12.1. Changelog Viewing Tips
      </h2>
      <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>
    </div>
  </body>
</html>
