<html devsite="">
  <head>
    <title>
      Android 9 Compatibility Definition
    </title>
    <meta name="project_path" value="/_project.yaml">
    <meta name="book_path" value="/_book.yaml">
  </head>
  <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.
  -->
    <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 9.
    </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 9. A “device implementation” or “implementation" is the hardware/software solution so developed.
    </p>
    <p>
      To be considered compatible with Android 9, 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>
    <h3 id="1_1_document_structure">
      1.1 Document Structure
    </h3>
    <h4 id="1_1_1_requirements_by_device_type">
      1.1.1. Requirements by Device Type
    </h4>
    <p>
      <a href="#2_device_types">Section 2</a> contains all of the requirements that apply to a specific device type. Each subsection of <a href="#2_device_types">Section 2</a> is dedicated to a specific device type.
    </p>
    <p>
      All the other requirements, that universally apply to any Android device implementations, are listed in the sections after <a href="#2_device_types">Section 2</a>. These requirements are referenced as "Core Requirements" in this document.
    </p>
    <h4 id="1_1_2_requirement_id">
      1.1.2. Requirement ID
    </h4>
    <p>
      Requirement ID is assigned for MUST requirements.
    </p>
    <ul>
      <li>The ID is assigned for MUST requirements only.
      </li>
      <li>STRONGLY RECOMMENDED requirements are marked as [SR] but ID is not assigned.
      </li>
      <li>The ID consists of : Device Type ID - Condition ID - Requirement ID (e.g. C-0-1).
      </li>
    </ul>
    <p>
      Each ID is defined as below:
    </p>
    <ul>
      <li>Device Type ID (see more in <a href="#2_device_types">2. Device Types</a>)
        <ul>
          <li>C: Core (Requirements that are applied to any Android device implementations)
          </li>
          <li>H: Android Handheld device
          </li>
          <li>T: Android Television device
          </li>
          <li>A: Android Automotive implementation
          </li>
          <li>Tab: Android Tablet implementation
          </li>
        </ul>
      </li>
      <li>Condition ID
        <ul>
          <li>When the requirement is unconditional, this ID is set as 0.
          </li>
          <li>When the requirement is conditional, 1 is assinged for the 1st condition and the number increments by 1 within the same section and the same device type.
          </li>
        </ul>
      </li>
      <li>Requirement ID
        <ul>
          <li>This ID starts from 1 and increments by 1 within the same section and the same condition.
          </li>
        </ul>
      </li>
    </ul>
    <h4 id="1_1_3_requirement_id_in_section_2">
      1.1.3. Requirement ID in Section 2
    </h4>
    <p>
      The Requirement ID in <a href="#2_device_types">Section 2</a> starts with the corresponding section ID that is followed by the Requirement ID described above.
    </p>
    <ul>
      <li>The ID in <a href="#2_device_types">Section 2</a> consists of : Section ID / Device Type ID - Condition ID - Requirement ID (e.g. 7.4.3/A-0-1).
      </li>
    </ul>
    <h2 id="2_device_types">
      2. Device Types
    </h2>
    <p>
      While the Android Open Source Project provides a software stack that can be used for a variety of device types and form factors, there are a few device types that have a relatively better established application distribution ecosystem.
    </p>
    <p>
      This section describes those device types, and additional requirements and recommendations applicable for each device type.
    </p>
    <p>
      All Android device implementations that do not fit into any of the described device types MUST still meet all requirements in the other sections of this Compatibility Definition.
    </p>
    <h3 id="2_1_device_configurations">
      2.1 Device Configurations
    </h3>
    <p>
      For the major differences in hardware configuration by device type, see the device-specific requirements that follow in this section.
    </p>
    <h3 id="2_2_handheld_requirements">
      2.2. Handheld Requirements
    </h3>
    <p>
      An <strong>Android Handheld device</strong> refers to an Android device implementation that is typically used by holding it in the hand, such as an mp3 player, phone, or tablet.
    </p>
    <p>
      Android device implementations are classified as a Handheld if they meet all the following criteria:
    </p>
    <ul>
      <li>Have a power source that provides mobility, such as a battery.
      </li>
      <li>Have a physical diagonal screen size in the range of 2.5 to 8 inches.
      </li>
    </ul>
    <p>
      The additional requirements in the rest of this section are specific to Android Handheld device implementations.
    </p>
    <div class="note">
      <b>Note:</b> Requirements that do not apply to Android Tablet devices are marked with an *.
    </div>
    <h4 id="2_2_1_hardware">
      2.2.1. Hardware
    </h4>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.1.1/H-0-1] MUST have a screen at least 2.5 inches in physical diagonal size.
      </li>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.1.3/H-SR] Are STRONGLY RECOMMENDED to provide users an affordance to change the display size.(Screen Density)
      </li>
    </ul>
    <p>
      If Handheld device implementations claim support for high dynamic range displays through <a href="https://developer.android.com/reference/android/content/res/Configuration.html#isScreenHdr%28%29"><code>Configuration.isScreenHdr()</code></a> , they:
    </p>
    <ul>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.4.5/H-1-1] MUST advertise support for the <code>EGL_EXT_gl_colorspace_bt2020_pq</code>, <code>EGL_EXT_surface_SMPTE2086_metadata</code>, <code>EGL_EXT_surface_CTA861_3_metadata</code>, <code>VK_EXT_swapchain_colorspace</code>, and <code>VK_EXT_hdr_metadata</code> extensions.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.5/H-0-1] 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>
      <li>[<a href="#7_2_input_devices">7.2</a>.1/H-0-1] MUST include support for third-party Input Method Editor (IME) applications.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.3/H-0-1] MUST provide the Home, Recents, and Back functions.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.3/H-0-2] MUST send both the normal and long press event of the Back function (<a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK"><code>KEYCODE_BACK</code></a>) to the foreground application. These events MUST NOT be consumed by the system and CAN be triggerred by outside of the Android device (e.g. external hardware keyboard connected to the Android device).
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.4/H-0-1] MUST support touchscreen input.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.4/H-SR] Are STRONGLY RECOMMENDED to launch the user-selected assist app, in other words the app that implements VoiceInteractionService, or an activity handling the <a href="https://developer.android.com/reference/android/content/Intent#ACTION_ASSIST"><code>ACTION_ASSIST</code></a> on long-press of <a href="https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_MEDIA_PLAY_PAUSE"><code>KEYCODE_MEDIA_PLAY_PAUSE</code></a> or <a href="https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_HEADSETHOOK"><code>KEYCODE_HEADSETHOOK</code></a> if the foreground activity does not handle those long-press events.
      </li>
      <li>[<a href="#7_3_sensors">7.3</a>.1/H-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
      </li>
    </ul>
    <p>
      If Handheld device implementations include a 3-axis accelerometer, they:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.1/H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
      </li>
    </ul>
    <p>
      If Handheld device implementations include a gyroscope, they:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.4/H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
      </li>
    </ul>
    <p>
      Handheld device implementations that can make a voice call and indicate any value other than <code>PHONE_TYPE_NONE</code> in <code>getPhoneType</code>:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.8/H] SHOULD include a proximity sensor.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.12/H-SR] Are RECOMMENDED to support pose sensor with 6 degrees of freedom.
      </li>
      <li>[<a href="#7_4_data_connectivity">7.4</a>.3/H] SHOULD include support for Bluetooth and Bluetooth LE.
      </li>
    </ul>
    <p>
      If Handheld device implementations include a metered connection, they:
    </p>
    <ul>
      <li>[<a href="#7_4_data_connectivity">7.4</a>.7/H-1-1] MUST provide the data saver mode.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/H-0-1] MUST have at least 4 GB of non-volatile storage available for application private data (a.k.a. "/data" partition).
      </li>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/H-0-2] MUST return “true” for <code>ActivityManager.isLowRamDevice()</code> when there is less than 1GB of memory available to the kernel and userspace.
      </li>
    </ul>
    <p>
      If Handheld device implementations declare support of only a 32-bit ABI:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-1-1] The memory available to the kernel and userspace MUST be at least 416MB if the default display uses framebuffer resolutions up to qHD (e.g. FWVGA).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-2-1] The memory available to the kernel and userspace MUST be at least 592MB if the default display uses framebuffer resolutions up to HD+ (e.g. HD, WSVGA).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-3-1] The memory available to the kernel and userspace MUST be at least 896MB if the default display uses framebuffer resolutions up to FHD (e.g. WSXGA+).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-4-1] The memory available to the kernel and userspace MUST be at least 1344MB if the default display uses framebuffer resolutions up to QHD (e.g. QWXGA).
        </p>
      </li>
    </ul>
    <p>
      If Handheld device implementations declare support of 32-bit and 64-bit ABIs:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-5-1] The memory available to the kernel and userspace MUST be at least 816MB if the default display uses framebuffer resolutions up to qHD (e.g. FWVGA).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-6-1] The memory available to the kernel and userspace MUST be at least 944MB if the default display uses framebuffer resolutions up to HD+ (e.g. HD, WSVGA).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-7-1] The memory available to the kernel and userspace MUST be at least 1280MB if the default display uses framebuffer resolutions up to FHD (e.g. WSXGA+).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/H-8-1] The memory available to the kernel and userspace MUST be at least 1824MB if the default display uses framebuffer resolutions up to QHD (e.g. QWXGA).
        </p>
      </li>
    </ul>
    <p>
      Note that the "memory available to the kernel and userspace" above refers to the memory space provided in addition to any memory already dedicated to hardware components such as radio, video, and so on that are not under the kernel’s control on device implementations.
    </p>
    <p>
      If Handheld device implementations include less than or equal to 1GB of memory available to the kernel and userspace, they:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/H-9-1] MUST declare the feature flag <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_LOW"><code>android.hardware.ram.low</code></a>.
      </li>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/H-9-2] MUST have at least 1.1 GB of non-volatile storage for application private data (a.k.a. "/data" partition).
      </li>
    </ul>
    <p>
      If Handheld device implementations include more than 1GB of memory available to the kernel and userspace, they:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/H-10-1] MUST have at least 4GB of non-volatile storage available for application private data (a.k.a. "/data" partition).
      </li>
      <li>SHOULD declare the feature flag <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_NORMAL"><code>android.hardware.ram.normal</code></a>.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.2/H-0-1] MUST NOT provide an application shared storage smaller than 1 GiB.
      </li>
      <li>[<a href="#7_7_usb">7.7</a>.1/H] SHOULD include a USB port supporting peripheral mode.
      </li>
    </ul>
    <p>
      If handheld device implementations include a USB port supporting peripheral mode, they:
    </p>
    <ul>
      <li>[<a href="#7_7_usb">7.7</a>.1/H-1-1] MUST implement the Android Open Accessory (AOA) API.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#7_8_audio">7.8</a>.1/H-0-1] MUST include a microphone.
      </li>
      <li>[<a href="#7_8_audio">7.8</a>.2/H-0-1] MUST have an audio output and declare <code>android.hardware.audio.output</code>.
      </li>
    </ul>
    <p>
      If Handheld device implementations are capable of meeting all the performance requirements for supporting VR mode and include support for it, they:
    </p>
    <ul>
      <li>[<a href="#7_9_virtual_reality">7.9</a>.1/H-1-1] MUST declare the <code>android.hardware.vr.high_performance</code> feature flag.
      </li>
      <li>[<a href="#7_9_virtual_reality">7.9</a>.1/H-1-2] 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>.
      </li>
    </ul>
    <h4 id="2_2_2_multimedia">
      2.2.2. Multimedia
    </h4>
    <p>
      Handheld device implementations MUST support the following audio encoding:
    </p>
    <ul>
      <li>[<a href="#5_1_media_codecs">5.1</a>.1/H-0-1] AMR-NB
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>.1/H-0-2] AMR-WB
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>.1/H-0-3] MPEG-4 AAC Profile (AAC LC)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>.1/H-0-4] MPEG-4 HE AAC Profile (AAC+)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>.1/H-0-5] AAC ELD (enhanced low delay AAC)
      </li>
    </ul>
    <p>
      Handheld device implementations MUST support the following audio decoding:
    </p>
    <ul>
      <li>[<a href="#5_1_media_codecs">5.1</a>.2/H-0-1] AMR-NB
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>.2/H-0-2] AMR-WB
      </li>
    </ul>
    <p>
      Handheld device implementations MUST support the following video encoding and make it available to third-party applications:
    </p>
    <ul>
      <li>[<a href="#5_2_video_encoding">5.2</a>/H-0-1] H.264 AVC
      </li>
      <li>[<a href="#5_2_video_encoding">5.2</a>/H-0-2] VP8
      </li>
    </ul>
    <p>
      Handheld device implementations MUST support the following video decoding:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3</a>/H-0-1] H.264 AVC
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/H-0-2] H.265 HEVC
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/H-0-3] MPEG-4 SP
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/H-0-4] VP8
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/H-0-5] VP9
      </li>
    </ul>
    <h4 id="2_2_3_software">
      2.2.3. Software
    </h4>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#3_2_3_1_core_application_intents">3.2.3.1</a>/H-0-1] MUST have an application that handles the <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT"><code>ACTION_GET_CONTENT</code></a>, <a href="https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_DOCUMENT"><code>ACTION_OPEN_DOCUMENT</code></a>, <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_OPEN_DOCUMENT_TREE"><code>ACTION_OPEN_DOCUMENT_TREE</code></a>, and <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_CREATE_DOCUMENT"><code>ACTION_CREATE_DOCUMENT</code></a> intents as described in the SDK documents, and provide the user affordance to access the document provider data by using <a href="https://developer.android.com/reference/android/provider/DocumentsProvider"><code>DocumentsProvider</code></a> API.
      </li>
      <li>[<a href="#3_4_web_compatibility">3.4</a>.1/H-0-1] MUST provide a complete implementation of the <code>android.webkit.Webview</code> API.
      </li>
      <li>[<a href="#3_4_web_compatibility">3.4</a>.2/H-0-1] MUST include a standalone Browser application for general user web browsing.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.1/H-SR] Are STRONGLY RECOMMENDED to implement a default launcher that supports in-app pinning of shortcuts, widgets and <a href="https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html#widgetFeatures">widgetFeatures</a>.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.1/H-SR] Are STRONGLY RECOMMENDED to implement a default launcher that provides quick access to the additional shortcuts provided by third-party apps through the <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html">ShortcutManager</a> API.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.1/H-SR] Are STRONGLY RECOMMENDED to include a default launcher app that shows badges for the app icons.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.2/H-SR] Are STRONGLY RECOMMENDED to support third-party app widgets.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-0-1] MUST allow third-party apps to notify users of notable events through the <a href="https://developer.android.com/reference/android/app/Notification.html"><code>Notification</code></a> and <a href="https://developer.android.com/reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> API classes.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-0-2] MUST support rich notifications.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-0-3] MUST support heads-up notifications.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-0-4] MUST include a notification shade, providing the user the ability to directly control (e.g. reply, snooze, dismiss, block) the notifications through user affordance such as action buttons or the control panel as implemented in the AOSP.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-0-5] MUST display the choices provided through <a href="https://developer.android.com/reference/android/app/RemoteInput.Builder.html#setChoices%28java.lang.CharSequence[]%29"><code>RemoteInput.Builder setChoices()</code></a> in the notification shade.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-SR] Are STRONGLY RECOMMENDED to display the first choice provided through <a href="https://developer.android.com/reference/android/app/RemoteInput.Builder.html#setChoices%28java.lang.CharSequence[]%29"><code>RemoteInput.Builder setChoices()</code></a> in the notification shade without additional user interaction.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.3/H-SR] Are STRONGLY RECOMMENDED to display all the choices provided through <a href="https://developer.android.com/reference/android/app/RemoteInput.Builder.html#setChoices%28java.lang.CharSequence[]%29"><code>RemoteInput.Builder setChoices()</code></a> in the notification shade when the user expands all notifications in the notification shade.
      </li>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.4/H-SR] Are STRONGLY RECOMMENDED to 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>.
      </li>
    </ul>
    <p>
      If Handheld device implementations support Assist action, they:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.4/H-SR] Are STRONGLY RECOMMENDED to use long press on <code>HOME</code> key as the designated interaction to launch the assist app as described in <a href="#7_2_3_navigation_keys">section 7.2.3</a>. MUST launch the user-selected assist app, in other words the app that implements <a href="https://developer.android.com/reference/android/service/voice/VoiceInteractionService"><code>VoiceInteractionService</code></a> , or an activity handling the <code>ACTION_ASSIST</code> intent.
      </li>
    </ul>
    <p>
      If Android Handheld device implementations support a lock screen, they:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.10/H-1-1] MUST display the Lock screen Notifications including the Media Notification Template.
      </li>
    </ul>
    <p>
      If Handheld device implementations support a secure lock screen, they:
    </p>
    <ul>
      <li>[<a href="#3_9_device_administration">3.9</a>/H-1-1] 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.
      </li>
      <li>[<a href="#3_9_device_administration">3.9</a>/H-1-2] MUST declare the support of managed profiles via the <code>android.software.managed_users</code> feature flag, except when the device is configured so that it would <a href="http://developer.android.com/reference/android/app/ActivityManager.html#isLowRamDevice%28%29">report</a> itself as a low RAM device or so that it allocates internal (non-removable) storage as shared storage.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#3_10_accessibility">3.10</a>/H-0-1] MUST support third-party accessibility services.
      </li>
      <li>[<a href="#3_10_accessibility">3.10</a>/H-SR] Are STRONGLY RECOMMENDED to preload accessibility services on the device comparable with or exceeding functionality of the Switch Access and TalkBack (for languages supported by the preinstalled Text-to-speech engine) accessibility services as provided in the <a href="https://github.com/google/talkback">talkback open source project</a>.
      </li>
      <li>[<a href="#3_11_text_to_speech">3.11</a>/H-0-1] MUST support installation of third-party TTS engines.
      </li>
      <li>[<a href="#3_11_text_to_speech">3.11</a>/H-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the languages available on the device.
      </li>
      <li>[<a href="#3_13_quick_settings">3.13</a>/H-SR] Are STRONGLY RECOMMENDED to include a Quick Settings UI component.
      </li>
    </ul>
    <p>
      If Android handheld device implementations declare <code>FEATURE_BLUETOOTH</code> or <code>FEATURE_WIFI</code> support, they:
    </p>
    <ul>
      <li>[<a href="#3_16_companion_device_pairing">3.16</a>/H-1-1] MUST support the companion device pairing feature.
      </li>
    </ul>
    <h4 id="2_2_4_performance_and_power">
      2.2.4. Performance and Power
    </h4>
    <ul>
      <li>[<a href="#8_1_user_experience_consistency">8.1</a>/H-0-1] <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>[<a href="#8_1_user_experience_consistency">8.1</a>/H-0-2] <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>[<a href="#8_1_user_experience_consistency">8.1</a>/H-0-3] <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>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/H-0-1] MUST ensure a sequential write performance of at least 5 MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/H-0-2] MUST ensure a random write performance of at least 0.5 MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/H-0-3] MUST ensure a sequential read performance of at least 15 MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/H-0-4] MUST ensure a random read performance of at least 3.5 MB/s.
      </li>
    </ul>
    <p>
      If Handheld device implementations include features to improve device power management that are included in AOSP or extend the features that are included in AOSP, they:
    </p>
    <ul>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/H-1-1] MUST provide user affordance to enable and disable the battery saver feature.
      </li>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/H-1-2] MUST provide user affordance to display all apps that are exempted from App Standby and Doze power-saving modes.
      </li>
    </ul>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/H-0-1] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/H-0-2] MUST report all power consumption values in milliampere hours (mAh).
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/H-0-3] 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>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/H-0-4] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/H] SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
      </li>
    </ul>
    <p>
      If Handheld device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/H-1-1] MUST honor the <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY"><code>android.intent.action.POWER_USAGE_SUMMARY</code></a> intent and display a settings menu that shows this power usage.
      </li>
    </ul>
    <h4 id="2_2_5_security_model">
      2.2.5. Security Model
    </h4>
    <p>
      Handheld device implementations:
    </p>
    <ul>
      <li>[<a href="#9_1_permissions">9.1</a>/H-0-1] MUST allow third-party apps to access the usage statistics via the <code>android.permission.PACKAGE_USAGE_STATS</code> permission and provide a user-accessible mechanism to grant or revoke access to such apps in response to the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION&amp;lowbar;USAGE&amp;lowbar;ACCESS&amp;lowbar;SETTINGS"><code>android.settings.ACTION_USAGE_ACCESS_SETTINGS</code></a> intent.
      </li>
    </ul>
    <p>
      When Handheld device implementations support a secure lock screen, they:
    </p>
    <ul>
      <li>[<a href="#9_11_permissions">9.11</a>/H-1-1] MUST allow the user to choose the shortest sleep timeout, that is a transition time from the unlocked to the locked state, as 15 seconds or less.
      </li>
      <li>[<a href="#9_11_permissions">9.11</a>/H-1-2] MUST provide user affordance to hide notifications and disable all forms of authentication except for the primary authentication described in <a href="#9_11_1_secure-lock-screen">9.11.1 Secure Lock Screen</a>. The AOSP meets the requirement as lockdown mode.
      </li>
    </ul>
    <h3 id="2_3_television_requirements">
      2.3. Television Requirements
    </h3>
    <p>
      An <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”).
    </p>
    <p>
      Android device implementations are classified as a Television if they meet all the following criteria:
    </p>
    <ul>
      <li>Have provided a mechanism to remotely control the rendered user interface on the display that might sit ten feet away from the user.
      </li>
      <li>Have an embedded screen display with the diagonal length larger than 24 inches OR include a video output port, such as VGA, HDMI, DisplayPort, or a wireless port for display.
      </li>
    </ul>
    <p>
      The additional requirements in the rest of this section are specific to Android Television device implementations.
    </p>
    <h4 id="2_3_1_hardware">
      2.3.1. Hardware
    </h4>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#7_2_input_devices">7.2</a>.2/T-0-1] MUST support <a href="https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD">D-pad</a>.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.3/T-0-1] MUST provide the Home and Back functions.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.3/T-0-2] MUST send both the normal and long press event of the Back function (<a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK"><code>KEYCODE_BACK</code></a>) to the foreground application.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.6.1/T-0-1] MUST include support for game controllers and declare the <code>android.hardware.gamepad</code> feature flag.
      </li>
      <li>[<a href="#7_2_input_devices">7.2</a>.7/T] SHOULD provide a remote control from which users can access <a href="#7_2_2_non-touch_navigation">non-touch navigation</a> and <a href="#7_2_3_navigation_keys">core navigation keys</a> inputs.
      </li>
    </ul>
    <p>
      If Television device implementations include a gyroscope, they:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.4/T-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#7_4_data_connectivity">7.4</a>.3/T-0-1] MUST support Bluetooth and Bluetooth LE.
      </li>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/T-0-1] MUST have at least 4 GB of non-volatile storage available for application private data (a.k.a. "/data" partition).
      </li>
    </ul>
    <p>
      If Television device implementations include a USB port that supports host mode, they:
    </p>
    <ul>
      <li>[<a href="#7_5_camera">7.5</a>.3/T-1-1] MUST include support for an external camera that connects through this USB port but is not necessarily always connected.
      </li>
    </ul>
    <p>
      If TV device implementations are 32-bit:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/T-1-1] The memory available to the kernel and userspace MUST be at least 896MB if any of the following densities are used:
        </p>
        <ul>
          <li>400dpi or higher on small/normal screens
          </li>
          <li>xhdpi or higher on large screens
          </li>
          <li>tvdpi or higher on extra large screens
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If TV device implementations are 64-bit:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/T-2-1] The memory available to the kernel and userspace MUST be at least 1280MB if any of the following densities are used:
        </p>
        <ul>
          <li>400dpi or higher on small/normal screens
          </li>
          <li>xhdpi or higher on large screens
          </li>
          <li>tvdpi or higher on extra large screens
          </li>
        </ul>
      </li>
    </ul>
    <p>
      Note that the "memory available to the kernel and userspace" above refers to the memory space provided in addition to any memory already dedicated to hardware components such as radio, video, and so on that are not under the kernel’s control on device implementations.
    </p>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#7_8_audio">7.8</a>.1/T] SHOULD include a microphone.
      </li>
      <li>[<a href="#7_8_audio">7.8</a>.2/T-0-1] MUST have an audio output and declare <code>android.hardware.audio.output</code>.
      </li>
    </ul>
    <h4 id="2_3_2_multimedia">
      2.3.2. Multimedia
    </h4>
    <p>
      Television device implementations MUST support the following audio encoding formats:
    </p>
    <ul>
      <li>[<a href="#5_1_media_codecs">5.1</a>/T-0-1] MPEG-4 AAC Profile (AAC LC)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>/T-0-2] MPEG-4 HE AAC Profile (AAC+)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>/T-0-3] AAC ELD (enhanced low delay AAC)
      </li>
    </ul>
    <p>
      Television device implementations MUST support the following video encoding formats:
    </p>
    <ul>
      <li>[<a href="#5_2_video_encoding">5.2</a>/T-0-1] H.264
      </li>
      <li>[<a href="#5_2_video_encoding">5.2</a>/T-0-2] VP8
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#5_2_video_encoding">5.2</a>.2/T-SR] Are STRONGLY RECOMMENDED to support H.264 encoding of 720p and 1080p resolution videos at 30 frames per second.
      </li>
    </ul>
    <p>
      Television device implementations MUST support the following video decoding formats:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.3</a>/T-0-1] MPEG-4 SP
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.4</a>/T-0-2] H.264 AVC
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.5</a>/T-0-3] H.265 HEVC
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.6</a>/T-0-4] VP8
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.7</a>/T-0-5] VP9
      </li>
    </ul>
    <p>
      Television device implementations are STRONGLY RECOMMENDED to support the following video decoding formats:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.1</a>/T-SR] MPEG-2
      </li>
    </ul>
    <p>
      Television device implementations MUST support H.264 decoding, as detailed in Section 5.3.4, at standard video frame rates and resolutions up to and including:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.4</a>.4/T-1-1] HD 1080p at 60 frames per second with Basline Profile
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.4</a>.4/T-1-2] HD 1080p at 60 frames per second with Main Profile
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.4</a>.4/T-1-3] HD 1080p at 60 frames per second with High Profile Level 4.2
      </li>
    </ul>
    <p>
      Television device implementations with H.265 hardware decoders MUST support H.265 decoding, as detailed in Section 5.3.5, at standard video frame rates and resolutions up to and including:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.5</a>.4/T-1-1] HD 1080p at 60 frames per second with Main Profile Level 4.1
      </li>
    </ul>
    <p>
      If Television device implementations with H.265 hardware decoders support H.265 decoding and the UHD decoding profile, they:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.5</a>.5/T-2-1] MUST support the UHD decoding profile at 60 frames per second with Main10 Level 5 Main Tier profile.
      </li>
    </ul>
    <p>
      Television device implementations MUST support VP8 decoding, as detailed in Section 5.3.6, at standard video frame rates and resolutions up to and including:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.6</a>.4/T-1-1] HD 1080p at 60 frames per second decoding profile
      </li>
    </ul>
    <p>
      Television device implementations with VP9 hardware decoders MUST support VP9 decoding, as detailed in Section 5.3.7, at standard video frame rates and resolutions up to and including:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.7</a>.4/T-1-1] HD 1080p at 60 frames per second with profile 0 (8 bit colour depth)
      </li>
    </ul>
    <p>
      If Television device implementations with VP9 hardware decoders support VP9 decoding and the UHD decoding profile, they:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3.7</a>.5/T-2-1] MUST support the UHD decoding profile at 60 frames per second with profile 0 (8 bit colour depth).
      </li>
      <li>[<a href="#5_3_video_decoding">5.3.7</a>.5/T-2-1] Are STRONGLY RECOMMENDED to support the UHD decoding profile at 60 frames per second with profile 2 (10 bit colour depth).
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#5_5_audio_playback">5.5</a>.3/T-0-1] 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).
      </li>
      <li>[<a href="#5_8_secure_media">5.8</a>/T-0-1] MUST set the HDMI output mode to select the maximum resolution that can be supported with either 50Hz or 60Hz refresh rate for all wired displays.
      </li>
      <li>[<a href="#5_8_secure_media">5.8</a>/T-SR] Are STRONGLY RECOMMENDED to provide a user configurable HDMI refresh rate selector for all wired displays.
      </li>
      <li>[<a href="#5_8_secure_media">5.8</a>/T-SR] Are STRONGLY RECOMMENDED to support simultaneous decoding of secure streams. At minimum, simultaneous decoding of two steams is STRONGLY RECOMMENDED.
      </li>
      <li>[<a href="#5_8_secure_media">5.8</a>] SHOULD set the HDMI output mode refresh rate to either 50Hz or 60Hz, depending on the video refresh rate for the region the device is sold in for all wired displays.
      </li>
    </ul>
    <p>
      If Television device implementations support UHD decoding and have support for external displays, they:
    </p>
    <ul>
      <li>[<a href="#5_8_secure_media">5.8</a>/T-1-1] MUST support HDCP 2.2.
      </li>
    </ul>
    <p>
      If Television device implementations do not support UHD decoding but have support for external displays, they:
    </p>
    <ul>
      <li>[<a href="#5_8_secure_media">5.8</a>/T-2-1] MUST support HDCP 1.4
      </li>
    </ul>
    <h4 id="2_3_3_software">
      2.3.3. Software
    </h4>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#3_0_intro">3</a>/T-0-1] MUST declare the features <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK"><code>android.software.leanback</code></a> and <code>android.hardware.type.television</code>.
      </li>
      <li>[<a href="#3_4_web_compatibility">3.4</a>.1/T-0-1] MUST provide a complete implementation of the <code>android.webkit.Webview</code> API.
      </li>
    </ul>
    <p>
      If Android Television device implementations support a lock screen,they:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.10/T-1-1] MUST display the Lock screen Notifications including the Media Notification Template.
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.14/T-SR] Are STRONGLY RECOMMENDED to support picture-in-picture (PIP) mode multi-window.
      </li>
      <li>[<a href="#3_10_accessibility">3.10</a>/T-0-1] MUST support third-party accessibility services.
      </li>
      <li>[<a href="#3_10_accessibility">3.10</a>/T-SR] Are STRONGLY RECOMMENDED to preload accessibility services on the device comparable with or exceeding functionality of the Switch Access and TalkBack (for languages supported by the preinstalled Text-to-speech engine) accessibility services as provided in the <a href="https://github.com/google/talkback">talkback open source project</a>.
      </li>
    </ul>
    <p>
      If Television device implementations report the feature <code>android.hardware.audio.output</code>, they:
    </p>
    <ul>
      <li>[<a href="#3_11_text_to_speech">3.11</a>/T-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the languages available on the device.
      </li>
      <li>[<a href="#3_11_text_to_speech">3.11</a>/T-1-1] MUST support installation of third-party TTS engines.
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#3_12_tv-input-framework">3.12</a>/T-0-1] MUST support TV Input Framework.
      </li>
    </ul>
    <h4 id="2_3_4_performance_and_power">
      2.3.4. Performance and Power
    </h4>
    <ul>
      <li>[<a href="#8_1_user_experience_consistency">8.1</a>/T-0-1] <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>[<a href="#8_2_file_io_access_performance">8.2</a>/T-0-1] MUST ensure a sequential write performance of at least 5MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/T-0-2] MUST ensure a random write performance of at least 0.5MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/T-0-3] MUST ensure a sequential read performance of at least 15MB/s.
      </li>
      <li>[<a href="#8_2_file_io_access_performance">8.2</a>/T-0-4] MUST ensure a random read performance of at least 3.5MB/s.
      </li>
    </ul>
    <p>
      If Television device implementations include features to improve device power management that are included in AOSP or extend the features that are included in AOSP, they:
    </p>
    <ul>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/T-1-1] MUST provide user affordance to enable and disable the battery saver feature.
      </li>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/T-1-2] MUST provide user affordance to display all apps that are exempted from App Standby and Doze power-saving modes.
      </li>
    </ul>
    <p>
      Television device implementations:
    </p>
    <ul>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/T-0-1] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/T-0-2] MUST report all power consumption values in milliampere hours (mAh).
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/T-0-3] 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>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/T] SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/T-0-4] 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>
    </ul>
    <h3 id="2_4_watch_requirements">
      2.4. Watch Requirements
    </h3>
    <p>
      An <strong>Android Watch device</strong> refers to an Android device implementation intended to be worn on the body, perhaps on the wrist.
    </p>
    <p>
      Android device implementations are classified as a Watch if they meet all the following criteria:
    </p>
    <ul>
      <li>Have a screen with the physical diagonal length in the range from 1.1 to 2.5 inches.
      </li>
      <li>Have a mechanism provided to be worn on the body.
      </li>
    </ul>
    <p>
      The additional requirements in the rest of this section are specific to Android Watch device implementations.
    </p>
    <h4 id="2_4_1_hardware">
      2.4.1. Hardware
    </h4>
    <p>
      Watch device implementations:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_1_display_and_graphics">7.1</a>.1.1/W-0-1] MUST have a screen with the physical diagonal size in the range from 1.1 to 2.5 inches.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_2_input_devices">7.2</a>.3/W-0-1] 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>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_2_input_devices">7.2</a>.4/W-0-1] MUST support touchscreen input.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_3_sensors">7.3</a>.1/W-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_4_data_connectivity">7.4</a>.3/W-0-1] MUST support Bluetooth.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/W-0-1] MUST have at least 1 GB of non-volatile storage available for application private data (a.k.a. "/data" partition).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/W-0-2] MUST have at least 416 MB memory available to the kernel and userspace.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_8_audio">7.8</a>.1/W-0-1] MUST include a microphone.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_8_audio">7.8</a>.2/W] MAY but SHOULD NOT have audio output.
        </p>
      </li>
    </ul>
    <h4 id="2_4_2_multimedia">
      2.4.2. Multimedia
    </h4>
    <p>
      No additional requirements.
    </p>
    <h4 id="2_4_3_software">
      2.4.3. Software
    </h4>
    <p>
      Watch device implementations:
    </p>
    <ul>
      <li>[<a href="#3_0_intro">3</a>/W-0-1] MUST declare the feature <code>android.hardware.type.watch</code>.
      </li>
      <li>[<a href="#3_0_intro">3</a>/W-0-2] 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>
      Watch device implementations:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.4/W-SR] Are STRONGLY RECOMMENDED to 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>.
      </li>
    </ul>
    <p>
      Watch device implementations that declare the <code>android.hardware.audio.output</code> feature flag:
    </p>
    <ul>
      <li>[<a href="#3_10_accessibility">3.10</a>/W-1-1] MUST support third-party accessibility services.
      </li>
      <li>[<a href="#3_10_accessibility">3.10</a>/W-SR] Are STRONGLY RECOMMENDED to preload accessibility services on the device comparable with or exceeding functionality of the Switch Access and TalkBack (for languages supported by the preinstalled Text-to-speech engine) accessibility services as provided in the <a href="https://github.com/google/talkback">talkback open source project</a>.
      </li>
    </ul>
    <p>
      If Watch device implementations report the feature android.hardware.audio.output, they:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#3_11_text_to_speech">3.11</a>/W-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the languages available on the device.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_11_text_to_speech">3.11</a>/W-0-1] MUST support installation of third-party TTS engines.
        </p>
      </li>
    </ul>
    <h4 id="2_4_4_performance_and_power">
      2.4.4. Performance and Power
    </h4>
    <p>
      If Watch device implementations include features to improve device power management that are included in AOSP or extend the features that are included in AOSP, they:
    </p>
    <ul>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/W-SR] Are STRONGLY RECOMMENDED to provide user affordance to display all apps that are exempted from App Standby and Doze power-saving modes.
      </li>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/W-SR] Are STRONGLY RECOMMENDED to provide user affordance to enable and disable the battery saver feature.
      </li>
    </ul>
    <p>
      Watch device implementations:
    </p>
    <ul>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/W-0-1] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/W-0-2] MUST report all power consumption values in milliampere hours (mAh).
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/W-0-3] 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>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/W-0-4] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/W] SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
      </li>
    </ul>
    <h3 id="2_5_automotive_requirements">
      2.5. Automotive Requirements
    </h3>
    <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.
    </p>
    <p>
      Android device implementations are classified as an Automotive if they declare the feature <code>android.hardware.type.automotive</code> or meet all the following criteria.
    </p>
    <ul>
      <li>Are embedded as part of, or pluggable to, an automotive vehicle.
      </li>
      <li>Are using a screen in the driver's seat row as the primary display.
      </li>
    </ul>
    <p>
      The additional requirements in the rest of this section are specific to Android Automotive device implementations.
    </p>
    <h4 id="2_5_1_hardware">
      2.5.1. Hardware
    </h4>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.1.1/A-0-1] MUST have a screen at least 6 inches in physical diagonal size.
      </li>
      <li>
        <p>
          [<a href="#7_1_display_and_graphics">7.1</a>.1.1/A-0-2] MUST have a screen size layout of at least 750 dp x 480 dp.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_2_input_devices">7.2</a>.3/A-0-1] MUST provide the Home function and MAY provide Back and Recent functions.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_2_input_devices">7.2</a>.3/A-0-2] MUST send both the normal and long press event of the Back function (<a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK"><code>KEYCODE_BACK</code></a>) to the foreground application.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_3_sensors">7.3</a>.1/A-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
        </p>
      </li>
    </ul>
    <p>
      If Automotive device implementations include a 3-axis accelerometer, they:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.1/A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
      </li>
      <li>[<a href="#7_3_sensors">7.3</a>.1/A-1-2] MUST comply with the Android <a href="http://source.android.com/devices/sensors/sensor-types.html#auto_axes">car sensor coordinate system</a>.
      </li>
    </ul>
    <p>
      If Automotive device implementations include a GPS/GNSS receiver and report the capability to applications through the <code>android.hardware.location.gps</code> feature flag:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.3/A-1-1] GNSS technology generation MUST be the year "2017" or newer.
      </li>
    </ul>
    <p>
      If Automotive device implementations include a gyroscope, they:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.4/A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.11/A-0-1] MUST provide current gear as <code>SENSOR_TYPE_GEAR</code>.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_3_sensors">7.3</a>.11.2/A-0-1] MUST support day/night mode defined as <code>SENSOR_TYPE_NIGHT</code>.
      </li>
      <li>[<a href="#7_3_sensors">7.3</a>.11.2/A-0-2] The value of the <code>SENSOR_TYPE_NIGHT</code> flag MUST be consistent with dashboard day/night mode and SHOULD be based on ambient light sensor input.
      </li>
      <li>
        <p>
          The underlying ambient light sensor MAY be the same as <a href="#7_3_7_photometer">Photometer</a>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_3_sensors">7.3</a>.11.4/A-0-1] MUST provide vehicle speed as defined by <code>SENSOR_TYPE_CAR_SPEED</code>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_3_sensors">7.3</a>.11.5/A-0-1] MUST provide parking brake status as defined by <code>SENSOR_TYPE_PARKING_BRAKE</code>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_4_data_connectivity">7.4</a>.3/A-0-1] MUST support Bluetooth and SHOULD support Bluetooth LE.
        </p>
      </li>
      <li>[<a href="#7_4_data_connectivity">7.4</a>.3/A-0-2] Android Automotive implementations MUST support the following Bluetooth profiles:
        <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>
      </li>
      <li>
        <p>
          [<a href="#7_4_data_connectivity">7.4</a>.3/A-SR] Are STRONGLY RECOMMENDED to support Message Access Profile (MAP).
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_4_data_connectivity">7.4</a>.5/A] SHOULD include support for cellular network-based data connectivity.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_4_data_connectivity">7.4</a>.5/A] MAY use the System API <code>NetworkCapabilities#NET_CAPABILITY_OEM_PAID</code> constant for networks that should be available to system apps.
        </p>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-0-1] MUST have at least 4 GB of non-volatile storage available for application private data (a.k.a. "/data" partition).
        </p>
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/A] SHOULD format the data partition to offer improved performance and longevity on flash storage, for example using <code>f2fs</code> file-system.
      </li>
    </ul>
    <p>
      If Automotive device implementations provide shared external storage via a portion of the internal non-removable storage, they:
    </p>
    <ul>
      <li>[<a href="#7_6_memory_and_storage">7.6</a>.1/A-SR] Are STRONGLY RECOMMENDED to reduce I/O overhead on operations performed on the external storage, for example by using <code>SDCardFS</code>.
      </li>
    </ul>
    <p>
      If Automotive device implementations are 32-bit:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-1-1] The memory available to the kernel and userspace MUST be at least 512MB if any of the following densities are used:
        </p>
        <ul>
          <li>280dpi or lower on small/normal screens
          </li>
          <li>ldpi or lower on extra large screens
          </li>
          <li>mdpi or lower on large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-1-2] The memory available to the kernel and userspace MUST be at least 608MB if any of the following densities are used:
        </p>
        <ul>
          <li>xhdpi or higher on small/normal screens
          </li>
          <li>hdpi or higher on large screens
          </li>
          <li>mdpi or higher on extra large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-1-3] The memory available to the kernel and userspace MUST be at least 896MB if any of the following densities are used:
        </p>
        <ul>
          <li>400dpi or higher on small/normal screens
          </li>
          <li>xhdpi or higher on large screens
          </li>
          <li>tvdpi or higher on extra large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-1-4] The memory available to the kernel and userspace MUST be at least 1344MB if any of the following densities are used:
        </p>
        <ul>
          <li>560dpi or higher on small/normal screens
          </li>
          <li>400dpi or higher on large screens
          </li>
          <li>xhdpi or higher on extra large screens
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If Automotive device implementations are 64-bit:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-2-1] The memory available to the kernel and userspace MUST be at least 816MB if any of the following densities are used:
        </p>
        <ul>
          <li>280dpi or lower on small/normal screens
          </li>
          <li>ldpi or lower on extra large screens
          </li>
          <li>mdpi or lower on large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-2-2] The memory available to the kernel and userspace MUST be at least 944MB if any of the following densities are used:
        </p>
        <ul>
          <li>xhdpi or higher on small/normal screens
          </li>
          <li>hdpi or higher on large screens
          </li>
          <li>mdpi or higher on extra large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-2-3] The memory available to the kernel and userspace MUST be at least 1280MB if any of the following densities are used:
        </p>
        <ul>
          <li>400dpi or higher on small/normal screens
          </li>
          <li>xhdpi or higher on large screens
          </li>
          <li>tvdpi or higher on extra large screens
          </li>
        </ul>
      </li>
      <li>
        <p>
          [<a href="#7_6_memory_and_storage">7.6</a>.1/A-2-4] The memory available to the kernel and userspace MUST be at least 1824MB if any of the following densities are used:
        </p>
        <ul>
          <li>560dpi or higher on small/normal screens
          </li>
          <li>400dpi or higher on large screens
          </li>
          <li>xhdpi or higher on extra large screens
          </li>
        </ul>
      </li>
    </ul>
    <p>
      Note that the "memory available to the kernel and userspace" above refers to the memory space provided in addition to any memory already dedicated to hardware components such as radio, video, and so on that are not under the kernel’s control on device implementations.
    </p>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_7_usb">7.7</a>.1/A] SHOULD include a USB port supporting peripheral mode.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_8_audio">7.8</a>.1/A-0-1] MUST include a microphone.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#7_8_audio">7.8</a>.2/A-0-1] MUST have an audio output and declare <code>android.hardware.audio.output</code>.
      </li>
    </ul>
    <h4 id="2_5_2_multimedia">
      2.5.2. Multimedia
    </h4>
    <p>
      Automotive device implementations MUST support the following audio encoding:
    </p>
    <ul>
      <li>[<a href="#5_1_media_codecs">5.1</a>/A-0-1] MPEG-4 AAC Profile (AAC LC)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>/A-0-2] MPEG-4 HE AAC Profile (AAC+)
      </li>
      <li>[<a href="#5_1_media_codecs">5.1</a>/A-0-3] AAC ELD (enhanced low delay AAC)
      </li>
    </ul>
    <p>
      Automotive device implementations MUST support the following video encoding:
    </p>
    <ul>
      <li>[<a href="#5_2_video_encoding">5.2</a>/A-0-1] H.264 AVC
      </li>
      <li>[<a href="#5_2_video_encoding">5.2</a>/A-0-2] VP8
      </li>
    </ul>
    <p>
      Automotive device implementations MUST support the following video decoding:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3</a>/A-0-1] H.264 AVC
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/A-0-2] MPEG-4 SP
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/A-0-3] VP8
      </li>
      <li>[<a href="#5_3_video_decoding">5.3</a>/A-0-4] VP9
      </li>
    </ul>
    <p>
      Automotive device implementations are STRONGLY RECOMMENDED to support the following video decoding:
    </p>
    <ul>
      <li>[<a href="#5_3_video_decoding">5.3</a>/A-SR] H.265 HEVC
      </li>
    </ul>
    <h4 id="2_5_3_software">
      2.5.3. Software
    </h4>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>
        <p>
          [<a href="#3_0_intro">3</a>/A-0-1] MUST declare the feature <code>android.hardware.type.automotive</code>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_0_intro">3</a>/A-0-2] MUST support uiMode = <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR"><code>UI_MODE_TYPE_CAR</code></a>.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_0_intro">3</a>/A-0-3] MUST support all public APIs in the <a href="https://developer.android.com/reference/android/car/package-summary"><code>android.car.*</code></a> namespace.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_4_web_compatibility">3.4</a>.1/A-0-1] MUST provide a complete implementation of the <code>android.webkit.Webview</code> API.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_8_user_interface_compatibility">3.8</a>.3/A-0-1] MUST display notifications that use the <a href="https://developer.android.com/reference/android/app/Notification.CarExtender.html"><code>Notification.CarExtender</code></a> API when requested by third-party applications.
        </p>
      </li>
      <li>
        <p>
          [<a href="#3_8_user_interface_compatibility">3.8</a>.4/A-SR] Are Strongly Recommended to 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>
      </li>
      <li>
        <p>
          [<a href="#3_13_quick_settings">3.13</a>/A-SR] Are STRONGLY RECOMMENDED to include a Quick Settings UI component.
        </p>
      </li>
    </ul>
    <p>
      If Automotive device implementations include a push-to-talk button, they:
    </p>
    <ul>
      <li>[<a href="#3_8_user_interface_compatibility">3.8</a>.4/A-1-1] MUST use a short press of the push-to-talk button as the designated interaction to launch the user-selected assist app, in other words the app that implements <a href="https://developer.android.com/reference/android/service/voice/VoiceInteractionService"><code>VoiceInteractionService</code></a>.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#3_14_media_ui">3.14</a>/A-0-1] MUST include a UI framework to support third-party apps using the media APIs as described in section <a href="#3_14_media_ui">3.14</a>.
      </li>
    </ul>
    <h4 id="2_5_4_performance_and_power">
      2.5.4. Performance and Power
    </h4>
    <p>
      If Automotive device implementations include features to improve device power management that are included in AOSP or extend the features that are included in AOSP, they:
    </p>
    <ul>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/A-1-1] MUST provide user affordance to enable and disable the battery saver feature.
      </li>
      <li>[<a href="#8_3_power_saving_modes">8.3</a>/A-1-2] MUST provide user affordance to display all apps that are exempted from App Standby and Doze power-saving modes.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#8.2_File%20I/O%20Access%20Performance">8.2</a>/A-0-1] MUST report the number of bytes read and written to non-volatile storage per each process's UID so the stats are available to developers through System API <code>android.car.storagemonitoring.CarStorageMonitoringManager</code>. The Android Open Source Project meets the requirement through the <code>uid_sys_stats</code> kernel module.
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/A-0-1] 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>[<a href="#8_4_power_consumption_accounting">8.4</a>/A-0-2] MUST report all power consumption values in milliampere hours (mAh).
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/A-0-3] 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>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/A] SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
      </li>
      <li>[<a href="#8_4_power_consumption_accounting">8.4</a>/A-0-4] 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>
    </ul>
    <h4 id="2_5_5_security_model">
      2.5.5. Security Model
    </h4>
    <p>
      If Automotive device implementations support multiple users, they:
    </p>
    <ul>
      <li>[<a href="#9_5_multi_user_support">9.5</a>/A-1-1] MUST include a guest account that allows all functions provided by the vehicle system without requiring a user to log in.
      </li>
    </ul>
    <p>
      If Automotive device implementations support a secure lock screen, they:
    </p>
    <ul>
      <li>[<a href="#9_9_full_disk_encryption">9.9</a>.2/A-1-1] MUST support encryption per user-specific authentication keys. <a href="https://source.android.com/security/encryption/file-based">File-Based Encryption (FBE)</a> is one way to do it.
      </li>
    </ul>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>[<a href="#9_14_automotive_system_isolation">9.14</a>/A-0-1] MUST gatekeep messages from Android framework vehicle subsystems, e.g., whitelisting permitted message types and message sources.
      </li>
      <li>[<a href="#9_14_automotive_system_isolation">9.14</a>/A-0-2] MUST 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>
    <h3 id="2_6_tablet_requirements">
      2.6. Tablet Requirements
    </h3>
    <p>
      An <strong>Android Tablet device</strong> refers to an Android device implementation that is typically used by holding in both hands and not in a clamshell form-factor.
    </p>
    <p>
      Android device implementations are classified as a Tablet if they meet all the following criteria:
    </p>
    <ul>
      <li>Have a power source that provides mobility, such as a battery.
      </li>
      <li>Have a physical diagonal screen size in the range of 7 to 18 inches.
      </li>
    </ul>
    <p>
      Tablet device implementations have similar requirements to handheld device implementations. The exceptions are in indicated by and * in that section and noted for reference in this section.
    </p>
    <h4 id="2_4_1_hardware">
      2.4.1. Hardware
    </h4>
    <p>
      <strong>Screen Size</strong>
    </p>
    <ul>
      <li>[<a href="#7_1_display_and_graphics">7.1</a>.1.1/Tab-0-1] MUST have a screen in the range of 7 to 18 inches.
      </li>
    </ul>
    <p>
      <strong>Minimum Memory and Storage (Section 7.6.1)</strong>
    </p>
    <p>
      The screen densities listed for small/normal screens in the handheld requirements are not applicable to tablets.
    </p>
    <p>
      <strong>USB peripheral mode (Section 7.7.1)</strong>
    </p>
    <p>
      If tablet device implementations include a USB port supporting peripheral mode, they:
    </p>
    <ul>
      <li>[<a href="#7_7_usb">7.7.1</a>/Tab] MAY implement the Android Open Accessory (AOA) API.
      </li>
    </ul>
    <p>
      <strong>Virtual Reality Mode (Section 7.9.1)</strong>
    </p>
    <p>
      <strong>Virtual Reality High Performance (Section 7.9.2)</strong>
    </p>
    <p>
      Virtual reality requirements are not applicable to tablets.
    </p>
    <h2 id="3_software">
      3. Software
    </h2>
    <h3 id="3_1_managed_api_compatibility">
      3.1. Managed API Compatibility
    </h3>
    <p>
      The managed Dalvik bytecode execution environment is the primary vehicle for Android applications. The Android application programming interface (API) is the set of Android platform interfaces exposed to applications running in the managed runtime environment.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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>
      </li>
      <li>
        <p>
          [C-0-2] MUST support/preserve all classes, methods, and associated elements marked by the TestApi annotation (@TestApi).
        </p>
      </li>
      <li>
        <p>
          [C-0-3] 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>
      </li>
      <li>
        <p>
          [C-0-4] MUST still keep the APIs present and behave in a reasonable way, even when some hardware features for which Android includes APIs are omitted. See <a href="#7_hardware_compatibility">section 7</a> for specific requirements for this scenario.
        </p>
      </li>
      <li>
        <p>
          [C-0-5] MUST restrict the use of 3rd-party app usage of hidden APIs, defined as APIs in the android namespace decorated with the <code>@hidden</code> annotation but not with a <code>@SystemAPI</code> or <code>@TestApi</code>, as described in the <a href="https://developer.android.com/preview/restrictions-non-sdk-interfaces">SDK documents</a> and ship with each and every hidden API on the same restricted lists as provided via the light-greylist, dark-greylist, and blacklist files in the <code>prebuilts/runtime/appcompat/</code> path for the appropriate API level branch in the AOSP. However they:
        </p>
        <ul>
          <li>MAY, if a hidden API is absent or implemented differently on the device implementation, move the hidden API into the blacklist or omit it from all restricted lists (i.e. light-grey, dark-grey, black).
          </li>
          <li>MAY, if a hidden API does not already exist in the AOSP, add the hidden API to any of the restricted lists (i.e. light-grey, dark-grey, black).
          </li>
          <li>MAY implement a dynamic update mechanism that moves a hidden API from a restricted list into a less restrictive list, except for the whitelist.
          </li>
        </ul>
      </li>
    </ul>
    <h3 id="3_1_1_android_extensions">
      3.1.1. Android Extensions
    </h3>
    <p>
      Android includes the support of extending the managed APIs while keeping the same API level version.
    </p>
    <ul>
      <li>[C-0-1] 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.
      </li>
    </ul>
    <h3 id="3_1_2_android_library">
      3.1.2. Android Library
    </h3>
    <p>
      Due to <a href="https://developer.android.com/preview/behavior-changes#apache-p">Apache HTTP client deprecation</a>, device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST NOT place the <code>org.apache.http.legacy</code> library in the bootclasspath.
      </li>
      <li>[C-0-2] MUST add the <code>org.apache.http.legacy</code> library to the application classpath only when the app satisfies one of the following conditions:
        <ul>
          <li>Targets API level 28 or lower.
          </li>
          <li>Declares in its manifest that it needs the library by setting the <code>android:name</code> attribute of <code>&lt;uses-library&gt;</code> to <code>org.apache.http.legacy</code>.
          </li>
        </ul>
      </li>
    </ul>
    <p>
      The AOSP implementation meets these requirements.
    </p>
    <h3 id="3_2_soft_api_compatibility">
      3.2. Soft API Compatibility
    </h3>
    <p>
      In addition to the managed APIs from <a href="#3_1_managed_api_compatibility">section 3.1</a>, Android also includes a significant runtime-only “soft” API, in the form of such things as intents, permissions, and similar aspects of Android applications that cannot be enforced at application compile time.
    </p>
    <h4 id="3_2_1_permissions">
      3.2.1. Permissions
    </h4>
    <ul>
      <li>[C-0-1] 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.
      </li>
    </ul>
    <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.
    </p>
    <ul>
      <li>[C-0-1] 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.
      </li>
    </ul>
    <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/9/versions.html">9</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 9, this field MUST have the integer value 9_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 9, this field MUST have the integer value 9_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:9/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 (""). This field MUST NOT change during the lifetime of the product.
        </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 (""). This field MUST NOT change during the lifetime of the product.
        </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>
          MUST return "UNKNOWN".
        </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 is not in any way vulnerable to any of the issues described up through the designated Android Public Security Bulletin. It MUST be in the format [YYYY-MM-DD], matching a defined string documented in the <a href="source.android.com/security/bulletin">Android Public Security Bulletin</a> or in the <a href="http://source.android.com/security/advisory">Android Security Advisory</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>
      <tr>
        <td>
          <a href="https://developer.android.com/reference/android/os/Build.html#BOOTLOADER">BOOTLOADER</a>
        </td>
        <td>
          A value chosen by the device implementer identifying the specific internal bootloader version used in the device, in human-readable format. 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>
          <a href="https://developer.android.com/reference/android/os/Build.html#getRadioVersion()">getRadioVersion()</a>
        </td>
        <td>
          MUST (be or return) a value chosen by the device implementer identifying the specific internal radio/modem version used in the device, in human-readable format. If a device does not have any internal radio/modem it MUST return NULL. 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>
          <a href="https://developer.android.com/reference/android/os/Build.html#getSerial()">getSerial()</a>
        </td>
        <td>
          MUST (be or return) 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._-,]+$”.
        </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.
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] Device implementations MUST preload one or more applications or service components with an intent handler, for all the public intent filter patterns defined by the following core android applications in AOSP:
        </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>
      </li>
    </ul>
    <h5 id="3_2_3_2_intent_resolution">
      3.2.3.2. Intent Resolution
    </h5>
    <ul>
      <li>
        <p>
          [C-0-1] 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> , except for Settings, to be overridden by third-party applications. The upstream Android open source implementation allows this by default.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] Dvice 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>
      </li>
      <li>
        <p>
          [C-0-3] Device implementations MUST provide a user interface for users to modify the default activity for intents.
        </p>
      </li>
      <li>
        <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>
      </li>
    </ul>
    <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>[C-0-4] 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>[C-0-5] MUST attempt validation of the intent filters during the installation of the application and set all successfully validated URI intent filters as default app handlers for their URIs.
      </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>[C-0-6] 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>[C-0-7] 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>[C-0-8] 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>
    <ul>
      <li>[C-0-1] 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.
      </li>
      <li>[C-0-2] 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.
      </li>
      <li>[C-0-3] 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>.
      </li>
      <li>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>.
      </li>
    </ul>
    <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.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST broadcast the public broadcast intents in response to appropriate system events as described in the SDK documentation. Note that this requirement is not conflicting with section 3.5 as the limitation for background applications are also described in the SDK documentation.
      </li>
    </ul>
    <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.
    </p>
    <p>
      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>
      If device implementations report <code>android.software.home_screen</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST honor the <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_HOME_SETTINGS"><code>android.settings.HOME_SETTINGS</code></a> intent to show a default app settings menu for Home Screen.
      </li>
    </ul>
    <p>
      If device implementations report <code>android.hardware.telephony</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-2-1] MUST provide a settings menu that will call the <a href="http://developer.android.com/reference/android/provider/Telephony.Sms.Intents.html#ACTION_CHANGE_DEFAULT"><code>android.provider.Telephony.ACTION_CHANGE_DEFAULT</code></a> intent to show a dialog to change the default SMS application.
        </p>
      </li>
      <li>
        <p>
          [C-2-2] 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.
        </p>
        <ul>
          <li>MUST use the user-selected default Phone app's UI for incoming and outgoing calls except for emergency calls, which would use the preinstalled Phone app.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-2-3] MUST honor the <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_PHONE_ACCOUNTS">android.telecom.action.CHANGE_PHONE_ACCOUNTS</a> intent to provide user affordance to configure the <a href="https://developer.android.com/reference/android/telecom/ConnectionService.html"><code>ConnectionServices</code></a> associated with the <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html"><code>PhoneAccounts</code></a>, as well as a default PhoneAccount that the telecommunications service provider will use to place outgoing calls. The AOSP implementation meets this requirement by including a "Calling Accounts option" menu within the "Calls" settings menu.
        </p>
      </li>
    </ul>
    <p>
      If device implementations report <code>android.hardware.nfc.hce</code>, they:
    </p>
    <ul>
      <li>[C-3-1] 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.
      </li>
    </ul>
    <p>
      If device implementations support the <code>VoiceInteractionService</code> and have more than one application using this API installed at a time, they:
    </p>
    <ul>
      <li>[C-4-1] MUST honor the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_VOICE_INPUT_SETTINGS"><code>android.settings.ACTION_VOICE_INPUT_SETTINGS</code></a> intent to show a default app settings menu for voice input and assist.
      </li>
    </ul>
    <h4 id="3_2_4_activities_on_secondary_displays">
      3.2.4. Activities on secondary displays
    </h4>
    <p>
      If device implementations allow launching normal <a href="https://developer.android.com/reference/android/app/Activity.html">Android Activities</a> on secondary displays, they:
    </p>
    <ul>
      <li>[C-1-1] MUST set the <code>android.software.activities_on_secondary_displays</code> feature flag.
      </li>
      <li>[C-1-2] MUST guarantee API compatibility similar to an activity running on the primary display.
      </li>
      <li>[C-1-3] MUST land the new activity on the same display as the activity that launched it, when the new activity is launched without specifying a target display via the <a href="https://developer.android.com/reference/android/app/ActivityOptions.html#setLaunchDisplayId%28int%29"><code>ActivityOptions.setLaunchDisplayId()</code></a> API.
      </li>
      <li>[C-1-4] MUST destroy all activities, when a display with the <a href="http://developer.android.com/reference/android/view/Display.html#FLAG_PRIVATE"><code>Display.FLAG_PRIVATE</code></a> flag is removed.
      </li>
      <li>[C-1-5] MUST resize accordingly all activities on a <a href="https://developer.android.com/reference/android/hardware/display/VirtualDisplay.html"><code>VirtualDisplay</code></a> if the display itself is resized.
      </li>
      <li>MAY show an IME (input method editor, a user control that enables users to enter text) on the primary display, when a text input field becomes focused on a secondary display.
      </li>
      <li>SHOULD implement the input focus on the secondary display independently of the primary display, when touch or key inputs are supported.
      </li>
      <li>SHOULD have <a href="https://developer.android.com/reference/android/content/res/Configuration.html"><code>android.content.res.Configuration</code></a> which corresponds to that display in order to be displayed, operate correctly, and maintain compatibility if an activity is launched on secondary display.
      </li>
    </ul>
    <p>
      If device implementations allow launching normal <a href="https://developer.android.com/reference/android/app/Activity.html">Android Activities</a> on secondary displays and primary and secondary displays have different <a href="https://developer.android.com/reference/android/util/DisplayMetrics.html">android.util.DisplayMetrics</a>:
    </p>
    <ul>
      <li>[C-2-1] Non-resizeable activities (that have <code>resizeableActivity=false</code> in <code>AndroidManifest.xml</code>) and apps targeting API level 23 or lower MUST NOT be allowed on secondary displays.
      </li>
    </ul>
    <p>
      If device implementations allow launching normal <a href="https://developer.android.com/reference/android/app/Activity.html">Android Activities</a> on secondary displays and a secondary display has the <a href="https://developer.android.com/reference/android/view/Display.html#FLAG_PRIVATE">android.view.Display.FLAG_PRIVATE</a> flag:
    </p>
    <ul>
      <li>[C-3-1] Only the owner of that display, system, and activities that are already on that display MUST be able to launch to it. Everyone can launch to a display that has <a href="https://developer.android.com/reference/android/view/Display.html#FLAG_PUBLIC">android.view.Display.FLAG_PUBLIC</a> flag.
      </li>
    </ul>
    <h3 id="3_3_native_api_compatibility">
      3.3. Native API Compatibility
    </h3>
    <p>
      Native code compatibility is challenging. For this reason, device implementers are:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to use the implementations of the libraries listed below from the upstream Android Open Source Project.
      </li>
    </ul>
    <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 <code>.apk</code> file as an ELF <code>.so</code> 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.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST be compatible with one or more defined ABIs and implement compatibility with the Android NDK.
      </li>
      <li>[C-0-2] 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>[C-0-3] MUST be source-compatible (i.e. header-compatible) and binary-compatible (for the ABI) with each required library in the list below.
      </li>
      <li>[C-0-5] MUST accurately report the native Application Binary Interface (ABI) supported by the device, via the <code>android.os.Build.SUPPORTED_ABIS</code>, <code>android.os.Build.SUPPORTED_32_BIT_ABIS</code>, and <code>android.os.Build.SUPPORTED_64_BIT_ABIS</code> parameters, each a comma separated list of ABIs ordered from the most to the least preferred one.
      </li>
      <li>
        <p>
          [C-0-6] MUST report, via the above parameters, a subset of the following list of ABIs and MUST NOT report any ABI not on the list.
        </p>
        <ul>
          <li>
            <code>armeabi</code>
          </li>
          <li>
            <code>armeabi-v7a</code>
          </li>
          <li>
            <code>arm64-v8a</code>
          </li>
          <li>
            <code>x86</code>
          </li>
          <li>
            <code>x86-64</code>
          </li>
          <li>
            <p>
              [C-0-7] MUST make all the following libraries, providing native APIs, available to apps that include native code:
            </p>
          </li>
          <li>
            <p>
              libaaudio.so (AAudio native audio support)
            </p>
          </li>
          <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>libneuralnetworks.so (Neural Networks API)
          </li>
          <li>libOpenMAXAL.so (OpenMAX AL 1.0.1 support)
          </li>
          <li>libOpenSLES.so (OpenSL ES 1.0.1 audio support)
          </li>
          <li>libRS.so
          </li>
          <li>libstdc++ (Minimal support for C++)
          </li>
          <li>libvulkan.so (Vulkan)
          </li>
          <li>libz (Zlib compression)
          </li>
          <li>JNI interface
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-0-8] MUST NOT add or remove the public functions for the native libraries listed above.
        </p>
      </li>
      <li>[C-0-9] MUST list additional non-AOSP libraries exposed directly to third-party apps in <code>/vendor/etc/public.libraries.txt</code>.
      </li>
      <li>[C-0-10] MUST NOT expose any other native libraries, implemented and provided in AOSP as system libraries, to third-party apps targeting API level 24 or higher as they are reserved.
      </li>
      <li>[C-0-11] 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, through the <code>libGLESv3.so</code> library. Note that while all the symbols MUST be present, section 7.1.4.1 describes in more detail the requirements for when the full implementation of each corresponding functions are expected.
      </li>
      <li>[C-0-12] MUST export function symbols for the core Vulkan 1.0 function symbols, as well as the <code>VK_KHR_surface</code>, <code>VK_KHR_android_surface</code>, <code>VK_KHR_swapchain</code>, <code>VK_KHR_maintenance1</code>, and <code>VK_KHR_get_physical_device_properties2</code> extensions through the <code>libvulkan.so</code> library. Note that while all the symbols MUST be present, section 7.1.4.2 describes in more detail the requirements for when the full implementation of each corresponding functions are expected.
      </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 Android may introduce support for additional ABIs.
    </p>
    <h4 id="3_3_2_32-bit_arm_native_code_compatibility">
      3.3.2. 32-bit ARM Native Code Compatibility
    </h4>
    <p>
      If device implementations report the support of the <code>armeabi</code> ABI, they:
    </p>
    <ul>
      <li>[C-3-1] MUST also support <code>armeabi-v7a</code> and report its support, as <code>armeabi</code> is only for backwards compatibility with older apps.
      </li>
    </ul>
    <p>
      If device implementations report the support of the <code>armeabi-v7a</code> ABI, for apps using this ABI, they:
    </p>
    <ul>
      <li>
        <p>
          [C-2-1] MUST include the following lines in <code>/proc/cpuinfo</code>, and SHOULD NOT alter the values on the same device, even when they are read by other ABIs.
        </p>
        <ul>
          <li>
            <code>Features:</code>, followed by a list of any optional ARMv7 CPU features supported by the device.
          </li>
          <li>
            <code>CPU architecture:</code>, followed by an integer describing the device's highest supported ARM architecture (e.g., "8" for ARMv8 devices).
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-2-2] MUST always keep the following operations available, even in the case where the ABI is implemented on an ARMv8 architecture, 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>
      </li>
      <li>
        <p>
          [C-2-3] 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.
        </p>
      </li>
    </ul>
    <h3 id="3_4_web_compatibility">
      3.4. Web Compatibility
    </h3>
    <h4 id="3_4_1_webview_compatibility">
      3.4.1. WebView Compatibility
    </h4>
    <p>
      If device implementations provide a complete implementation of the <code>android.webkit.Webview</code> API, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report <code>android.software.webview</code>.
      </li>
      <li>[C-1-2] MUST use the <a href="http://www.chromium.org/">Chromium</a> Project build from the upstream Android Open Source Project on the Android 9 branch for the implementation of the <a href="http://developer.android.com/reference/android/webkit/WebView.html"><code>android.webkit.WebView</code></a> API.
      </li>
      <li>
        <p>
          [C-1-3] 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>
      <li>
        <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>
      </li>
    </ul>
    <h4 id="3_4_2_browser_compatibility">
      3.4.2. Browser Compatibility
    </h4>
    <p>
      If device implementations include a standalone Browser application for general web browsing, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support each of these APIs associated with HTML5:
        <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>
      </li>
      <li>[C-1-2] 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.
      </li>
      <li>MAY ship a custom user agent string in the standalone Browser application.
      </li>
      <li>SHOULD implement support for as much of <a href="http://html.spec.whatwg.org/multipage/">HTML5</a> as possible on the standalone Browser application (whether based on the upstream WebKit Browser application or a third-party replacement).
      </li>
    </ul>
    <p>
      However, If device implementations do not include a standalone Browser application, they:
    </p>
    <ul>
      <li>[C-2-1] MUST still support the public intent patterns as described in <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>.
      </li>
    </ul>
    <h3 id="3_5_api_behavioral_compatibility">
      3.5. API Behavioral Compatibility
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-9] MUST ensure that API behavioral compatibility is applied for all installed apps unless they are restricted as described in <a href="#3_5_1-background-restriction">Section 3.5.1</a>.
      </li>
      <li>[C-0-10] MUST NOT implement the whitelisting approach that ensures API behavioral compatibility only for apps that are selected by device implementers.
      </li>
    </ul>
    <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>[C-0-1] Devices MUST NOT change the behavior or semantics of a standard intent.
      </li>
      <li>[C-0-2] Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular type of system component (such as Service, Activity, ContentProvider, etc.).
      </li>
      <li>[C-0-3] Devices MUST NOT change the semantics of a standard permission.
      </li>
      <li>Devices MUST NOT alter the limitations enforced on background applications. More specifically, for background apps:
        <ul>
          <li>[C-0-4] they MUST stop executing callbacks that are registered by the app to receive outputs from the <a href="https://developer.android.com/reference/android/location/GnssMeasurement.html"><code>GnssMeasurement</code></a> and <a href="https://developer.android.com/reference/android/location/GnssNavigationMessage.html"><code>GnssNavigationMessage</code></a>.
          </li>
          <li>[C-0-5] they MUST rate-limit the frequency of updates that are provided to the app through the <a href="https://developer.android.com/reference/android/location/LocationManager.html"><code>LocationManager</code></a> API class or the <a href="https://developer.android.com/reference/android/net/wifi/WifiManager.html#startScan%28%29"><code>WifiManager.startScan()</code></a> method.
          </li>
          <li>[C-0-6] if the app is targeting API level 25 or higher, they MUST NOT allow to register broadcast receivers for the implicit broadcasts of standard Android intents in the app's manifest, unless the broadcast intent requires a <code>"signature"</code> or <code>"signatureOrSystem"</code> <a href="https://developer.android.com/guide/topics/manifest/permission-element.html#plevel"><code>protectionLevel</code></a> permission or are on the <a href="https://developer.android.com/preview/features/background-broadcasts.html">exemption list</a> .
          </li>
          <li>[C-0-7] if the app is targeting API level 25 or higher, they MUST stop the app's background services, just as if the app had called the services'<a href="https://developer.android.com/reference/android/app/Service.html#stopSelf%28%29"><code>stopSelf()</code></a> method, unless the app is placed on a temporary whitelist to handle a task that's visible to the user.
          </li>
          <li>[C-0-8] if the app is targeting API level 25 or higher, they MUST release the wakelocks the app holds.
          </li>
        </ul>
      </li>
      <li>[C-0-9] Devices MUST return the following security providers as the first seven array values from the <a href="https://developer.android.com/reference/java/security/Security.html#getProviders%28%29"><code>Security.getProviders()</code></a> method, in the given order and with the given names (as returned by <a href="https://developer.android.com/reference/java/security/Provider.html#getName%28%29"><code>Provider.getName()</code></a>) and classes, unless the app has modified the list via <a href="https://developer.android.com/reference/java/security/Security.html#insertProviderAt%28java.security.Provider,%2520int%29"><code>insertProviderAt()</code></a> or <a href="https://developer.android.com/reference/java/security/Security.html#removeProvider%28java.lang.String%29"><code>removeProvider()</code></a>. Devices MAY return additional providers after the specified list of providers below.
        <ol>
          <li>
            <strong>AndroidNSSP</strong> - <code>android.security.net.config.NetworkSecurityConfigProvider</code>
          </li>
          <li>
            <strong>AndroidOpenSSL</strong> - <code>com.android.org.conscrypt.OpenSSLProvider</code>
          </li>
          <li>
            <strong>CertPathProvider</strong> - <code>sun.security.provider.CertPathProvider</code>
          </li>
          <li>
            <strong>AndroidKeyStoreBCWorkaround</strong> - <code>android.security.keystore.AndroidKeyStoreBCWorkaroundProvider</code>
          </li>
          <li>
            <strong>BC</strong> - <code>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</code>
          </li>
          <li>
            <strong>HarmonyJSSE</strong> - <code>com.android.org.conscrypt.JSSEProvider</code>
          </li>
          <li>
            <strong>AndroidKeyStore</strong> - <code>android.security.keystore.AndroidKeyStoreProvider</code>
          </li>
        </ol>
      </li>
    </ul>
    <p>
      The above list is not comprehensive. The Compatibility Test Suite (CTS) tests significant portions of the platform for behavioral compatibility, but not all. It is the responsibility of the implementer to ensure behavioral compatibility with the Android Open Source Project. For this reason, device implementers SHOULD use the source code available via the Android Open Source Project where possible, rather than re-implement significant parts of the system.
    </p>
    <h3 id="3_5_1_background_restriction">
      3.5.1. Background Restriction
    </h3>
    <p>
      If device implementations implement the app restrictions that are included in AOSP or extend the app restrictions, they:
    </p>
    <ul>
      <li>[C-SR] Are STRONGLY RECOMMENDED to provide user affordance where the user can see the list of restricted apps.
      </li>
      <li>[C-1-2] MUST provide user affordance to turn on / off the restrictions on each app.
      </li>
      <li>[C-1-3] MUST not automatically apply restrictions without evidence of poor system health behaviour, but MAY apply the restrictions on apps upon detection of poor system health behaviour like stuck wakelocks, long running services, and other criteria. The criteria MAY be determined by device implementers but MUST be related to the app’s impact on the system health. Other criteria that is not purely related to the　system health, such as the app’s lack of popularity in the market, MUST NOT be used as criteria.
      </li>
      <li>[C-1-4] MUST not automatically apply app restrictions for apps when a user has turned off app restrictions manually, and MAY suggest the user to apply app restrictions.
      </li>
      <li>[C-1-5] MUST inform users if app restrictions are applied to an app automatically.
      </li>
      <li>[C-1-6] MUST return <code>true</code> for <a href="https://developer.android.com/reference/android/app/ActivityManager.html#isBackgroundRestricted%28%29"><code>ActivityManager.isBackgroundRestricted()</code></a> when the restricted app calls this API.
      </li>
      <li>[C-1-7] MUST NOT restrict the top foreground app that is explicitly used by the user.
      </li>
      <li>[C-1-8] MUST suspend restrictions on an app that becomes the top foreground application when the user explicitly starts to use the app that used to be restricted.
      </li>
      <li>[C-1-9] MUST report all app restriction events via <a href="https://developer.android.com/reference/android/app/usage/UsageStats"><code>UsageStats</code></a>. If device implementations extend the app restrictions that are implemented in AOSP, MUST follow the implementation described in <a href="https://source.android.com/devices/tech/power/app_mgmt">this document</a>.
      </li>
    </ul>
    <h3 id="3_6_api_namespaces">
      3.6. API Namespaces
    </h3>
    <p>
      Android follows the package and class namespace conventions defined by the Java programming language. To ensure compatibility with third-party applications, device implementers MUST NOT make any prohibited modifications (see below) to these package namespaces:
    </p>
    <ul>
      <li>
        <code>java.*</code>
      </li>
      <li>
        <code>javax.*</code>
      </li>
      <li>
        <code>sun.*</code>
      </li>
      <li>
        <code>android.*</code>
      </li>
      <li>
        <code>androidx.*</code>
      </li>
      <li>
        <code>com.android.*</code>
      </li>
    </ul>
    <p>
      That is, they:
    </p>
    <ul>
      <li>[C-0-1] 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>[C-0-2] MUST NOT add any publicly exposed elements (such as classes or interfaces, or fields or methods to existing classes or interfaces) or Test or System APIs to the APIs in the above namespaces. A “publicly exposed element” is any construct that is not decorated with the “@hide” marker as used in the upstream Android source code.
      </li>
    </ul>
    <p>
      Device implementers MAY modify the underlying implementation of the APIs, but such modifications:
    </p>
    <ul>
      <li>[C-0-3] MUST NOT impact the stated behavior and Java-language signature of any publicly exposed APIs.
      </li>
      <li>[C-0-4] MUST NOT be advertised or otherwise exposed to developers.
      </li>
    </ul>
    <p>
      However, device implementers MAY add custom APIs outside the standard Android namespace, but the custom APIs:
    </p>
    <ul>
      <li>[C-0-5] MUST NOT be in a namespace owned by or referring to another organization. For instance, device implementers MUST NOT add APIs to the <code>com.google.*</code> or similar namespace: only Google may do so. Similarly, Google MUST NOT add APIs to other companies' namespaces.
      </li>
      <li>[C-0-6] 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.
      </li>
    </ul>
    <p>
      If a device implementer proposes to improve one of the package namespaces above (such as by adding useful new functionality to an existing API, or adding a new API), the implementer SHOULD visit <a href="http://source.android.com/">source.android.com</a> and begin the process for contributing changes and code, according to the information on that site.
    </p>
    <p>
      Note that the restrictions above correspond to standard conventions for naming APIs in the Java programming language; this section simply aims to reinforce those conventions and make them binding through inclusion in this Compatibility Definition.
    </p>
    <h3 id="3_7_runtime_compatibility">
      3.7. Runtime Compatibility
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] MUST support the full Dalvik Executable (DEX) format and <a href="https://android.googlesource.com/platform/dalvik/">Dalvik bytecode specification and semantics</a>.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] 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.)
        </p>
      </li>
      <li>
        <p>
          SHOULD use Android RunTime (ART), the reference upstream implementation of the Dalvik Executable Format, and the reference implementation’s package management system.
        </p>
      </li>
      <li>
        <p>
          SHOULD run fuzz tests under various modes of execution and target architectures to assure the stability of the runtime. Refer to <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/">JFuzz</a> and <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/">DexFuzz</a> in the Android Open Source Project website.
        </p>
      </li>
    </ul>
    <p>
      Note that memory values specified below are considered minimum values and device implementations MAY allocate more memory per application.
    </p>
    <table>
      <tr>
        <th>
          Screen Layout
        </th>
        <th>
          Screen Density
        </th>
        <th>
          Minimum Application Memory
        </th>
      </tr>
      <tr>
        <td rowspan="12">
          Android Watch
        </td>
        <td>
          120 dpi (ldpi)
        </td>
        <td rowspan="3">
          32MB
        </td>
      </tr>
      <tr>
        <td>
          160 dpi (mdpi)
        </td>
      </tr>
      <tr>
        <td>
          213 dpi (tvdpi)
        </td>
      </tr>
      <tr>
        <td>
          240 dpi (hdpi)
        </td>
        <td rowspan="2">
          36MB
        </td>
      </tr>
      <tr>
        <td>
          280 dpi (280dpi)
        </td>
      </tr>
      <tr>
        <td>
          320 dpi (xhdpi)
        </td>
        <td rowspan="2">
          48MB
        </td>
      </tr>
      <tr>
        <td>
          360 dpi (360dpi)
        </td>
      </tr>
      <tr>
        <td>
          400 dpi (400dpi)
        </td>
        <td>
          56MB
        </td>
      </tr>
      <tr>
        <td>
          420 dpi (420dpi)
        </td>
        <td>
          64MB
        </td>
      </tr>
      <tr>
        <td>
          480 dpi (xxhdpi)
        </td>
        <td>
          88MB
        </td>
      </tr>
      <tr>
        <td>
          560 dpi (560dpi)
        </td>
        <td>
          112MB
        </td>
      </tr>
      <tr>
        <td>
          640 dpi (xxxhdpi)
        </td>
        <td>
          154MB
        </td>
      </tr>
      <tr>
        <td rowspan="12">
          small/normal
        </td>
        <td>
          120 dpi (ldpi)
        </td>
        <td rowspan="2">
          32MB
        </td>
      </tr>
      <tr>
        <td>
          160 dpi (mdpi)
        </td>
      </tr>
      <tr>
        <td>
          213 dpi (tvdpi)
        </td>
        <td rowspan="3">
          48MB
        </td>
      </tr>
      <tr>
        <td>
          240 dpi (hdpi)
        </td>
      </tr>
      <tr>
        <td>
          280 dpi (280dpi)
        </td>
      </tr>
      <tr>
        <td>
          320 dpi (xhdpi)
        </td>
        <td rowspan="2">
          80MB
        </td>
      </tr>
      <tr>
        <td>
          360 dpi (360dpi)
        </td>
      </tr>
      <tr>
        <td>
          400 dpi (400dpi)
        </td>
        <td>
          96MB
        </td>
      </tr>
      <tr>
        <td>
          420 dpi (420dpi)
        </td>
        <td>
          112MB
        </td>
      </tr>
      <tr>
        <td>
          480 dpi (xxhdpi)
        </td>
        <td>
          128MB
        </td>
      </tr>
      <tr>
        <td>
          560 dpi (560dpi)
        </td>
        <td>
          192MB
        </td>
      </tr>
      <tr>
        <td>
          640 dpi (xxxhdpi)
        </td>
        <td>
          256MB
        </td>
      </tr>
      <tr>
        <td rowspan="12">
          large
        </td>
        <td>
          120 dpi (ldpi)
        </td>
        <td>
          32MB
        </td>
      </tr>
      <tr>
        <td>
          160 dpi (mdpi)
        </td>
        <td>
          48MB
        </td>
      </tr>
      <tr>
        <td>
          213 dpi (tvdpi)
        </td>
        <td rowspan="2">
          80MB
        </td>
      </tr>
      <tr>
        <td>
          240 dpi (hdpi)
        </td>
      </tr>
      <tr>
        <td>
          280 dpi (280dpi)
        </td>
        <td>
          96MB
        </td>
      </tr>
      <tr>
        <td>
          320 dpi (xhdpi)
        </td>
        <td>
          128MB
        </td>
      </tr>
      <tr>
        <td>
          360 dpi (360dpi)
        </td>
        <td>
          160MB
        </td>
      </tr>
      <tr>
        <td>
          400 dpi (400dpi)
        </td>
        <td>
          192MB
        </td>
      </tr>
      <tr>
        <td>
          420 dpi (420dpi)
        </td>
        <td>
          228MB
        </td>
      </tr>
      <tr>
        <td>
          480 dpi (xxhdpi)
        </td>
        <td>
          256MB
        </td>
      </tr>
      <tr>
        <td>
          560 dpi (560dpi)
        </td>
        <td>
          384MB
        </td>
      </tr>
      <tr>
        <td>
          640 dpi (xxxhdpi)
        </td>
        <td>
          512MB
        </td>
      </tr>
      <tr>
        <td rowspan="12">
          xlarge
        </td>
        <td>
          120 dpi (ldpi)
        </td>
        <td>
          48MB
        </td>
      </tr>
      <tr>
        <td>
          160 dpi (mdpi)
        </td>
        <td>
          80MB
        </td>
      </tr>
      <tr>
        <td>
          213 dpi (tvdpi)
        </td>
        <td rowspan="2">
          96MB
        </td>
      </tr>
      <tr>
        <td>
          240 dpi (hdpi)
        </td>
      </tr>
      <tr>
        <td>
          280 dpi (280dpi)
        </td>
        <td>
          144MB
        </td>
      </tr>
      <tr>
        <td>
          320 dpi (xhdpi)
        </td>
        <td>
          192MB
        </td>
      </tr>
      <tr>
        <td>
          360 dpi (360dpi)
        </td>
        <td>
          240MB
        </td>
      </tr>
      <tr>
        <td>
          400 dpi (400dpi)
        </td>
        <td>
          288MB
        </td>
      </tr>
      <tr>
        <td>
          420 dpi (420dpi)
        </td>
        <td>
          336MB
        </td>
      </tr>
      <tr>
        <td>
          480 dpi (xxhdpi)
        </td>
        <td>
          384MB
        </td>
      </tr>
      <tr>
        <td>
          560 dpi (560dpi)
        </td>
        <td>
          576MB
        </td>
      </tr>
      <tr>
        <td>
          640 dpi (xxxhdpi)
        </td>
        <td>
          768MB
        </td>
      </tr>
    </table>
    <h3 id="3_8_user_interface_compatibility">
      3.8. User Interface Compatibility
    </h3>
    <h4 id="3_8_1_launcher_(home_screen)">
      3.8.1. Launcher (Home Screen)
    </h4>
    <p>
      Android includes a launcher application (home screen) and support for third-party applications to replace the device launcher (home screen).
    </p>
    <p>
      If device implementations allow third-party applications to replace the device home screen, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the platform feature <code>android.software.home_screen</code>.
      </li>
      <li>[C-1-2] MUST return the <a href="https://developer.android.com/reference/android/graphics/drawable/AdaptiveIconDrawable.html"><code>AdaptiveIconDrawable</code></a> object when the third-party application use <code>&lt;adaptive-icon&gt;</code> tag to provide their icon, and the <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html"><code>PackageManager</code></a> methods to retrieve icons are called.
      </li>
    </ul>
    <p>
      If device implementations include a default launcher that supports in-app pinning of shortcuts, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report <code>true</code> for <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29"><code>ShortcutManager.isRequestPinShortcutSupported()</code></a>.
      </li>
      <li>[C-2-2] MUST have user affordance asking the user before adding a shortcut requested by apps via the <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html#requestPinShortcut%28android.content.pm.ShortcutInfo,%20android.content.IntentSender%29"><code>ShortcutManager.requestPinShortcut()</code></a> API method.
      </li>
      <li>[C-2-3] MUST support pinned shortcuts and dynamic and static shortcuts as documented on the <a href="https://developer.android.com/guide/topics/ui/shortcuts.html">App Shortcuts page</a>.
      </li>
    </ul>
    <p>
      Conversely, if device implementations do not support in-app pinning of shortcuts, they:
    </p>
    <ul>
      <li>[C-3-1] MUST report <code>false</code> for <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29"><code>ShortcutManager.isRequestPinShortcutSupported()</code></a>.
      </li>
    </ul>
    <p>
      If device implementations implement a default launcher that provides quick access to the additional shortcuts provided by third-party apps through the <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html">ShortcutManager</a> API, they:
    </p>
    <ul>
      <li>[C-4-1] MUST support all documented shortcut features (e.g. static and dynamic shortcuts, pinning shortcuts) and fully implement the APIs of the <a href="https://developer.android.com/reference/android/content/pm/ShortcutManager.html"><code>ShortcutManager</code></a> API class.
      </li>
    </ul>
    <p>
      If device implementations include a default launcher app that shows badges for the app icons, they:
    </p>
    <ul>
      <li>[C-5-1] MUST respect the <a href="https://developer.android.com/reference/android/app/NotificationChannel.html#setShowBadge%28boolean%29"><code>NotificationChannel.setShowBadge()</code></a> API method. In other words, show a visual affordance associated with the app icon if the value is set as <code>true</code>, and do not show any app icon badging scheme when all of the app's notification channels have set the value as <code>false</code>.
      </li>
      <li>MAY override the app icon badges with their proprietary badging scheme when third-party applications indicate support of the proprietary badging scheme through the use of proprietary APIs, but SHOULD use the resources and values provided through the notification badges APIs described in <a href="https://developer.android.com/preview/features/notification-badges.html">the SDK</a> , such as the <a href="http://developer.android.com/reference/android/app/Notification.Builder.html#setNumber%28int%29"><code>Notification.Builder.setNumber()</code></a> and the <a href="http://developer.android.com/reference/android/app/Notification.Builder.html#setBadgeIconType%28int%29"><code>Notification.Builder.setBadgeIconType()</code></a> API.
      </li>
    </ul>
    <h4 id="3_8_2_widgets">
      3.8.2. Widgets
    </h4>
    <p>
      Android supports third-party app widgets by defining 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.
    </p>
    <p>
      If device implementations support third-party app widgets, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare support for platform feature <code>android.software.app_widgets</code>.
      </li>
      <li>[C-1-2] 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>[C-1-3] 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 DesignGuidelines</a> in the Android SDK documentation for details.
      </li>
      <li>MAY support application widgets on the lock screen.
      </li>
    </ul>
    <p>
      If device implementations support third-party app widgets and in-app pinning of shortcuts, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report <code>true</code> for <a href="https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#isRequestPinAppWidgetSupported%28%29"><code>AppWidgetManager.html.isRequestPinAppWidgetSupported()</code></a>.
      </li>
      <li>[C-2-2] MUST have user affordance asking the user before adding a shortcut requested by apps via the <a href="https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#requestPinAppWidget%28android.content.ComponentName,android.os.Bundle,%20android.app.PendingIntent%29"><code>AppWidgetManager.requestPinAppWidget()</code></a> API method.
      </li>
    </ul>
    <h4 id="3_8_3_notifications">
      3.8.3. Notifications
    </h4>
    <p>
      Android includes <a href="https://developer.android.com/reference/android/app/Notification.html"><code>Notification</code></a> and <a href="https://developer.android.com/reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> APIs that allow third-party app developers to notify users of notable events and attract users' attention using the hardware components (e.g. sound, vibration and light) and software features (e.g. notification shade, system bar) of the device.
    </p>
    <h5 id="3_8_3_1_presentation_of_notifications">
      3.8.3.1. Presentation of Notifications
    </h5>
    <p>
      If device implementations allow third-party apps to <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">notify users of notable events</a>, they:
    </p>
    <ul>
      <li>[C-1-1] 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>.
      </li>
      <li>[C-1-2] 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>, although they MAY provide an alternative user experience for notifications than that provided by the reference Android Open Source implementation.
      </li>
      <li>[C-1-3] MUST honor and implement properly the behaviors described for <a href="https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Managing">the APIs</a> to update, remove and group notifications.
      </li>
      <li>[C-1-4] MUST provide the full behavior of the <a href="https://developer.android.com/reference/android/app/NotificationChannel.html">NotificationChannel</a> API documented in the SDK.
      </li>
      <li>[C-1-5] MUST provide a user affordance to block and modify a certain third-party app's notification per each channel and app package level.
      </li>
      <li>[C-1-6] MUST also provide a user affordance to display deleted notification channels.
      </li>
      <li>[C-1-7] MUST correctly render all resources (images, stickers, icons, etc.) provided through <a href="https://developer.android.com/reference/android/app/Notification.MessagingStyle">Notification.MessagingStyle</a> alongside the notification text without additional user interaction. For example, MUST show all resources including icons provided through <a href="https://developer.android.com/reference/android/app/Person">android.app.Person</a> in a group conversation that is set through <a href="https://developer.android.com/reference/android/app/Notification.MessagingStyle.html?hl=es-AR#setGroupConversation%28boolean%29">setGroupConversation</a>.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to automatically surface a user affordance to block a certain third-party app's notification per each channel and app package level after the user dismisses that notification multiple times.
      </li>
      <li>SHOULD support rich notifications.
      </li>
      <li>SHOULD present some higher priority notifications as heads-up notifications.
      </li>
      <li>SHOULD have a user affordance to snooze notifications.
      </li>
      <li>MAY only manage the visibility and timing of when third-party apps can notify users of notable events to mitigate safety issues such as driver distraction.
      </li>
    </ul>
    <p>
      If device implementations support rich notifications, they:
    </p>
    <ul>
      <li>[C-2-1] MUST use the exact resources as provided through the <a href="https://developer.android.com/reference/android/app/Notification.Style.html"><code>Notification.Style</code></a> API class and its subclasses for the presented resource elements.
      </li>
      <li>SHOULD present each and every resource element (e.g. icon, title and summary text) defined in the <a href="https://developer.android.com/reference/android/app/Notification.Style.html"><code>Notification.Style</code></a> API class and its subclasses.
      </li>
    </ul>
    <p>
      If device implementations support heads-up notifications: they:
    </p>
    <ul>
      <li>[C-3-1] MUST use the heads-up notification view and resources as described in the <a href="https://developer.android.com/reference/android/app/Notification.Builder.html"><code>Notification.Builder</code></a> API class when heads-up notifications are presented.
      </li>
      <li>[C-3-2] MUST display the actions provided through <a href="https://developer.android.com/reference/android/app/Notification.Builder#addAction%28android.app.Notification.Action%29"><code>Notification.Builder.addAction()</code></a> together with the notification content without additional user interaction as described in <a href="https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Heads-up">the SDK</a>.
      </li>
    </ul>
    <h5 id="3_8_3_2_notification_listener_service">
      3.8.3.2. Notification Listener Service
    </h5>
    <p>
      Android includes the <a href="https://developer.android.com/reference/android/service/notification/NotificationListenerService.html"><code>NotificationListenerService</code></a> APIs that allow apps (once explicitly enabled by the user) to receive a copy of all notifications as they are posted or updated.
    </p>
    <p>
      If device implementations report the feature flag <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_NORMAL"><code>android.hardware.ram.normal</code></a>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST correctly and promptly update notifications in their entirety to all such installed and user-enabled listener services, including any and all metadata attached to the Notification object.
      </li>
      <li>[C-1-2] MUST respect the <a href="https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#snoozeNotification%28java.lang.String,%20long%29"><code>snoozeNotification()</code></a> API call, and dismiss the notification and make a callback after the snooze duration that is set in the API call.
      </li>
    </ul>
    <p>
      If device implementations have a user affordance to snooze notifications, they:
    </p>
    <ul>
      <li>[C-2-1] MUST reflect the snoozed notification status properly through the standard APIs such as <a href="https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#getSnoozedNotifications%28%29"><code>NotificationListenerService.getSnoozedNotifications()</code></a>.
      </li>
      <li>[C-2-2] MUST make this user affordance available to snooze notifications from each installed third-party app's, unless they are from persistent/foreground services.
      </li>
    </ul>
    <h5 id="3_8_3_3_dnd_(do_not_disturb)">
      3.8.3.3. DND (Do not Disturb)
    </h5>
    <p>
      If device implementations support the DND feature, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement an activity that would respond 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>, which for implementations with UI_MODE_TYPE_NORMAL it MUST be an activity where the user can grant or deny the app access to DND policy configurations.
      </li>
      <li>[C-1-2] MUST, for when the device implementation has provided a means for the user to grant or deny third-party apps to access the DND policy configuration, 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>[C-1-3] MUST honor the <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#suppressedVisualEffects"><code>suppressedVisualEffects</code></a> values passed along the <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#NotificationManager.Policy%28int,%20int,%20int,%20int%29"><code>NotificationManager.Policy</code></a> and if an app has set any of the SUPPRESSED_EFFECT_SCREEN_OFF or SUPPRESSED_EFFECT_SCREEN_ON flags, it SHOULD indicate to the user that the visual effects are suppressed in the DND settings menu.
      </li>
    </ul>
    <h4 id="3_8_4_search">
      3.8.4. Search
    </h4>
    <p>
      Android includes APIs that allow developers to <a href="http://developer.android.com/reference/android/app/SearchManager.html">incorporate search</a> into their applications and expose their application’s data into the global system search. Generally speaking, this functionality consists of a single, system-wide user interface that allows users to enter queries, displays suggestions as users type, and displays results. The Android APIs allow developers to reuse this interface to provide search within their own apps and allow developers to supply results to the common global search user interface.
    </p>
    <ul>
      <li>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.
      </li>
    </ul>
    <p>
      If device implementations implement the global search interface, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the APIs that allow third-party applications to add suggestions to the search box when it is run in global search mode.
      </li>
    </ul>
    <p>
      If no third-party applications are installed that make use of the global search:
    </p>
    <ul>
      <li>The default behavior SHOULD be to display web search engine results and suggestions.
      </li>
    </ul>
    <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.
    </p>
    <p>
      If device implementations support the Assist action, they:
    </p>
    <ul>
      <li>[C-2-1] MUST indicate clearly to the end user when the context is shared, by either:
        <ul>
          <li>Each time the assist app accesses the context, displaying a white light around the edges of the screen that meet or exceed the duration and brightness of the Android Open Source Project implementation.
          </li>
          <li>For the preinstalled assist app, providing a user affordance less than two navigations away from <a href="#3_2_3_5_default_app_settings">the default voice input and assistant app settings menu</a>, and only sharing the context when the assist app is explicitly invoked by the user through a hotword or assist navigation key input.
          </li>
        </ul>
      </li>
      <li>[C-2-2] The designated interaction to launch the assist app as described in <a href="#7_2_3_navigation_keys">section 7.2.3</a> MUST launch the user-selected assist app, in other words the app that implements <code>VoiceInteractionService</code>, or an activity handling the <code>ACTION_ASSIST</code> intent.
      </li>
    </ul>
    <h4 id="3_8_5_alerts_and_toasts">
      3.8.5. Alerts and Toasts
    </h4>
    <p>
      Applications can use the <a href="http://developer.android.com/reference/android/widget/Toast.html"><code>Toast</code></a> API to display short non-modal strings to the end user that disappear after a brief period of time, and use the <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY"><code>TYPE_APPLICATION_OVERLAY</code></a> window type API to display alert windows as an overlay over other apps.
    </p>
    <p>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST provide a user affordance to block an app from displaying alert windows that use the <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY"><code>TYPE_APPLICATION_OVERLAY</code></a> . The AOSP implementation meets this requirement by having controls in the notification shade.
        </p>
      </li>
      <li>
        <p>
          [C-1-2] MUST honor the Toast API and display Toasts from applications to end users in some highly visible manner.
        </p>
      </li>
    </ul>
    <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” and "Material" 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.
    </p>
    <p>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>[C-1-1] MUST NOT alter any of the <a href="http://developer.android.com/reference/android/R.style.html">Holo theme attributes</a> exposed to applications.
      </li>
      <li>[C-1-2] 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.
      </li>
    </ul>
    <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.
    </p>
    <ul>
      <li>Device implementations MAY modify the <a href="http://developer.android.com/reference/android/R.style.html">Device Default theme attributes</a> exposed to applications.
      </li>
    </ul>
    <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.
    </p>
    <p>
      If device implementations include a system status bar, they:
    </p>
    <ul>
      <li>[C-2-1] 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.
      </li>
      <li>[C-2-2] 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>) when an app requests a light status bar.
      </li>
    </ul>
    <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>
    <ul>
      <li>Device implementations capable of running live wallpapers reliably as described above SHOULD implement live wallpapers.
      </li>
    </ul>
    <p>
      If device implementations implement live wallpapers, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the platform feature flag android.software.live_wallpaper.
      </li>
    </ul>
    <h4 id="3_8_8_activity_switching">
      3.8.8. Activity Switching
    </h4>
    <p>
      The upstream Android source code includes the <a href="https://developer.android.com/guide/components/activities/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.
    </p>
    <p>
      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.
    </p>
    <p>
      If device implementations including the recents function navigation key as detailed in <a href="#7_2_3_navigation_keys">section 7.2.3</a> alter the interface, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support at least up to 7 displayed activities.
      </li>
      <li>SHOULD at least display the title of 4 activities at a time.
      </li>
      <li>[C-1-2] 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>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>
      <li>MAY display affiliated recents as a group that moves together.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to use the upstream Android user interface (or a similar thumbnail-based interface) for the overview screen.
      </li>
    </ul>
    <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.
    </p>
    <p>
      If device implementations allow users to use third-party input methods on the device, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the platform feature android.software.input_methods and support IME APIs as defined in the Android SDK documentation.
      </li>
      <li>[C-1-2] MUST provide a user-accessible mechanism to add and configure third-party input methods in response to the android.settings.INPUT_METHOD_SETTINGS intent.
      </li>
    </ul>
    <p>
      If device implementations declare the <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_AUTOFILL"><code>android.software.autofill</code></a> feature flag, they:
    </p>
    <ul>
      <li>[C-2-1] MUST fully implement the <a href="https://developer.android.com/reference/android/service/autofill/AutofillService.html"><code>AutofillService</code></a> and <a href="https://developer.android.com/reference/android/view/autofill/AutofillManager.html"><code>AutofillManager</code></a> APIs and honor the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_REQUEST_SET_AUTOFILL_SERVICE"><code>android.settings.REQUEST_SET_AUTOFILL_SERVICE</code></a> intent to show a default app settings menu to enable and disable autofill and change the default autofill service for the user.
      </li>
    </ul>
    <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.
    </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 to configure 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>
      If device implementations include a hardware sensor (e.g. GPS) that is capable of providing the location coordinates, they
    </p>
    <ul>
      <li>[C-1-2] MUST display the <a href="https://developer.android.com/reference/android/location/LocationManager.html#isLocationEnabled%28%29">current status of location</a> in the Location menu within Settings.
      </li>
      <li>[C-1-3] MUST NOT display <a href="https://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE">location modes</a> in the Location menu within Settings.
      </li>
    </ul>
    <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/Unicode10.0.0/">Unicode 10.0</a>.
    </p>
    <p>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>[C-1-1] MUST be capable of rendering these emoji characters in color glyph.
      </li>
      <li>[C-1-2] MUST include support for:
        <ul>
          <li>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 for the languages available on the device.
          </li>
          <li>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.
          </li>
        </ul>
      </li>
      <li>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>.
      </li>
    </ul>
    <p>
      If device implementations include an IME, they:
    </p>
    <ul>
      <li>SHOULD provide an input method to the user for these emoji characters.
      </li>
    </ul>
    <h4 id="3_8_14_multi-windows">
      3.8.14. Multi-windows
    </h4>
    <p>
      If device implementations have the capability to display multiple activities at the same time, they:
    </p>
    <ul>
      <li>[C-1-1] 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/guide/topics/ui/multi-window.html">multi-window mode support documentation</a> and meet the following requirements:
      </li>
      <li>[C-1-2] Applications can indicate whether they are capable of operating in multi-window mode in the <code>AndroidManifest.xml</code> file, either explicitly via setting the <a href="https://developer.android.com/reference/android/R.attr.html#resizeableActivity"><code>android:resizeableActivity</code></a> attribute to <code>true</code> or implicitly by having the targetSdkVersion &gt; 24. Apps that explicitly set this attribute to <code>false</code> in their manifest MUST NOT be launched in multi-window mode. Older apps with targetSdkVersion &lt; 24 that did not set this <code>android:resizeableActivity</code> attribute MAY 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>[C-1-3] MUST NOT offer split-screen or freeform mode if the screen height &lt; 440 dp and the screen width &lt; 440 dp.
      </li>
      <li>Device implementations with screen size <code>xlarge</code> SHOULD support freeform mode.
      </li>
    </ul>
    <p>
      If device implementations support multi-window mode(s), and the split screen mode, they:
    </p>
    <ul>
      <li>[C-2-1] MUST preload a <a href="https://developer.android.com/guide/topics/ui/multi-window.html#configuring">resizeable</a> launcher as the default.
      </li>
      <li>[C-2-2] MUST crop the docked activity of a split-screen multi-window but SHOULD show some content of it, if the Launcher app is the focused window.
      </li>
      <li>[C-2-3] MUST honor the declared <a href="https://developer.android.com/reference/android/R.styleable.html#AndroidManifestLayout_minWidth"><code>AndroidManifestLayout_minWidth</code></a> and <a href="https://developer.android.com/reference/android/R.styleable.html#AndroidManifestLayout_minHeight"><code>AndroidManifestLayout_minHeight</code></a> values of the third-party launcher application and not override these values in the course of showing some content of the docked activity.
      </li>
    </ul>
    <p>
      If device implementations support multi-window mode(s) and Picture-in-Picture multi-window mode, they:
    </p>
    <ul>
      <li>[C-3-1] MUST launch activities in picture-in-picture multi-window mode when the app is: * Targeting API level 26 or higher and declares <a href="https://developer.android.com/reference/android/R.attr.html#supportsPictureInPicture"><code>android:supportsPictureInPicture</code></a> * Targeting API level 25 or lower and declares both <a href="https://developer.android.com/reference/android/R.attr.html#resizeableActivity"><code>android:resizeableActivity</code></a> and <a href="https://developer.android.com/reference/android/R.attr.html#supportsPictureInPicture"><code>android:supportsPictureInPicture</code></a>.
      </li>
      <li>[C-3-2] MUST expose the actions in their SystemUI as specified by the current PIP activity through the <a href="https://developer.android.com/reference/android/app/PictureInPictureParams.Builder.html#setActions%28java.util.List%3Candroid.app.RemoteAction%3E%29"><code>setActions()</code></a> API.
      </li>
      <li>[C-3-3] MUST support aspect ratios greater than or equal to 1:2.39 and less than or equal to 2.39:1, as specified by the PIP activity through the <a href="https://developer.android.com/reference/android/app/PictureInPictureParams.Builder.html#setAspectRatio%28android.util.Rational%29"><code>setAspectRatio()</code></a> API.
      </li>
      <li>[C-3-4] MUST use <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_WINDOW"><code>KeyEvent.KEYCODE_WINDOW</code></a> to control the PIP window; if PIP mode is not implemented, the key MUST be available to the foreground activity.
      </li>
      <li>[C-3-5] MUST provide a user affordance to block an app from displaying in PIP mode; the AOSP implementation meets this requirement by having controls in the notification shade.
      </li>
      <li>[C-3-6] MUST allocate minimum width and height of 108 dp for the PIP window and minimum width of 240 dp and height of 135 dp for the PIP window when the <code>Configuration.uiMode</code> is configured as <a href="https://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_TELEVISION"><code>UI_MODE_TYPE_TELEVISION</code></a>.
      </li>
    </ul>
    <h4 id="3_8_15_display_cutout">
      3.8.15. Display Cutout
    </h4>
    <p>
      Android supports a Display Cutout as described in the SDK document. The <a href="https://developer.android.com/reference/android/view/DisplayCutout"><code>DisplayCutout</code></a> API defines an area on the edge of the display that is not functional for displaying content.
    </p>
    <p>
      If device implementations include display cutout(s), they:
    </p>
    <ul>
      <li>[C-1-1] MUST only have cutout(s) on the short edge(s) of the device. Conversely, if the device's aspect ratio is 1.0(1:1), they MUST NOT have cutout(s).
      </li>
      <li>[C-1-2] MUST NOT have more than one cutout per edge.
      </li>
      <li>[C-1-3] MUST honor the display cutout flags set by the app through the <a href="https://developer.android.com/reference/android/view/WindowManager.LayoutParams"><code>WindowManager.LayoutParams</code></a> API as described in the SDK.
      </li>
      <li>[C-1-4] MUST report correct values for all cutout metrics defined in the <a href="https://developer.android.com/reference/android/view/DisplayCutout"><code>DisplayCutout</code></a> API.
      </li>
    </ul>
    <h3 id="3_9_device_administration">
      3.9. Device Administration
    </h3>
    <p>
      Android includes features that allow security-aware applications to perform device administration functions at the system level, such as enforcing password policies or performing remote wipe, through the <a href="http://developer.android.com/guide/topics/admin/device-admin.html">Android Device Administration API</a>.
    </p>
    <p>
      If device implementations 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, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare <code>android.software.device_admin</code>.
      </li>
      <li>[C-1-2] MUST support device owner provisioning as described in <a href="#3_9_1_device_provisioning">section 3.9.1</a> and <a href="#3_9_1_1_device_owner_provisioning">section 3.9.1.1</a>.
      </li>
    </ul>
    <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 device implementations declare <code>android.software.device_admin</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support enrolling a Device Policy Client (DPC) as a <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp%28java.lang.String%29">Device Owner app</a> as described below:
        <ul>
          <li>When the device implementation has no user data is configured yet, it:
            <ul>
              <li>[C-1-3] MUST report <code>true</code> for <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)"><code>DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</code></a>.
              </li>
              <li>[C-1-4] 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>[C-1-5] 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>[C-1-6] MUST report <code>false</code> for the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)"><code>DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</code></a>.
              </li>
              <li>[C-1-7] MUST not enroll any DPC application as the Device Owner App any more.
              </li>
            </ul>
          </li>
        </ul>
      </li>
      <li>[C-1-2] MUST require some affirmative action during the provisioning process to consent to the app being set as Device Owner. Consent can be via user action or by some programmatic means during provisioning but it MUST NOT be hard coded or prevent the use of other Device Owner apps.
      </li>
    </ul>
    <p>
      If device implementations declare <code>android.software.device_admin</code>, but also include a proprietary Device Owner management solution and provide a mechanism to promote an application configured in their solution as a "Device Owner equivalent" to the standard "Device Owner" as recognized by the standard Android <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">DevicePolicyManager</a> APIs, they:
    </p>
    <ul>
      <li>[C-2-1] MUST have a process in place to verify that the specific app being promoted belongs to a legitimate enterprise device management solution and it has been already configured in the proprietary solution to have the rights equivalent as a "Device Owner".
      </li>
      <li>[C-2-2] MUST show the same AOSP Device Owner consent disclosure as the flow initiated by <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> prior to enrolling the DPC application as "Device Owner".
      </li>
      <li>MAY have user data on the device prior to enrolling the DPC application as "Device Owner".
      </li>
    </ul>
    <h5 id="3_9_1_2_managed_profile_provisioning">
      3.9.1.2 Managed profile provisioning
    </h5>
    <p>
      If device implementations declare <code>android.software.managed_users</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST implement the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE">APIs</a> allowing a Device Policy Controller (DPC) application to become 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>
      </li>
      <li>
        <p>
          [C-1-2] 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>) users experience MUST align with the AOSP implementation.
        </p>
      </li>
      <li>
        <p>
          [C-1-3] MUST provide the following user affordances within the Settings to indicate to the user when a particular system function has been disabled by the Device Policy Controller (DPC):
        </p>
        <ul>
          <li>A consistent icon or other user affordance (for example the upstream AOSP info icon) to represent when a particular setting is restricted by a Device Admin.
          </li>
          <li>A short explanation message, as provided by the Device Admin via the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setShortSupportMessage%28android.content.ComponentName,%20java.lang.CharSequence%29"><code>setShortSupportMessage</code></a>.
          </li>
          <li>The DPC application’s icon.
          </li>
        </ul>
      </li>
    </ul>
    <h4 id="3_9_2_managed_profile_support">
      3.9.2 Managed Profile Support
    </h4>
    <p>
      If device implementations declare <code>android.software.managed_users</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support managed profiles via the <code>android.app.admin.DevicePolicyManager</code> APIs.
      </li>
      <li>[C-1-2] MUST 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>[C-1-3] MUST 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 & Notifications.
      </li>
      <li>[C-1-4] MUST display a notification icon (similar to the AOSP upstream work badge) to indicate when user is within a managed profile application.
      </li>
      <li>[C-1-5] MUST 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>[C-1-6] Where a managed profile exists, MUST 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>[C-1-7] Where a managed profile exists, MUST 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>[C-1-8] MUST 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.
      </li>
      <li>[C-1-9] 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>[C-1-10] MUST support the ability to specify a separate lock screen meeting the following requirements to grant access to apps running in a managed profile.
        <ul>
          <li>Device implementations MUST honor the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_SET_NEW_PASSWORD"><code>DevicePolicyManager.ACTION_SET_NEW_PASSWORD</code></a> intent and show an interface to configure a separate lock screen credential for the managed profile.
          </li>
          <li>The lock screen credentials of the managed profile MUST use the same credential storage and management mechanisms as the parent profile, as documented on the <a href="http://source.android.com/security/authentication/index.html">Android Open Source Project Site</a>.
          </li>
          <li>The DPC <a href="https://developer.android.com/guide/topics/admin/device-admin.html#pwd">password policies</a> MUST apply to only the managed profile's lock screen credentials unless called upon the <code>DevicePolicyManager</code> instance returned by <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getParentProfileInstance%28android.content.ComponentName%29">getParentProfileInstance</a>.
          </li>
        </ul>
      </li>
      <li>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>
    </ul>
    <h3 id="3_9_3_managed_user_support">
      3.9.3 Managed User Support
    </h3>
    <p>
      If device implementations declare <code>android.software.managed_users</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST provide a user affordance to logout from the current user and switch back to the primary user in multiple-user session when <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isLogoutEnabled%28%29"><code>isLogoutEnabled</code></a> returns <code>true</code>. The user affordance MUST be accessible from the lockscreen without unlocking the device.
      </li>
    </ul>
    <h3 id="3_10_accessibility">
      3.10. Accessibility
    </h3>
    <p>
      Android provides an accessibility layer that helps users with disabilities to navigate their devices more easily. In addition, Android provides platform APIs that enable accessibility service implementations to receive callbacks for user and system events and generate alternate feedback mechanisms, such as text-to-speech, haptic feedback, and trackball/d-pad navigation.
    </p>
    <p>
      If device implementations support third-party accessibility services, they:
    </p>
    <ul>
      <li>[C-1-1] MUST provide an implementation of the Android accessibility framework as described in the <a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">accessibility APIs</a> SDK documentation.
      </li>
      <li>[C-1-2] MUST generate accessibility events and deliver the appropriate <code>AccessibilityEvent</code> to all registered <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html"><code>AccessibilityService</code></a> implementations as documented in the SDK.
      </li>
      <li>[C-1-3] MUST honor the <code>android.settings.ACCESSIBILITY_SETTINGS</code> intent to provide a user-accessible mechanism to enable and disable the third-party accessibility services alongside the preinstalled accessibility services.
      </li>
      <li>[C-1-4] MUST add a button in the system's navigation bar allowing the user to control the accessibility service when the enabled accessibility services declare the <a href="https://developer.android.com/reference/android/accessibilityservice/AccessibilityServiceInfo.html#FLAG%5FREQUEST%5FACCESSIBILITY%5FBUTTON"><code>AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON</code></a> . Note that for device implementations with no system navigation bar, this requirement is not applicable, but device implementations SHOULD provide a user affordance to control these accessibility services.
      </li>
    </ul>
    <p>
      If device implementations include preinstalled accessibility services, they:
    </p>
    <ul>
      <li>[C-2-1] MUST implement these preinstalled accessibility services as <a href="https://developer.android.com/reference/android/content/pm/ComponentInfo.html#directBootAware">Direct Boot Aware</a> apps when the data storage is encrypted with File Based Encryption (FBE).
      </li>
      <li>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>
    <h3 id="3_11_text-to-speech">
      3.11. Text-to-Speech
    </h3>
    <p>
      Android includes APIs that allow applications to make use of text-to-speech (TTS) services and allows service providers to provide implementations of TTS services.
    </p>
    <p>
      If device implementations reporting the feature android.hardware.audio.output, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the <a href="http://developer.android.com/reference/android/speech/tts/package-summary.html">Android TTS framework</a> APIs.
      </li>
    </ul>
    <p>
      If device implementations support installation of third-party TTS engines, they:
    </p>
    <ul>
      <li>[C-2-1] MUST provide user affordance to allow the user to select a TTS engine for use at system level.
      </li>
    </ul>
    <h3 id="3_12_tv_input_framework">
      3.12. TV Input Framework
    </h3>
    <p>
      The <a href="http://source.android.com/devices/tv/index.html">Android Television Input Framework (TIF)</a> simplifies the delivery of live content to Android Television devices. TIF provides a standard API to create input modules that control Android Television devices.
    </p>
    <p>
      If device implementations support TIF, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the platform feature <code>android.software.live_tv</code>.
      </li>
      <li>[C-1-2] MUST support all TIF APIs such that an application which uses these APIs and the <a href="https://source.android.com/devices/tv/index.html#third-party_input_example">third-party TIF-based inputs</a> service can be installed and used on the device.
      </li>
    </ul>
    <h3 id="3_13_quick_settings">
      3.13. Quick Settings
    </h3>
    <p>
      Android provides a Quick Settings UI component that allows quick access to frequently used or urgently needed actions.
    </p>
    <p>
      If device implementations include a Quick Settings UI component, they:
    </p>
    <ul>
      <li>[C-1-1] MUST allow the user to add or remove the tiles provided through the <a href="https://developer.android.com/reference/android/service/quicksettings/package-summary.html"><code>quicksettings</code></a> APIs from a third-party app.
      </li>
      <li>[C-1-2] MUST NOT automatically add a tile from a third-party app directly to the Quick Settings.
      </li>
      <li>[C-1-3] MUST display all the user-added tiles from third-party apps alongside the system-provided quick setting tiles.
      </li>
    </ul>
    <h3 id="3_14_media_ui">
      3.14. Media UI
    </h3>
    <p>
      If device implementations include the UI framework that supports third-party apps that depend on <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html"><code>MediaBrowser</code></a> and <a href="http://developer.android.com/reference/android/media/session/MediaSession.html"><code>MediaSession</code></a> , they:
    </p>
    <ul>
      <li>[C-1-1] MUST display <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.MediaItem.html">MediaItem</a> icons and notification icons unaltered.
      </li>
      <li>[C-1-2] MUST display those items as described by MediaSession, e.g., metadata, icons, imagery.
      </li>
      <li>[C-1-3] MUST show app title.
      </li>
      <li>[C-1-4] MUST have a drawer or other mechanism to present <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> hierarchy and provide user affordance for the <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> hierarchy.
      </li>
      <li>[C-1-5] MUST consider double tap of <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HEADSETHOOK"><code>KEYCODE_HEADSETHOOK</code></a> or <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE"><code>KEYCODE_MEDIA_PLAY_PAUSE</code></a> as <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_NEXT"><code>KEYCODE_MEDIA_NEXT</code></a> for <a href="https://developer.android.com/reference/android/media/session/MediaSession.Callback.html#onMediaButtonEvent%28android.content.Intent%29"><code>MediaSession.Callback#onMediaButtonEvent</code></a>.
      </li>
    </ul>
    <h3 id="3_15_instant_apps">
      3.15. Instant Apps
    </h3>
    <p>
      Device implementations MUST satisfy the following requirements:
    </p>
    <ul>
      <li>[C-0-1] Instant Apps MUST only be granted permissions that have the <a href="https://developer.android.com/reference/android/R.attr#protectionLevel"><code>android:protectionLevel</code></a> set to <code>"instant"</code>.
      </li>
      <li>[C-0-2] Instant Apps MUST NOT interact with installed apps via <a href="https://developer.android.com/reference/android/content/Intent.html">implicit intents</a> unless one of the following is true:
        <ul>
          <li>The component's intent pattern filter is exposed and has CATEGORY_BROWSABLE
          </li>
          <li>The action is one of ACTION_SEND, ACTION_SENDTO, ACTION_SEND_MULTIPLE
          </li>
          <li>The target is explicitly exposed with <a href="https://developer.android.com/reference/android/R.attr.html#visibleToInstantApps">android:visibleToInstantApps</a>
          </li>
        </ul>
      </li>
      <li>[C-0-3] Instant Apps MUST NOT interact explicitly with installed apps unless the component is exposed via android:visibleToInstantApps.
      </li>
      <li>[C-0-4] IInstalled Apps MUST NOT see details about Instant Apps on the device unless the Instant App explicitly connects to the installed application.
      </li>
    </ul>
    <h3 id="3_16_companion_device_pairing">
      3.16. Companion Device Pairing
    </h3>
    <p>
      Android includes support for companion device pairing to more effectively manage association with companion devices and provides the <a href="https://developer.android.com/reference/android/companion/CompanionDeviceManager.html"><code>CompanionDeviceManager</code></a> API for apps to access this feature.
    </p>
    <p>
      If device implementations support the companion device pairing feature, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the feature flag <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html?#FEATURE_COMPANION_DEVICE_SETUP"><code>FEATURE_COMPANION_DEVICE_SETUP</code></a> .
      </li>
      <li>[C-1-2] MUST ensure the APIs in the <a href="https://developer.android.com/reference/android/companion/package-summary.html"><code>android.companion</code></a> package is fully implemented.
      </li>
      <li>[C-1-3] MUST provide user affordances for the user to select/confirm a companion device is present and operational.
      </li>
    </ul>
    <h3 id="3_17_heavyweight_apps">
      3.17. Heavyweight Apps
    </h3>
    <p>
      If device implementations declare the feature <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_CANT_SAVE_STATE"><code>FEATURE_CANT_SAVE_STATE</code></a>, then they:
    </p>
    <ul>
      <li>[C-1-1] MUST have only one installed app that specifies <a href="https://developer.android.com/reference/android/R.attr#cantSaveState"><code>cantSaveState</code></a> running in the system at a time. If the user leaves such an app without explicitly exiting it (for example by pressing home while leaving an active activity the system, instead of pressing back with no remaining active activities in the system), then device implementations MUST prioritize that app in RAM as they do for other things that are expected to remain running, such as foreground services. While such an app is in the background, the system can still apply power management features to it, such as limiting CPU and network access.
      </li>
      <li>[C-1-2] MUST provide a UI affordance to chose the app that won't participate in the normal state save/restore mechanism once the user launches a second app declared with <a href="https://developer.android.com/reference/android/R.attr#cantSaveState"><code>cantSaveState</code></a> attribute.
      </li>
      <li>[C-1-3] MUST NOT apply other changes in policy to apps that specify <a href="https://developer.android.com/reference/android/R.attr#cantSaveState"><code>cantSaveState</code></a>, such as changing CPU performance or changing scheduling prioritization.
      </li>
    </ul>
    <p>
      If device implementations don't declare the feature <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_CANT_SAVE_STATE"><code>FEATURE_CANT_SAVE_STATE</code></a>, then they:
    </p>
    <ul>
      <li>[C-1-1] MUST ignore the <a href="https://developer.android.com/reference/android/R.attr#cantSaveState"><code>cantSaveState</code></a> attribute set by apps and MUST NOT change the app behavior based on that attribute.
      </li>
    </ul>
    <h2 id="4_application_packaging_compatibility">
      4. Application Packaging Compatibility
    </h2>
    <p>
      Devices implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST be capable of installing and running 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>.
      </li>
      <li>As the above requirement may be challenging, device implementations are RECOMMENDED to use the AOSP reference implementation's package management system.
      </li>
    </ul>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-2] MUST support verifying “.apk” files using the <a href="https://source.android.com/security/apksigning/v3.html">APK Signature Scheme v3</a> , <a href="https://source.android.com/security/apksigning/v2.html">APK Signature Scheme v2</a> and <a href="https://source.android.com/security/apksigning/v2.html#v1-verification">JAR signing</a>.
      </li>
      <li>[C-0-3] 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.
      </li>
      <li>
        <p>
          [C-0-4] MUST NOT allow apps other than the current "installer of record" for the package to silently uninstall the app without any user confirmation, 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>
      </li>
      <li>
        <p>
          [C-0-5] MUST have an activity that handles the <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_MANAGE_UNKNOWN_APP_SOURCES"><code>android.settings.MANAGE_UNKNOWN_APP_SOURCES</code></a> intent.
        </p>
      </li>
      <li>
        <p>
          [C-0-6] MUST NOT install application packages from unknown sources, unless the app that <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_INSTALL_PACKAGE">requests the installation</a> meets all the following requirements:
        </p>
        <ul>
          <li>It MUST declare the <a href="http://developer.android.com/reference/android/Manifest.permission.html#REQUEST_INSTALL_PACKAGES"><code>REQUEST_INSTALL_PACKAGES</code></a> permission or have the <code>android:targetSdkVersion</code> set at 24 or lower.
          </li>
          <li>It MUST have been granted permission by the user to install apps from unknown sources.
          </li>
        </ul>
      </li>
      <li>
        <p>
          SHOULD provide a user affordance to grant/revoke the permission to install apps from unknown sources per application, but MAY choose to implement this as a no-op and return <code>RESULT_CANCELED</code> for <a href="http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,int%29"><code>startActivityForResult()</code></a>, if the device implementation does not want to allow users to have this choice. However, even in such cases, they SHOULD indicate to the user why there is no such choice presented.
        </p>
      </li>
      <li>
        <p>
          [C-0-7] MUST display a warning dialog with the warning string that is provided through the system API <code>PackageManager.setHarmfulAppWarning</code> to the user before launching an activity in an application that has been marked by the same system API <code>PackageManager.setHarmfulAppWarning</code> as potentially harmful.
        </p>
      </li>
      <li>SHOULD provide a user affordance to choose to uninstall or launch an application on the warning dialog.
      </li>
    </ul>
    <h2 id="5_multimedia_compatibility">
      5. Multimedia Compatibility
    </h2>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST support the media formats, encoders, decoders, file types, and container formats defined in <a href="#5_1_media-codecs.md">section 5.1</a> for each and every codec declared by <code>MediaCodecList</code>.
      </li>
      <li>[C-0-2] MUST declare and report support of the encoders, decoders available to third-party applications via <a href="http://developer.android.com/reference/android/media/MediaCodecList.html"><code>MediaCodecList</code></a>.
      </li>
      <li>[C-0-3] MUST be able to decode and make available to third-party apps all the formats it can encode. This includes all bitstreams that its encoders generate and the profiles reported in its <a href="http://developer.android.com/reference/android/media/CamcorderProfile.html"><code>CamcorderProfile</code></a>.
      </li>
    </ul>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD aim for minimum codec latency, in others words, they
        <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>
      </li>
    </ul>
    <p>
      All of the codecs listed in the section 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>
    <h3 id="5_1_media_codecs">
      5.1. Media Codecs
    </h3>
    <h4 id="5_1_1_audio_encoding">
      5.1.1. Audio Encoding
    </h4>
    <p>
      See more details in <a href="#5_1_3_audio_codecs_details">5.1.3. Audio Codecs Details</a>.
    </p>
    <p>
      If device implementations declare <code>android.hardware.microphone</code>, they MUST support the following audio encoding:
    </p>
    <ul>
      <li>[C-1-1] PCM/WAVE
      </li>
    </ul>
    <h4 id="5_1_2_audio_decoding">
      5.1.2. Audio Decoding
    </h4>
    <p>
      See more details in <a href="#5_1_3_audio_codecs_details">5.1.3. Audio Codecs Details</a>.
    </p>
    <p>
      If device implementations declare support for the <code>android.hardware.audio.output</code> feature, they must support decoding the following audio formats:
    </p>
    <ul>
      <li>[C-1-1] MPEG-4 AAC Profile (AAC LC)
      </li>
      <li>[C-1-2] MPEG-4 HE AAC Profile (AAC+)
      </li>
      <li>[C-1-3] MPEG-4 HE AACv2 Profile (enhanced AAC+)
      </li>
      <li>[C-1-4] AAC ELD (enhanced low delay AAC)
      </li>
      <li>[C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profile, which includes the USAC Baseline Profile, and ISO/IEC 23003-4 Dynamic Range Control Profile)
      </li>
      <li>[C-1-5] FLAC
      </li>
      <li>[C-1-6] MP3
      </li>
      <li>[C-1-7] MIDI
      </li>
      <li>[C-1-8] Vorbis
      </li>
      <li>[C-1-9] PCM/WAVE
      </li>
      <li>[C-1-10] Opus
      </li>
    </ul>
    <p>
      If device implementations support 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 <code>android.media.MediaCodec</code> API, the following MUST be supported:
    </p>
    <ul>
      <li>[C-2-1] Decoding MUST be 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>[C-2-2] Dynamic range metadata MUST be as defined in "Dynamic Range Control (DRC)" in ISO/IEC 14496-3, and the <code>android.media.MediaFormat</code> DRC keys to configure the dynamic range-related behaviors of the audio decoder. The AAC DRC keys were introduced in API 21,and are: <code>KEY_AAC_DRC_ATTENUATION_FACTOR</code>, <code>KEY_AAC_DRC_BOOST_FACTOR</code>, <code>KEY_AAC_DRC_HEAVY_COMPRESSION</code>, <code>KEY_AAC_DRC_TARGET_REFERENCE_LEVEL</code> and <code>KEY_AAC_ENCODED_TARGET_LEVEL</code>.
      </li>
    </ul>
    <p>
      When decoding USAC audio, MPEG-D (ISO/IEC 23003-4):
    </p>
    <ul>
      <li>[C-3-1] Loudness and DRC metadata MUST be interpreted and applied according to MPEG-D DRC Dynamic Range Control Profile Level 1.
      </li>
      <li>[C-3-2] The decoder MUST behave according to the configuration set with the following <code>android.media.MediaFormat</code> keys: <code>KEY_AAC_DRC_TARGET_REFERENCE_LEVEL</code> and <code>KEY_AAC_DRC_EFFECT_TYPE</code>.
      </li>
    </ul>
    <p>
      MPEG-4 AAC, HE AAC, and HE AACv2 profile decoders:
    </p>
    <ul>
      <li>MAY support loudness and dynamic range control using ISO/IEC 23003-4 Dynamic Range Control Profile.
      </li>
    </ul>
    <p>
      If ISO/IEC 23003-4 is supported and if both ISO/IEC 23003-4 and ISO/IEC 14496-3 metadata are present in a decoded bitstream, then:
    </p>
    <ul>
      <li>ISO/IEC 23003-4 metadata SHALL take precedence.
      </li>
    </ul>
    <h4 id="5_1_3_audio_codecs_details">
      5.1.3. Audio Codecs Details
    </h4>
    <table>
      <tr>
        <th>
          Format/Codec
        </th>
        <th>
          Details
        </th>
        <th>
          Supported File Types/Container Formats
        </th>
      </tr>
      <tr>
        <td>
          MPEG-4 AAC Profile<br>
          (AAC LC)
        </td>
        <td>
          Support for mono/stereo/5.0/5.1 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, ADIF not supported)
            </li>
            <li class="table_list">MPEG-TS (.ts, not seekable)
            </li>
          </ul>
        </td>
      </tr>
      <tr>
        <td>
          MPEG-4 HE AAC Profile (AAC+)
        </td>
        <td>
          Support for mono/stereo/5.0/5.1 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>
          Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz.
        </td>
        <td></td>
      </tr>
      <tr>
        <td>
          AAC ELD (enhanced low delay AAC)
        </td>
        <td>
          Support for mono/stereo content with standard sampling rates from 16 to 48 kHz.
        </td>
        <td></td>
      </tr>
      <tr>
        <td>
          USAC
        </td>
        <td>
          Support for mono/stereo content with standard sampling rates from 7.35 to 48 kHz.
        </td>
        <td>
          MPEG-4 (.mp4, .m4a)
        </td>
      </tr>
      <tr>
        <td>
          AMR-NB
        </td>
        <td>
          4.75 to 12.2 kbps sampled @ 8 kHz
        </td>
        <td>
          3GPP (.3gp)
        </td>
      </tr>
      <tr>
        <td>
          AMR-WB
        </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>
          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>
          Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR)
        </td>
        <td>
          MP3 (.mp3)
        </td>
      </tr>
      <tr>
        <td>
          MIDI
        </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>
          <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>
          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>
          Matroska (.mkv), Ogg(.ogg)
        </td>
      </tr>
    </table>
    <h4 id="5_1_4_image_encoding">
      5.1.4. Image Encoding
    </h4>
    <p>
      See more details in <a href="#5_1_6_image_codecs_details">5.1.6. Image Codecs Details</a>.
    </p>
    <p>
      Device implementations MUST support encoding the following image encoding:
    </p>
    <ul>
      <li>[C-0-1] JPEG
      </li>
      <li>[C-0-2] PNG
      </li>
      <li>[C-0-3] WebP
      </li>
    </ul>
    <h4 id="5_1_5_image_decoding">
      5.1.5. Image Decoding
    </h4>
    <p>
      See more details in <a href="#5_1_6_image_codecs_details">5.1.6. Image Codecs Details</a>.
    </p>
    <p>
      Device implementations MUST support decoding the following image encoding:
    </p>
    <ul>
      <li>[C-0-1] JPEG
      </li>
      <li>[C-0-2] GIF
      </li>
      <li>[C-0-3] PNG
      </li>
      <li>[C-0-4] BMP
      </li>
      <li>[C-0-5] WebP
      </li>
      <li>[C-0-6] Raw
      </li>
      <li>[C-0-7] HEIF (HEIC)
      </li>
    </ul>
    <h4 id="5_1_6_image_codecs_details">
      5.1.6. Image Codecs Details
    </h4>
    <table>
      <tr>
        <th>
          Format/Codec
        </th>
        <th>
          Details
        </th>
        <th>
          Supported File Types/Container Formats
        </th>
      </tr>
      <tr>
        <td>
          JPEG
        </td>
        <td>
          Base+progressive
        </td>
        <td>
          JPEG (.jpg)
        </td>
      </tr>
      <tr>
        <td>
          GIF
        </td>
        <td></td>
        <td>
          GIF (.gif)
        </td>
      </tr>
      <tr>
        <td>
          PNG
        </td>
        <td></td>
        <td>
          PNG (.png)
        </td>
      </tr>
      <tr>
        <td>
          BMP
        </td>
        <td></td>
        <td>
          BMP (.bmp)
        </td>
      </tr>
      <tr>
        <td>
          WebP
        </td>
        <td></td>
        <td>
          WebP (.webp)
        </td>
      </tr>
      <tr>
        <td>
          Raw
        </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>
      <tr>
        <td>
          HEIF
        </td>
        <td>
          Image, Image collection, Image sequence
        </td>
        <td>
          HEIF (.heif), HEIC (.heic)
        </td>
      </tr>
    </table>
    <h4 id="5_1_7_video_codecs">
      5.1.7. Video Codecs
    </h4>
    <ul>
      <li>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>.
      </li>
    </ul>
    <p>
      If device implementations include a video decoder or encoder:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] 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>
          [C-1-2] Video encoders and decoders MUST support YUV420 flexible color format (COLOR_FormatYUV420Flexible).
        </p>
      </li>
    </ul>
    <p>
      If device implementations advertise HDR profile support through <a href="https://developer.android.com/reference/android/view/Display.HdrCapabilities.html"><code>Display.HdrCapabilities</code></a>, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support HDR static metadata parsing and handling.
      </li>
    </ul>
    <p>
      If device implementations advertise intra refresh support through <code>FEATURE_IntraRefresh</code> in the <a href="https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#FEATURE_IntraRefresh"><code>MediaCodecInfo.CodecCapabilities</code></a> class, they:
    </p>
    <ul>
      <li>[C-3-1] MUST support the refresh periods in the range of 10 - 60 frames and accurately operate within 20% of configured refresh period.
      </li>
    </ul>
    <h4 id="5_1_8_video_codecs_list">
      5.1.8. Video Codecs List
    </h4>
    <table>
      <tr>
        <th>
          Format/Codec
        </th>
        <th>
          Details
        </th>
        <th>
          Supported File Types/<br>
          Container Formats
        </th>
      </tr>
      <tr>
        <td>
          H.263
        </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>
          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>
          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>
          Main Profile
        </td>
        <td>
          MPEG2-TS
        </td>
      </tr>
      <tr>
        <td>
          MPEG-4 SP
        </td>
        <td></td>
        <td>
          3GPP (.3gp)
        </td>
      </tr>
      <tr>
        <td>
          VP8
        </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)
            </li>
          </ul>
        </td>
      </tr>
      <tr>
        <td>
          VP9
        </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)
            </li>
          </ul>
        </td>
      </tr>
    </table>
    <h3 id="5_2_video_encoding">
      5.2. Video Encoding
    </h3>
    <p>
      If device implementations support any video encoder and make it available to third-party apps, they:
    </p>
    <ul>
      <li>SHOULD NOT be, over two sliding windows, more than ~15% over the bitrate between intraframe (I-frame) intervals.
      </li>
      <li>SHOULD NOT be more than ~100% over the bitrate over a sliding window of 1 second.
      </li>
    </ul>
    <p>
      If device implementations include an embedded screen display with the diagonal length of at least 2.5 inches or include a video output port or declare the support of a camera via the <code>android.hardware.camera.any</code> feature flag, they:
    </p>
    <ul>
      <li>[C-1-1] MUST include the support of at least one of the VP8 or H.264 video encoders, and make it available for third-party applications.
      </li>
      <li>SHOULD support both VP8 and H.264 video encoders, and make it available for third-party applications.
      </li>
    </ul>
    <p>
      If device implementations support any of the H.264, VP8, VP9 or HEVC video encoders and make it available to third-party applications, they:
    </p>
    <ul>
      <li>[C-2-1] 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>
      If device implementations support the MPEG-4 SP video encoder and make it available to third-party apps, they:
    </p>
    <ul>
      <li>SHOULD support dynamically configurable bitrates for the supported encoder.
      </li>
    </ul>
    <h4 id="5_2_1_h_263">
      5.2.1. H.263
    </h4>
    <p>
      If device implementations support H.263 encoders and make it available to third-party apps, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Baseline Profile Level 45.
      </li>
      <li>SHOULD support dynamically configurable bitrates for the supported encoder.
      </li>
    </ul>
    <h4 id="5_2_2_h-264">
      5.2.2. H-264
    </h4>
    <p>
      If device implementations support H.264 codec, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Baseline Profile Level 3. 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>[C-1-2] 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>
    </ul>
    <p>
      If device implementations report support of H.264 encoding for 720p or 1080p resolution videos through the media APIs, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support the encoding profiles in the following table.
      </li>
    </ul>
    <table>
      <tr>
        <th></th>
        <th>
          SD (Low quality)
        </th>
        <th>
          SD (High quality)
        </th>
        <th>
          HD 720p
        </th>
        <th>
          HD 1080p
        </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>
    <h4 id="5_2_3_vp8">
      5.2.3. VP8
    </h4>
    <p>
      If device implementations support VP8 codec, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the SD video encoding profiles.
      </li>
      <li>SHOULD support the following HD (High Definition) video encoding profiles.
      </li>
      <li>SHOULD support writing Matroska WebM files.
      </li>
      <li>SHOULD use a hardware VP8 codec that meets the <a href="http://www.webmproject.org/hardware/rtc-coding-requirements">WebM project RTC hardware coding requirements</a>, to ensure acceptable quality of web video streaming and video-conference services.
      </li>
    </ul>
    <p>
      If device implementations report support of VP8 encoding for 720p or 1080p resolution videos through the media APIs, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support the encoding profiles in the following table.
      </li>
    </ul>
    <table>
      <tr>
        <th></th>
        <th>
          SD (Low quality)
        </th>
        <th>
          SD (High quality)
        </th>
        <th>
          HD 720p
        </th>
        <th>
          HD 1080p
        </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>
    <h4 id="5_2_4_vp9">
      5.2.4. VP9
    </h4>
    <p>
      If device implementations support VP9 codec, they:
    </p>
    <ul>
      <li>SHOULD support writing Matroska WebM files.
      </li>
    </ul>
    <h3 id="5_3_video_decoding">
      5.3. Video Decoding
    </h3>
    <p>
      If device implementations support VP8, VP9, H.264, or H.265 codecs, they:
    </p>
    <ul>
      <li>[C-1-1] 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.
      </li>
    </ul>
    <p>
      If device implementations declare support for the Dolby Vision decoder through <a href="https://developer.android.com/reference/android/view/Display.HdrCapabilities.html#HDR_TYPE_DOLBY_VISION"><code>HDR_TYPE_DOLBY_VISION</code></a> , they:
    </p>
    <ul>
      <li>[C-2-1] MUST provide a Dolby Vision-capable extractor.
      </li>
      <li>[C-2-2] MUST properly display Dolby Vision content on the device screen or on a standard video output port (e.g., HDMI).
      </li>
      <li>[C-2-3] 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.
      </li>
    </ul>
    <h4 id="5_3_1_mpeg-2">
      5.3.1. MPEG-2
    </h4>
    <p>
      If device implementations support MPEG-2 decoders, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the Main Profile High Level.
      </li>
    </ul>
    <h4 id="5_3_2_h_263">
      5.3.2. H.263
    </h4>
    <p>
      If device implementations support H.263 decoders, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Baseline Profile Level 30 and Level 45.
      </li>
    </ul>
    <h4 id="5_3_3_mpeg-4">
      5.3.3. MPEG-4
    </h4>
    <p>
      If device implementations with MPEG-4 decoders, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Simple Profile Level 3.
      </li>
    </ul>
    <h4 id="5_3_4_h_264">
      5.3.4. H.264
    </h4>
    <p>
      If device implementations support H.264 decoders, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Main Profile Level 3.1 and Baseline Profile. Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL.
      </li>
      <li>[C-1-2] 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>
    </ul>
    <p>
      If the height that is reported by the <code>Display.getSupportedModes()</code> method is equal or greater than the video resolution, device implementations:
    </p>
    <ul>
      <li>[C-2-1] MUST support the HD 720p video decoding profiles in the following table.
      </li>
      <li>[C-2-2] MUST support the HD 1080p video decoding profiles in the following table.
      </li>
    </ul>
    <table>
      <tr>
        <th></th>
        <th>
          SD (Low quality)
        </th>
        <th>
          SD (High quality)
        </th>
        <th>
          HD 720p
        </th>
        <th>
          HD 1080p
        </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>Television</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>
    <h4 id="5_3_5_h_265_(hevc)">
      5.3.5. H.265 (HEVC)
    </h4>
    <p>
      If device implementations support H.265 codec, they:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] MUST support the HD decoding profiles as indicated in the following table if there is a hardware decoder.
      </li>
    </ul>
    <p>
      If the height that is reported by the <code>Display.getSupportedModes()</code> method is equal to or greater than the video resolution, then:
    </p>
    <ul>
      <li>[C-2-1] Device implementations MUST support at least one of H.265 or VP9 decoding of 720, 1080 and UHD profiles.
      </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/60 fps (60 fps<sup>Television with H.265 hardware decoding</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>
    <h4 id="5_3_6_vp8">
      5.3.6. VP8
    </h4>
    <p>
      If device implementations support VP8 codec, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the SD decoding profiles in the following table.
      </li>
      <li>SHOULD use a hardware VP8 codec that meets the <a href="" title="http://www.webmproject.org/hardware/rtc-coding-requirements/">requirements</a>.
      </li>
      <li>SHOULD support the HD decoding profiles in the following table.
      </li>
    </ul>
    <p>
      If the height as reported by the <code>Display.getSupportedModes()</code> method is equal or greater than the video resolution, then:
    </p>
    <ul>
      <li>[C-2-1] Device implementations MUST support 720p profiles in the following table.
      </li>
      <li>[C-2-2] Device implementations MUST support 1080p profiles in the following table.
      </li>
    </ul>
    <table>
      <tr>
        <th></th>
        <th>
          SD (Low quality)
        </th>
        <th>
          SD (High quality)
        </th>
        <th>
          HD 720p
        </th>
        <th>
          HD 1080p
        </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>Television</sup>)
        </td>
        <td>
          30 (60 fps<sup>Television</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>
    <h4 id="5_3_7_vp9">
      5.3.7. VP9
    </h4>
    <p>
      If device implementations support VP9 codec, they:
    </p>
    <ul>
      <li>[C-1-1] 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>
    </ul>
    <p>
      If device implementations support VP9 codec and a hardware decoder:
    </p>
    <ul>
      <li>[C-2-1] MUST support the HD decoding profiles as indicated in the following table.
      </li>
    </ul>
    <p>
      If the height that is reported by the <code>Display.getSupportedModes()</code> method is equal to or greater than the video resolution, then:
    </p>
    <ul>
      <li>[C-3-1] Device implementations MUST support at least one of VP9 or H.265 decoding of the 720, 1080 and UHD profiles.
      </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>Television with VP9 hardware decoding</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>
    <h3 id="5_4_audio_recording">
      5.4. Audio Recording
    </h3>
    <p>
      While some of the requirements outlined in this section are listed as SHOULD since Android 4.3, the Compatibility Definition for future versions are planned to change these to MUST. Existing and new Android devices are <strong>STRONGLY RECOMMENDED</strong> to meet these requirements that are listed 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>
      If device implementations declare <code>android.hardware.microphone</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] 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 Hz
          </li>
          <li>
            <strong>Channels</strong>: Mono
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-1-2] MUST capture at above sample rates without up-sampling.
        </p>
      </li>
      <li>[C-1-3] MUST include an appropriate anti-aliasing filter when the sample rates given above are captured with down-sampling.
      </li>
      <li>
        <p>
          SHOULD allow AM radio and DVD quality capture of raw audio content, which means the following characteristics:
        </p>
        <ul>
          <li>
            <strong>Format</strong>: Linear PCM, 16-bit
          </li>
          <li>
            <strong>Sampling rates</strong>: 22050, 48000 Hz
          </li>
          <li>
            <strong>Channels</strong>: Stereo
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations allow AM radio and DVD quality capture of raw audio content, they:
    </p>
    <ul>
      <li>[C-2-1] MUST capture without up-sampling at any ratio higher than 16000:22050 or 44100:48000.
      </li>
      <li>[C-2-2] MUST include an appropriate anti-aliasing filter for any up-sampling or down-sampling.
      </li>
    </ul>
    <h4 id="5_4_2_capture_for_voice_recognition">
      5.4.2. Capture for Voice Recognition
    </h4>
    <p>
      If device implementations declare <code>android.hardware.microphone</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST capture <code>android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION</code> audio source at one of the sampling rates, 44100 and 48000.
      </li>
      <li>[C-1-2] MUST, by default, disable any noise reduction audio processing when recording an audio stream from the <code>AudioSource.VOICE_RECOGNITION</code> audio source.
      </li>
      <li>[C-1-3] MUST, by default, disable any automatic gain control when recording an audio stream from the <code>AudioSource.VOICE_RECOGNITION</code> audio source.
      </li>
      <li>SHOULD record the voice recognition audio stream with approximately flat amplitude versus frequency characteristics: specifically, ±3 dB, from 100 Hz to 4000 Hz.
      </li>
      <li>SHOULD record the voice recognition audio stream with input sensitivity set such that a 90 dB sound power level (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.
      </li>
      <li>SHOULD record the voice recognition audio stream so that the PCM amplitude levels 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>SHOULD record the voice recognition audio stream with total harmonic distortion (THD) less than 1% for 1 kHz at 90 dB SPL input level at the microphone.
      </li>
    </ul>
    <p>
      If device implementations declare <code>android.hardware.microphone</code> and noise suppression (reduction) technologies tuned for speech recognition, they:
    </p>
    <ul>
      <li>[C-2-1] MUST allow this audio affect to be controllable with the <code>android.media.audiofx.NoiseSuppressor</code> API.
      </li>
      <li>[C-2-2] MUST uniquely identify each noise suppression technology implementation via the <code>AudioEffect.Descriptor.uuid</code> field.
      </li>
    </ul>
    <h4 id="5_4_3_capture_for_rerouting_of_playback">
      5.4.3. Capture for Rerouting of Playback
    </h4>
    <p>
      The <code>android.media.MediaRecorder.AudioSource</code> class includes the <code>REMOTE_SUBMIX</code> audio source.
    </p>
    <p>
      If device implementations declare both <code>android.hardware.audio.output</code> and <code>android.hardware.microphone</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST properly implement the <code>REMOTE_SUBMIX</code> audio source so that when an application uses the <code>android.media.AudioRecord</code> API to record from this audio source, it captures a mix of all audio streams except for the following:
        </p>
        <ul>
          <li>
            <code>AudioManager.STREAM_RING</code>
          </li>
          <li>
            <code>AudioManager.STREAM_ALARM</code>
          </li>
          <li>
            <code>AudioManager.STREAM_NOTIFICATION</code>
          </li>
        </ul>
      </li>
    </ul>
    <h3 id="5_5_audio_playback">
      5.5. Audio Playback
    </h3>
    <p>
      Android includes the support to allow apps to playback audio through the audio output peripheral as defined in section 7.8.2.
    </p>
    <h4 id="5_5_1_raw_audio_playback">
      5.5.1. Raw Audio Playback
    </h4>
    <p>
      If device implementations declare <code>android.hardware.audio.output</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST allow playback of raw audio content with the following characteristics:
        </p>
        <ul>
          <li>
            <strong>Format</strong>: Linear PCM, 16-bit, 8-bit, float
          </li>
          <li>
            <strong>Channels</strong>: Mono, Stereo, valid multichannel configurations with up to 8 channels
          </li>
          <li>
            <strong>Sampling rates (in Hz)</strong>:
            <ul>
              <li>8000, 11025, 16000, 22050, 32000, 44100, 48000 at the channel configurations listed above
              </li>
              <li>96000 in mono and stereo
              </li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <p>
          SHOULD allow playback of raw audio content with the following characteristics:
        </p>
        <ul>
          <li>
            <strong>Sampling rates</strong>: 24000, 48000
          </li>
        </ul>
      </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.
    </p>
    <p>
      If device implementations declare the feature <code>android.hardware.audio.output</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the <code>EFFECT_TYPE_EQUALIZER</code> and <code>EFFECT_TYPE_LOUDNESS_ENHANCER</code> implementations controllable through the AudioEffect subclasses <code>Equalizer</code>, <code>LoudnessEnhancer</code>.
      </li>
      <li>[C-1-2] MUST support the visualizer API implementation, controllable through the <code>Visualizer</code> class.
      </li>
      <li>[C-1-3] MUST support the <code>EFFECT_TYPE_DYNAMICS_PROCESSING</code> implementation controllable through the AudioEffect subclass <a href="https://developer.android.com/reference/android/media/audiofx/DynamicsProcessing"><code>DynamicsProcessing</code></a>.
      </li>
      <li>SHOULD support the <code>EFFECT_TYPE_BASS_BOOST</code>, <code>EFFECT_TYPE_ENV_REVERB</code>, <code>EFFECT_TYPE_PRESET_REVERB</code>, and <code>EFFECT_TYPE_VIRTUALIZER</code> implementations controllable through the <code>AudioEffect</code> sub-classes <code>BassBoost</code>, <code>EnvironmentalReverb</code>, <code>PresetReverb</code>, and <code>Virtualizer</code>.
      </li>
    </ul>
    <h4 id="5_5_3_audio_output_volume">
      5.5.3. Audio Output Volume
    </h4>
    <p>
      Automotive device implementations:
    </p>
    <ul>
      <li>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>.
      </li>
    </ul>
    <h3 id="5_6_audio_latency">
      5.6. Audio Latency
    </h3>
    <p>
      Audio latency is the time delay as an audio signal passes through a system. Many classes of applications rely on short latencies, to achieve real-time sound effects.
    </p>
    <p>
      For the purposes of this section, use the following definitions:
    </p>
    <ul>
      <li>
        <strong>output latency</strong>. The interval between when an application writes a frame of PCM-coded data and when the corresponding sound is presented to environment at an on-device transducer or signal leaves the device via a port and can be observed externally.
      </li>
      <li>
        <strong>cold output latency</strong>. The output latency for the first frame, when the audio output system has been idle and powered down prior to the request.
      </li>
      <li>
        <strong>continuous output latency</strong>. The output latency for subsequent frames, after the device is playing audio.
      </li>
      <li>
        <strong>input latency</strong>. The interval between when a sound is presented by environment to device at an on-device transducer or signal enters the device via a port and when an application reads the corresponding frame of PCM-coded data.
      </li>
      <li>
        <strong>lost input</strong>. The initial portion of an input signal that is unusable or unavailable.
      </li>
      <li>
        <strong>cold input latency</strong>. The sum of lost input time and the input latency for the first frame, when the audio input system has been idle and powered down prior to the request.
      </li>
      <li>
        <strong>continuous input latency</strong>. The input latency for subsequent frames, while the device is capturing audio.
      </li>
      <li>
        <strong>cold output jitter</strong>. The variability among separate measurements of cold output latency values.
      </li>
      <li>
        <strong>cold input jitter</strong>. The variability among separate measurements of cold input latency values.
      </li>
      <li>
        <strong>continuous round-trip latency</strong>. The sum of continuous input latency plus continuous output latency plus one buffer period. The buffer period allows time for the app to process the signal and time for the app to mitigate phase difference between input and output streams.
      </li>
      <li>
        <strong>OpenSL ES PCM buffer queue API</strong>. The set of PCM-related <a href="https://developer.android.com/ndk/guides/audio/opensl/index.html">OpenSL ES</a> APIs within <a href="https://developer.android.com/ndk/index.html">Android NDK</a>.
      </li>
      <li>
        <strong>AAudio native audio API</strong>. The set of <a href="https://developer.android.com/ndk/guides/audio/aaudio/aaudio.html">AAudio</a> APIs within <a href="https://developer.android.com/ndk/index.html">Android NDK</a>.
      </li>
      <li>
        <strong>Timestamp</strong>. A pair consisting of a relative frame position within a stream and the estimated time when that frame enters or leaves the audio processing pipeline on the associated endpoint. See also <a href="https://developer.android.com/reference/android/media/AudioTimestamp">AudioTimestamp</a>.
      </li>
    </ul>
    <p>
      If device implementations declare <code>android.hardware.audio.output</code> they are STRONGLY RECOMMENDED to meet or exceed the following requirements:
    </p>
    <ul>
      <li>[C-SR] Cold output latency of 100 milliseconds or less
      </li>
      <li>[C-SR] Continuous output latency of 45 milliseconds or less
      </li>
      <li>[C-SR] Minimize the cold output jitter
      </li>
      <li>[C-SR] The output timestamp returned by <a href="https://developer.android.com/reference/android/media/AudioTrack.html#getTimestamp(android.media.AudioTimestamp)">AudioTrack.getTimestamp</a> and <code>AAudioStream_getTimestamp</code> is accurate to +/- 1 ms.
      </li>
    </ul>
    <p>
      If device implementations meet the above requirements, after any initial calibration, when using both the OpenSL ES PCM buffer queue and AAudio native audio APIs, for continuous output latency and cold output latency over at least one supported audio output device, they are:
    </p>
    <ul>
      <li>[C-SR] STRONGLY RECOMMENDED to report low-latency audio by declaring <code>android.hardware.audio.low_latency</code> feature flag.
      </li>
      <li>[C-SR] STRONGLY RECOMMENDED to meet the requirements for low-latency audio via the AAudio API.
      </li>
      <li>[C-SR] STRONGLY RECOMMENDED to ensure that for streams that return <a href="https://developer.android.com/ndk/guides/audio/aaudio/aaudio#performance-mode"><code>AAUDIO_PERFORMANCE_MODE_LOW_LATENCY</code></a> from <a href="https://developer.android.com/ndk/reference/group/audio#aaudiostream_getperformancemode"><code>AAudioStream_getPerformanceMode()</code></a>, the value returned by <a href="https://developer.android.com/ndk/reference/group/audio#aaudiostream_getframesperburst"><code>AAudioStream_getFramesPerBurst()</code></a> is less than or equal to the value returned by <a href="https://developer.android.com/reference/android/media/AudioManager.html#getProperty%28java.lang.String%29"><code>android.media.AudioManager.getProperty(String)</code></a> for property key <a href="https://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_OUTPUT_FRAMES_PER_BUFFER"><code>AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER</code></a>.
      </li>
    </ul>
    <p>
      If device implementations do not meet the requirements for low-latency audio via both the OpenSL ES PCM buffer queue and AAudio native audio APIs, they:
    </p>
    <ul>
      <li>[C-1-1] MUST NOT report support for low-latency audio.
      </li>
    </ul>
    <p>
      If device implementations include <code>android.hardware.microphone</code>, they are STRONGLY RECOMMENDED to meet these input audio requirements:
    </p>
    <ul>
      <li>[C-SR] Cold input latency of 100 milliseconds or less.
      </li>
      <li>[C-SR] Continuous input latency of 30 milliseconds or less.
      </li>
      <li>[C-SR] Continuous round-trip latency of 50 milliseconds or less.
      </li>
      <li>[C-SR] Minimize the cold input jitter.
      </li>
      <li>[C-SR] Limit the error in input timestamps, as returned by <a href="https://developer.android.com/reference/android/media/AudioRecord.html#getTimestamp(android.media.AudioTimestamp,%20int)">AudioRecord.getTimestamp</a> or <code>AAudioStream_getTimestamp</code>, to +/- 1 ms.
      </li>
    </ul>
    <h3 id="5_7_network_protocols">
      5.7. Network Protocols
    </h3>
    <p>
      Device implementations 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.
    </p>
    <p>
      If device implementations include an audio or a video decoder, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST support all required codecs and container formats in <a href="#5_1_media_codecs">section 5.1</a> over HTTP(S).
        </p>
      </li>
      <li>
        <p>
          [C-1-2] MUST support the media segment formats shown in the Media Segment Formats table below over <a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-07">HTTP Live Streaming draft protocol, Version 7</a>.
        </p>
      </li>
      <li>
        <p>
          [C-1-3] MUST support the following RTP audio video profile and related codecs in the RTSP table below. For exceptions please see the table footnotes in <a href="#5_1_media_codecs">section 5.1</a>.
        </p>
      </li>
    </ul>
    <p>
      <strong>Media Segment Formats</strong>
    </p>
    <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>
    <p>
      <strong>RTSP (RTP, SDP)</strong>
    </p>
    <table>
      <tr>
        <th>
          Profile name
        </th>
        <th>
          Reference(s)
        </th>
        <th>
          Required codec support
        </th>
      </tr>
      <tr>
        <td>
          H264 AVC
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc6184">RFC 6184</a>
        </td>
        <td>
          See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H264 AVC
        </td>
      </tr>
      <tr>
        <td>
          MP4A-LATM
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a>
        </td>
        <td>
          See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
        </td>
      </tr>
      <tr>
        <td>
          H263-1998
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc3551">RFC 3551</a><br>
          <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a><br>
          <a href="https://tools.ietf.org/html/rfc2190">RFC 2190</a>
        </td>
        <td>
          See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
        </td>
      </tr>
      <tr>
        <td>
          H263-2000
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a>
        </td>
        <td>
          See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
        </td>
      </tr>
      <tr>
        <td>
          AMR
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a>
        </td>
        <td>
          See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-NB
        </td>
      </tr>
      <tr>
        <td>
          AMR-WB
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a>
        </td>
        <td>
          See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-WB
        </td>
      </tr>
      <tr>
        <td>
          MP4V-ES
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a>
        </td>
        <td>
          See <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on MPEG-4 SP
        </td>
      </tr>
      <tr>
        <td>
          mpeg4-generic
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc3640">RFC 3640</a>
        </td>
        <td>
          See <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
        </td>
      </tr>
      <tr>
        <td>
          MP2T
        </td>
        <td>
          <a href="https://tools.ietf.org/html/rfc2250">RFC 2250</a>
        </td>
        <td>
          See <a href="#mp2t">MPEG-2 Transport Stream</a> underneath HTTP Live Streaming for details
        </td>
      </tr>
    </table>
    <h3 id="5_8_secure_media">
      5.8. Secure Media
    </h3>
    <p>
      If device implementations support secure video output and are capable of supporting secure surfaces, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare support for <code>Display.FLAG_SECURE</code>.
      </li>
    </ul>
    <p>
      If device implementations declare support for <code>Display.FLAG_SECURE</code> and support wireless display protocol, they:
    </p>
    <ul>
      <li>[C-2-1] MUST secure the link with a cryptographically strong mechanism such as HDCP 2.x or higher for the displays connected through wireless protocols such as Miracast.
      </li>
    </ul>
    <p>
      If device implementations declare support for <code>Display.FLAG_SECURE</code> and support wired external display, they:
    </p>
    <ul>
      <li>[C-3-1] MUST support HDCP 1.2 or higher for all external displays connected via a user-accessible wired port.
      </li>
    </ul>
    <h3 id="5_9_musical_instrument_digital_interface_(midi)">
      5.9. Musical Instrument Digital Interface (MIDI)
    </h3>
    <p>
      If device implementations report support for feature <code>android.software.midi</code> via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><code>android.content.pm.PackageManager</code></a> class, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST support MIDI over <em>all</em> MIDI-capable hardware transports for which they provide generic non-MIDI connectivity, where such transports are:
        </p>
        <ul>
          <li>USB host mode, <a href="#7_7_USB">section 7.7</a>
          </li>
          <li>USB peripheral mode, <a href="#7_7_USB">section 7.7</a>
          </li>
          <li>MIDI over Bluetooth LE acting in central role, <a href="#7_4_3_bluetooth">section 7.4.3</a>
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-1-2] MUST support the inter-app MIDI software transport (virtual MIDI devices)
        </p>
      </li>
    </ul>
    <h3 id="5_10_professional_audio">
      5.10. Professional Audio
    </h3>
    <p>
      If device implementations report support for feature <code>android.hardware.audio.pro</code> via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report support for feature <code>android.hardware.audio.low_latency</code>.
      </li>
      <li>[C-1-2] MUST have the continuous round-trip audio latency, as defined in <a href="#5_6_audio_latency">section 5.6 Audio Latency</a>, MUST be 20 milliseconds or less and SHOULD be 10 milliseconds or less over at least one supported path.
      </li>
      <li>[C-1-3] MUST include a USB port(s) supporting USB host mode and USB peripheral mode.
      </li>
      <li>[C-1-4] MUST report support for feature <code>android.software.midi</code>.
      </li>
      <li>[C-1-5] MUST meet latencies and USB audio requirements using both the <a href="https://developer.android.com/ndk/guides/audio/opensl-for-android.html">OpenSL ES</a> PCM buffer queue and <a href="https://developer.android.com/ndk/guides/audio/aaudio/aaudio.html">AAudio native audio</a> APIs.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to provide a consistent level of CPU performance while audio is active and CPU load is varying. This should be tested using <a href="https://github.com/googlesamples/android-audio-high-performance/tree/master/SimpleSynth">SimpleSynth</a> commit <a href="https://github.com/googlesamples/android-audio-high-performance/commit/1bd6391f8ba9512f9f8798e979bc55b899f856d1">1bd6391</a>. The SimpleSynth app needs to be run with below parameters and achieve zero underruns after 10 minutes:
        <ul>
          <li>Work cycles: 200,000
          </li>
          <li>Variable load: ON (this will switch between 100% and 10% of the work cycles value every 2 seconds and is designed to test CPU governor behavior)
          </li>
          <li>Stabilized load: OFF
          </li>
        </ul>
      </li>
      <li>SHOULD minimize audio clock inaccuracy and drift relative to standard time.
      </li>
      <li>SHOULD minimize audio clock drift relative to the CPU <code>CLOCK_MONOTONIC</code> when both are active.
      </li>
      <li>SHOULD minimize audio latency over on-device transducers.
      </li>
      <li>SHOULD minimize audio latency over USB digital audio.
      </li>
      <li>SHOULD document audio latency measurements over all paths.
      </li>
      <li>SHOULD minimize jitter in audio buffer completion callback entry times, as this affects usable percentage of full CPU bandwidth by the callback.
      </li>
      <li>SHOULD provide zero audio underruns (output) or overruns (input) under normal use at reported latency.
      </li>
      <li>SHOULD provide zero inter-channel latency difference.
      </li>
      <li>SHOULD minimize MIDI mean latency over all transports.
      </li>
      <li>SHOULD minimize MIDI latency variability under load (jitter) over all transports.
      </li>
      <li>SHOULD provide accurate MIDI timestamps over all transports.
      </li>
      <li>SHOULD minimize audio signal noise over on-device transducers, including the period immediately after cold start.
      </li>
      <li>SHOULD 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>SHOULD 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>SHOULD minimize the phase difference between HAL audio buffering for the input and output sides of corresponding end-points.
      </li>
      <li>SHOULD minimize touch latency.
      </li>
      <li>SHOULD minimize touch latency variability under load (jitter).
      </li>
      <li>SHOULD have a latency from touch input to audio output of less than or equal to 40 ms.
      </li>
    </ul>
    <p>
      If device implementations meet all of the above requirements, they:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to report support for feature <code>android.hardware.audio.pro</code> via the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><code>android.content.pm.PackageManager</code></a> class.
      </li>
    </ul>
    <p>
      If device implementations include a 4 conductor 3.5mm audio jack, they:
    </p>
    <ul>
      <li>[C-2-1] MUST have the continuous round-trip audio latency to be 20 milliseconds or less over the audio jack path.
      </li>
      <li>[SR] STRONGLY RECOMMENDED to comply with section <a href="https://source.android.com/devices/accessories/headset/jack-headset-spec">Mobile device (jack) specifications</a> of the <a href="https://source.android.com/devices/accessories/headset/plug-headset-spec">Wired Audio Headset Specification (v1.1)</a>.
      </li>
      <li>The continuous round-trip audio latency SHOULD be 10 milliseconds or less over the audio jack path.
      </li>
    </ul>
    <p>
      If device implementations omit a 4 conductor 3.5mm audio jack and include a USB port(s) supporting USB host mode, they:
    </p>
    <ul>
      <li>[C-3-1] MUST implement the USB audio class.
      </li>
      <li>[C-3-2] MUST have a continuous round-trip audio latency of 20 milliseconds or less over the USB host mode port using USB audio class.
      </li>
      <li>The continuous round-trip audio latency SHOULD be 10 milliseconds or less over the USB host mode port using USB audio class.
      </li>
    </ul>
    <p>
      If device implementations include an HDMI port, they:
    </p>
    <ul>
      <li>[C-4-1] MUST support output in stereo and eight channels at 20-bit or 24-bit depth and 192 kHz without bit-depth loss or resampling, in at least one configuration.
      </li>
    </ul>
    <h3 id="5_11_capture_for_unprocessed">
      5.11. Capture for Unprocessed
    </h3>
    <p>
      Android includes support for recording of unprocessed audio via 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>
      If device implementations intent to support unprocessed audio source and make it available to third-party apps, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST report the support through 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>
      </li>
      <li>
        <p>
          [C-1-2] MUST exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±10dB from 100 Hz to 7000 Hz for each and every microphone used to record the unprocessed audio source.
        </p>
      </li>
      <li>
        <p>
          [C-1-3] 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 for each and every microphone used to record the unprocessed audio source.
        </p>
      </li>
      <li>
        <p>
          [C-1-4] MUST exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 7000 Hz to 22 KHz compared to the mid-frequency range for each and every microphone used to record the unprocessed audio source.
        </p>
      </li>
      <li>
        <p>
          [C-1-5] MUST set audio input sensitivity 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) for each and every microphone used to record the unprocessed audio source.
        </p>
      </li>
      <li>
        <p>
          [C-1-6] MUST have a signal-to-noise ratio (SNR) at 60 dB or higher for each and every microphone used to record the unprocessed audio source. (whereas the SNR is measured as the difference between 94 dB SPL and equivalent SPL of self noise, A-weighted).
        </p>
      </li>
      <li>
        <p>
          [C-1-7] MUST have a total harmonic distortion (THD) less than be less than 1% for 1 kHZ at 90 dB SPL input level at each and every microphone used to record the unprocessed audio source.
        </p>
      </li>
      <li>
        <p>
          MUST not have any other signal processing (e.g. Automatic Gain Control, High Pass Filter, or Echo cancellation) in the path other than a level multiplier to bring the level to desired range. In other words:
        </p>
      </li>
      <li>[C-1-8] 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.
      </li>
      <li>[C-1-9] The level multiplier, while allowed to be on the path, MUST NOT introduce delay or latency to the signal path.
      </li>
    </ul>
    <p>
      All SPL measurements are made directly next to the microphone under test. For multiple microphone configurations, these requirements apply to each microphone.
    </p>
    <p>
      If device implementations declare <code>android.hardware.microphone</code> but do not support unprocessed audio source, they:
    </p>
    <ul>
      <li>[C-2-1] MUST return <code>null</code> for the <code>AudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)</code> API method, to properly indicate the lack of support.
      </li>
      <li>[SR] are still STRONGLY RECOMMENDED to satisfy as many of the requirements for the signal path for the unprocessed recording source.
      </li>
    </ul>
    <h2 id="6_developer_tools_and_options_compatibility">
      6. Developer Tools and Options Compatibility
    </h2>
    <h3 id="6_1_developer_tools">
      6.1. Developer Tools
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST support the Android Developer Tools provided in the Android SDK.
      </li>
      <li>
        <p>
          <a href="http://developer.android.com/tools/help/adb.html"><strong>Android Debug Bridge (adb)</strong></a>
        </p>
        <ul>
          <li>[C-0-2] MUST support adb as documented in the Android SDK and the shell commands provided in the AOSP, which can be used by app developers, including <a href="https://source.android.com/devices/input/diagnostics.html"><code>dumpsys</code></a> and <code>cmd stats</code>.
          </li>
          <li>[C-0-3] MUST NOT alter the format or the contents of device system events (batterystats , diskstats, fingerprint, graphicsstats, netstats, notification, procstats) logged via the dumpsys command.
          </li>
          <li>[C-0-10] MUST record, without ommission, and make the following events accessible and available to the <code>cmd stats</code> shell command and the <code>StatsManager</code> System API class.
            <ul>
              <li>ActivityForegroundStateChanged
              </li>
              <li>AnomalyDetected
              </li>
              <li>AppBreadcrumbReported
              </li>
              <li>AppCrashOccurred
              </li>
              <li>AppStartOccurred
              </li>
              <li>BatteryLevelChanged
              </li>
              <li>BatterySaverModeStateChanged
              </li>
              <li>BleScanResultReceived
              </li>
              <li>BleScanStateChanged
              </li>
              <li>ChargingStateChanged
              </li>
              <li>DeviceIdleModeStateChanged
              </li>
              <li>ForegroundServiceStateChanged
              </li>
              <li>GpsScanStateChanged
              </li>
              <li>JobStateChanged
              </li>
              <li>PluggedStateChanged
              </li>
              <li>ScheduledJobStateChanged
              </li>
              <li>ScreenStateChanged
              </li>
              <li>SyncStateChanged
              </li>
              <li>SystemElapsedRealtime
              </li>
              <li>UidProcessStateChanged
              </li>
              <li>WakelockStateChanged
              </li>
              <li>WakeupAlarmOccurred
              </li>
              <li>WifiLockStateChanged
              </li>
              <li>WifiMulticastLockStateChanged
              </li>
              <li>WifiScanStateChanged
              </li>
            </ul>
          </li>
          <li>[C-0-4] MUST have the device-side adb daemon be inactive by default and there MUST be a user-accessible mechanism to turn on the Android Debug Bridge.
          </li>
          <li>[C-0-5] MUST support secure adb. Android includes support for secure adb. Secure adb enables adb on known authenticated hosts.
          </li>
          <li>
            <p>
              [C-0-6] MUST provide a mechanism allowing adb to be connected from a host machine. For example:
            </p>
            <ul>
              <li>Device implementations without a USB port supporting peripheral mode MUST implement adb via local-area network (such as Ethernet or Wi-Fi).
              </li>
              <li>MUST provide drivers for Windows 7, 9 and 10, allowing developers to connect to the device using the adb protocol.
              </li>
            </ul>
          </li>
        </ul>
      </li>
      <li>
        <p>
          <a href="http://developer.android.com/tools/debugging/ddms.html"><strong>Dalvik Debug Monitor Service (ddms)</strong></a>
        </p>
        <ul>
          <li>[C-0-7] MUST support all ddms features as documented in the Android SDK. As ddms uses adb, support for ddms SHOULD be inactive by default, but MUST be supported whenever the user has activated the Android Debug Bridge, as above.
          </li>
        </ul>
      </li>
      <li>
        <a href="http://developer.android.com/tools/help/monkey.html"><strong>Monkey</strong></a>
        <ul>
          <li>[C-0-8] MUST include the Monkey framework and make it available for applications to use.
          </li>
        </ul>
      </li>
      <li>
        <a href="http://developer.android.com/tools/help/systrace.html"><strong>SysTrace</strong></a>
        <ul>
          <li>[C-0-9] MUST support the systrace tool as documented in the Android SDK. Systrace must be inactive by default and there MUST be a user-accessible mechanism to turn on Systrace.
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations report the support of Vulkan 1.0 or higher via the <code>android.hardware.vulkan.version</code> feature flags, they:
    </p>
    <ul>
      <li>[C-1-1] MUST provide an affordance for the app developer to enable/disable GPU debug layers.
      </li>
      <li>[C-1-2] MUST, when the GPU debug layers are enabled, enumerate layers in libraries provided by external tools (i.e. not part of the platform or application package) found in debuggable applications' base directory to support <a href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkEnumerateInstanceLayerProperties.html">vkEnumerateInstanceLayerProperties()</a> and <a href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/vkCreateInstance.html">vkCreateInstance()</a> API methods.
      </li>
    </ul>
    <h3 id="6_2_developer_options">
      6.2. Developer Options
    </h3>
    <p>
      Android includes support for developers to configure application development-related settings.
    </p>
    <p>
      Device implementations MUST provide a consistent experience for Developer Options, they:
    </p>
    <ul>
      <li>[C-0-1] 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.
      </li>
      <li>[C-0-2] MUST hide Developer Options by default.
      </li>
      <li>[C-0-3] MUST provide a clear mechanism that does not give preferential treatment to one third-party app as opposed to another to enable Developer Options. MUST provide a public visible document or website that describes how to enable Developer Options. This document or website MUST be linkable from the Android SDK documents.
      </li>
      <li>SHOULD have an ongoing visual notification to the user when Developer Options is enabled and the safety of the user is of concern.
      </li>
      <li>MAY temporarily limit access to the Developer Options menu, by visually hiding or disabling the menu, to prevent distraction for scenarios where the safety of the user is of concern.
      </li>
    </ul>
    <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:
    </p>
    <ul>
      <li>[C-0-1] The device implementation MUST implement that API as described in the Android SDK documentation.
      </li>
    </ul>
    <p>
      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>[C-0-2] Complete class definitions (as documented by the SDK) for the component APIs MUST still be presented.
      </li>
      <li>[C-0-3] The API’s behaviors MUST be implemented as no-ops in some reasonable fashion.
      </li>
      <li>[C-0-4] API methods MUST return null values where permitted by the SDK documentation.
      </li>
      <li>[C-0-5] API methods MUST return no-op implementations of classes where null values are not permitted by the SDK documentation.
      </li>
      <li>[C-0-6] API methods MUST NOT throw exceptions not documented by the SDK documentation.
      </li>
      <li>[C-0-7] Device implementations MUST consistently report accurate hardware configuration information via the <code>getSystemAvailableFeatures()</code> and <code>hasSystemFeature(String)</code> 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.
      </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>
    <h3 id="7_1_display_and_graphics">
      7.1. Display and Graphics
    </h3>
    <p>
      Android includes facilities that automatically adjust application assets and UI layouts appropriately for the device to ensure that third-party applications run well on a <a href="http://developer.android.com/guide/practices/screens_support.html">variety of hardware configurations</a>. Devices MUST properly implement these APIs and behaviors, as detailed in this section.
    </p>
    <p>
      The units referenced by the requirements in this section are defined as follows:
    </p>
    <ul>
      <li>
        <strong>physical diagonal size</strong>. The distance in inches between two opposing corners of the illuminated portion of the display.
      </li>
      <li>
        <strong>dots per inch (dpi)</strong>. The number of pixels encompassed by a linear horizontal or vertical span of 1”. Where dpi values are listed, both horizontal and vertical dpi must fall within the range.
      </li>
      <li>
        <strong>aspect ratio</strong>. The ratio of the pixels of the longer dimension to the shorter dimension of the screen. For example, a display of 480x854 pixels would be 854/480 = 1.779, or roughly “16:9”.
      </li>
      <li>
        <strong>density-independent pixel (dp)</strong>. The virtual pixel unit normalized to a 160 dpi screen, calculated as: pixels = dps * (density/160).
      </li>
    </ul>
    <h4 id="7_1_1_screen_configuration">
      7.1.1. Screen Configuration
    </h4>
    <h5 id="7_1_1_1_screen_size_and_shape">
      7.1.1.1. Screen Size and Shape
    </h5>
    <p>
      The Android UI framework supports a variety of different logical screen layout sizes, and allows applications to query the current configuration's screen layout size via <code>Configuration.screenLayout</code> with the <code>SCREENLAYOUT_SIZE_MASK</code> and <code>Configuration.smallestScreenWidthDp</code>.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] MUST report the correct layout size for the <code>Configuration.screenLayout</code> as defined in the Android SDK documentation. Specifically, device implementations MUST report the correct logical density-independent pixel (dp) screen dimensions as below:
        </p>
        <ul>
          <li>Devices with the <code>Configuration.uiMode</code> set as any value other than UI_MODE_TYPE_WATCH, and reporting a <code>small</code> size for the <code>Configuration.screenLayout</code>, MUST have at least 426 dp x 320 dp.
          </li>
          <li>Devices reporting a <code>normal</code> size for the <code>Configuration.screenLayout</code>, MUST have at least 480 dp x 320 dp.
          </li>
          <li>Devices reporting a <code>large</code> size for the <code>Configuration.screenLayout</code>, MUST have at least 640 dp x 480 dp.
          </li>
          <li>Devices reporting a <code>xlarge</code> size for the <code>Configuration.screenLayout</code>, MUST have at least 960 dp x 720 dp.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-0-2] MUST correctly honor applications' stated support for screen sizes through the <a href="https://developer.android.com/guide/topics/manifest/supports-screens-element.html">&lt;<code>supports-screens</code>&gt;</a> attribute in the AndroidManifest.xml, as described in the Android SDK documentation.
        </p>
      </li>
      <li>
        <p>
          MAY have a display with rounded corners.
        </p>
      </li>
    </ul>
    <p>
      If device implementations support <code>UI_MODE_TYPE_NORMAL</code> and include a display with rounded corners, they:
    </p>
    <ul>
      <li>[C-1-1] MUST ensure that the radius of the rounded corners is less than or equal to 38 dp.
      </li>
      <li>SHOULD include user affordance to switch to the display mode with the rectangular corners.
      </li>
    </ul>
    <h5 id="7_1_1_2_screen_aspect_ratio">
      7.1.1.2. Screen Aspect Ratio
    </h5>
    <p>
      While there is no restriction to the screen aspect ratio value of the physical screen display, the screen aspect ratio of the logical display that third-party apps are rendered within, as can be derived from the height and width values reported through the <a href="https://developer.android.com/reference/android/view/Display.html"><code>view.Display</code></a> APIs and <a href="https://developer.android.com/reference/android/content/res/Configuration.html">Configuration</a> API, MUST meet the following requirements:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] Device implementations with the <code>Configuration.uiMode</code> set as <code>UI_MODE_TYPE_NORMAL</code> MUST have an aspect ratio value between 1.3333 (4:3) and 1.86 (roughly 16:9), unless the app can be deemed as ready to be stretched longer by meeting one of the following conditions:
        </p>
        <ul>
          <li>The app has declared that it supports a larger screen aspect ratio through the <a href="https://developer.android.com/guide/practices/screens&amp;lowbar;support.html#MaxAspectRatio"><code>android.max_aspect</code></a> metadata value.
          </li>
          <li>The app declares it is resizeable via the <a href="https://developer.android.com/guide/topics/ui/multi-window.html#configuring">android:resizeableActivity</a> attribute.
          </li>
          <li>The app is targeting API level 24 or higher and does not declare a <a href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio"><code>android:MaxAspectRatio</code></a> that would restrict the allowed aspect ratio.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-0-2] Device implementations with the <code>Configuration.uiMode</code> set as <code>UI_MODE_TYPE_WATCH</code> MUST have an aspect ratio value set as 1.0 (1:1).
        </p>
      </li>
    </ul>
    <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.
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] By default, device implementations MUST report only one of the following logical Android framework densities through the <a href="https://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_DEVICE_STABLE">DENSITY_DEVICE_STABLE</a> API and this value MUST NOT change at any time; however, the device MAY report a different arbitrary density according to the display configuration changes made by the user (for example, display size) set after initial boot.
        </p>
        <ul>
          <li>120 dpi (ldpi)
          </li>
          <li>160 dpi (mdpi)
          </li>
          <li>213 dpi (tvdpi)
          </li>
          <li>240 dpi (hdpi)
          </li>
          <li>260 dpi (260dpi)
          </li>
          <li>280 dpi (280dpi)
          </li>
          <li>300 dpi (300dpi)
          </li>
          <li>320 dpi (xhdpi)
          </li>
          <li>340 dpi (340dpi)
          </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>
      </li>
      <li>
        <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>
      </li>
    </ul>
    <p>
      If there is an affordance to change the display size of the device:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] 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>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report correct values for all display metrics defined in the <a href="https://developer.android.com/reference/android/util/DisplayMetrics.html"><code>android.util.DisplayMetrics</code></a> API.
      </li>
    </ul>
    <p>
      If device implementations does not include an embedded screen or video output, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report reasonable values for all display metrics defined in the <a href="https://developer.android.com/reference/android/util/DisplayMetrics.html"><code>android.util.DisplayMetrics</code></a> API for the emulated default <code>view.Display</code>.
      </li>
    </ul>
    <h4 id="7_1_3_screen_orientation">
      7.1.3. Screen Orientation
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST report which screen orientations they support (<code>android.hardware.screen.portrait</code> and/or <code>android.hardware.screen.landscape</code>) and MUST report at least one supported orientation. For example, a device with a fixed orientation landscape screen, such as a television or laptop, SHOULD only report <code>android.hardware.screen.landscape</code>.
      </li>
      <li>[C-0-2] MUST report the correct value for the device’s current orientation, whenever queried via the <code>android.content.res.Configuration.orientation</code>, <code>android.view.Display.getOrientation()</code>, or other APIs.
      </li>
    </ul>
    <p>
      If device implementations support both screen orientations, they:
    </p>
    <ul>
      <li>[C-1-1] 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.
      </li>
      <li>[C-1-2] MUST NOT change the reported screen size or density when changing orientation.
      </li>
      <li>MAY select either portrait or landscape orientation as the default.
      </li>
    </ul>
    <h4 id="7_1_4_2d_and_3d_graphics_acceleration">
      7.1.4. 2D and 3D Graphics Acceleration
    </h4>
    <h5 id="7_1_4_1_opengl_es">
      7.1.4.1 OpenGL ES
    </h5>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST correctly identify the supported OpenGL ES versions (1.1, 2.0, 3.0, 3.1, 3.2) through the managed APIs (such as via the <code>GLES10.getString()</code> method) and the native APIs.
      </li>
      <li>[C-0-2] MUST include the support for all the corresponding managed APIs and native APIs for every OpenGL ES versions they identified to support.
      </li>
    </ul>
    <p>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support both OpenGL ES 1.1 and 2.0, as embodied and detailed in the <a href="https://developer.android.com/guide/topics/graphics/opengl.html">Android SDK documentation</a>.
      </li>
      <li>[SR] are STRONGLY RECOMMENDED to support OpenGL ES 3.1.
      </li>
      <li>SHOULD support OpenGL ES 3.2.
      </li>
    </ul>
    <p>
      If device implementations support any of the OpenGL ES versions, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report via the OpenGL ES managed APIs and native APIs any other OpenGL ES extensions they have implemented, and conversely MUST NOT report extension strings that they do not support.
      </li>
      <li>[C-2-2] MUST support the <code>EGL_KHR_image</code>, <code>EGL_KHR_image_base</code>, <code>EGL_ANDROID_image_native_buffer</code>, <code>EGL_ANDROID_get_native_client_buffer</code>, <code>EGL_KHR_wait_sync</code>, <code>EGL_KHR_get_all_proc_addresses</code>, <code>EGL_ANDROID_presentation_time</code>, <code>EGL_KHR_swap_buffers_with_damage</code> and <code>EGL_ANDROID_recordable</code> extensions.
      </li>
      <li>[SR] are STRONGLY RECOMMENDED to support EGL_KHR_partial_update.
      </li>
      <li>SHOULD accurately report via the <code>getString()</code> method, any texture compression format that they support, which is typically vendor-specific.
      </li>
    </ul>
    <p>
      If device implementations declare support for OpenGL ES 3.0, 3.1, or 3.2, they:
    </p>
    <ul>
      <li>[C-3-1] MUST export the corresponding function symbols for these version in addition to the OpenGL ES 2.0 function symbols in the libGLESv2.so library.
      </li>
    </ul>
    <p>
      If device implementations support OpenGL ES 3.2, they:
    </p>
    <ul>
      <li>[C-4-1] MUST support the OpenGL ES Android Extension Pack in its entirety.
      </li>
    </ul>
    <p>
      If device implementations support the OpenGL ES <a href="https://developer.android.com/reference/android/opengl/GLES31Ext.html">Android Extension Pack</a> in its entirety, they:
    </p>
    <ul>
      <li>[C-5-1] MUST identify the support through the <code>android.hardware.opengles.aep</code> feature flag.
      </li>
    </ul>
    <p>
      If device implementations expose support for the <code>EGL_KHR_mutable_render_buffer</code> extension, they:
    </p>
    <ul>
      <li>[C-6-1] MUST also support the <code>EGL_ANDROID_front_buffer_auto_refresh</code> extension.
      </li>
    </ul>
    <h5 id="7_1_4_2_vulkan">
      7.1.4.2 Vulkan
    </h5>
    <p>
      Android includes support for <a href="https://www.khronos.org/registry/vulkan/specs/1.0-wsi&amp;lowbarextensions/xhtml/vkspec.html">Vulkan</a> , a low-overhead, cross-platform API for high-performance 3D graphics.
    </p>
    <p>
      If device implementations support OpenGL ES 3.1, they:
    </p>
    <ul>
      <li>[SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.1.
      </li>
    </ul>
    <p>
      If device implementations include a screen or video output, they:
    </p>
    <ul>
      <li>SHOULD include support for Vulkan 1.1.
      </li>
    </ul>
    <p>
      If device implementations include support for Vulkan 1.0, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the correct integer value with the <code>android.hardware.vulkan.level</code> and <code>android.hardware.vulkan.version</code> feature flags.
      </li>
      <li>[C-1-2] MUST enumerate, at least one <code>VkPhysicalDevice</code> for the Vulkan native API <a href="https://www.khronos.org/registry/vulkan/specs/1.0/man/html/vkEnumeratePhysicalDevices.html"><code>vkEnumeratePhysicalDevices()</code></a> .
      </li>
      <li>[C-1-3] MUST fully implement the Vulkan 1.0 APIs for each enumerated <code>VkPhysicalDevice</code>.
      </li>
      <li>[C-1-4] MUST enumerate layers, contained in native libraries named as <code>libVkLayer*.so</code> in the application package’s native library directory, through the Vulkan native APIs <a href="https://www.khronos.org/registry/vulkan/specs/1.0/man/html/vkEnumerateInstanceLayerProperties.html"><code>vkEnumerateInstanceLayerProperties()</code></a> and <a href="https://www.khronos.org/registry/vulkan/specs/1.0/man/html/vkEnumerateDeviceLayerProperties.html"><code>vkEnumerateDeviceLayerProperties()</code></a> .
      </li>
      <li>[C-1-5] 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</code> attribute set as <code>true</code>.
      </li>
      <li>[C-1-6] MUST report all extension strings that they do support via the Vulkan native APIs , and conversely MUST NOT report extension strings that they do not correctly support.
      </li>
      <li>[C-1-7] MUST support the VK_KHR_surface, VK_KHR_android_surface, VK_KHR_swapchain, and VK_KHR_incremental_present extensions.
      </li>
    </ul>
    <p>
      If device implementations do not include support for Vulkan 1.0, they:
    </p>
    <ul>
      <li>[C-2-1] MUST NOT declare any of the Vulkan feature flags (e.g. <code>android.hardware.vulkan.level</code>, <code>android.hardware.vulkan.version</code>).
      </li>
      <li>[C-2-2] MUST NOT enumerate any <code>VkPhysicalDevice</code> for the Vulkan native API <code>vkEnumeratePhysicalDevices()</code>.
      </li>
    </ul>
    <p>
      If device implementations include support for Vulkan 1.1, they:
    </p>
    <ul>
      <li>[C-3-1] MUST expose support for the <code>SYNC_FD</code> external semaphore and handle types.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to support the <code>VK_ANDROID_external_memory_android_hardware_buffer</code> extension.
      </li>
    </ul>
    <h5 id="7_1_4_3_renderscript">
      7.1.4.3 RenderScript
    </h5>
    <ul>
      <li>[C-0-1] Device implementations MUST support <a href="http://developer.android.com/guide/topics/renderscript/">Android RenderScript</a>, as detailed in the Android SDK documentation.
      </li>
    </ul>
    <h5 id="7_1_4_4_2d_graphics_acceleration">
      7.1.4.4 2D Graphics Acceleration
    </h5>
    <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:
    </p>
    <ul>
      <li>[C-0-1] 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.
      </li>
      <li>[C-0-2] 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>.
      </li>
    </ul>
    <p>
      Android includes a TextureView object that lets developers directly integrate hardware-accelerated OpenGL ES textures as rendering targets in a UI hierarchy.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-3] MUST support the TextureView API, and MUST exhibit consistent behavior with the upstream Android implementation.
      </li>
    </ul>
    <h5 id="7_1_4_5_wide-gamut_displays">
      7.1.4.5 Wide-gamut Displays
    </h5>
    <p>
      If device implementations claim support for wide-gamut displays through <a href="https://developer.android.com/reference/android/content/res/Configuration.html#isScreenWideColorGamut%28%29"><code>Configuration.isScreenWideColorGamut()</code></a> , they:
    </p>
    <ul>
      <li>[C-1-1] MUST have a color-calibrated display.
      </li>
      <li>[C-1-2] MUST have a display whose gamut covers the sRGB color gamut entirely in CIE 1931 xyY space.
      </li>
      <li>[C-1-3] MUST have a display whose gamut has an area of at least 90% of DCI-P3 in CIE 1931 xyY space.
      </li>
      <li>[C-1-4] MUST support OpenGL ES 3.1 or 3.2 and report it properly.
      </li>
      <li>[C-1-5] MUST advertise support for the <code>EGL_KHR_no_config_context</code>, <code>EGL_EXT_pixel_format_float</code>, <code>EGL_KHR_gl_colorspace</code>, <code>EGL_EXT_gl_colorspace_scrgb</code>, <code>EGL_EXT_gl_colorspace_scrgb_linear</code>, <code>EGL_EXT_gl_colorspace_display_p3</code>, and <code>EGL_KHR_gl_colorspace_display_p3</code> extensions.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to support <code>GL_EXT_sRGB</code>.
      </li>
    </ul>
    <p>
      Conversely, if device implementations do not support wide-gamut displays, they:
    </p>
    <ul>
      <li>[C-2-1] SHOULD cover 100% or more of sRGB in CIE 1931 xyY space, although the screen color gamut is undefined.
      </li>
    </ul>
    <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>
    <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>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST support displays capable of rendering 16-bit color graphics.
      </li>
      <li>SHOULD support displays capable of 24-bit color graphics.
      </li>
      <li>[C-0-2] MUST support displays capable of rendering animations.
      </li>
      <li>[C-0-3] MUST use the display technology that 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.
    </p>
    <p>
      If device implementations support an external display either via a wired, wireless, or an embedded additional display connection, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the <a href="https://developer.android.com/reference/android/hardware/display/DisplayManager.html"><code>DisplayManager</code></a> system service and API as described in the Android SDK documentation.
      </li>
    </ul>
    <h3 id="7_2_input_devices">
      7.2. Input Devices
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST include an input mechanism, such as a <a href="#7_2_4_touchScreen_input">touchscreen</a> or <a href="#7_2_2_non-touch_navigation">non-touch navigation</a>, to navigate between the UI elements.
      </li>
    </ul>
    <h4 id="7_2_1_keyboard">
      7.2.1. Keyboard
    </h4>
    <p>
      If device implementations include support for third-party Input Method Editor (IME) applications, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_INPUT_METHODS"><code>android.software.input_methods</code></a> feature flag.
      </li>
      <li>[C-1-2] MUST implement fully <a href="https://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html"><code>Input Management Framework</code></a>
      </li>
      <li>[C-1-3] MUST have a preinstalled software keyboard.
      </li>
    </ul>
    <p>
      Device implementations: <em>[C-0-1] 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).</em> SHOULD include additional soft keyboard implementations. * MAY include a hardware keyboard.
    </p>
    <h4 id="7_2_2_non-touch_navigation">
      7.2.2. Non-touch Navigation
    </h4>
    <p>
      Android includes support for d-pad, trackball, and wheel as mechanisms for non-touch navigation.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST report the correct value for <a href="https://developer.android.com/reference/android/content/res/Configuration.html#navigation">android.content.res.Configuration.navigation</a>.
      </li>
    </ul>
    <p>
      If device implementations lack non-touch navigations, they:
    </p>
    <ul>
      <li>[C-1-1] 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>
    <p>
      The <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME">Home</a>, <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_APP_SWITCH">Recents</a>, and <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">Back</a> functions typically provided via an interaction with a dedicated physical button or a distinct portion of the touch screen, are essential to the Android navigation paradigm and therefore, device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST provide a user affordance to launch installed applications that have an activity with the <code>&lt;intent-filter&gt;</code> set with <code>ACTION=MAIN</code> and <code>CATEGORY=LAUNCHER</code> or <code>CATEGORY=LEANBACK_LAUNCHER</code> for Television device implementations. The Home function SHOULD be the mechanism for this user affordance.
      </li>
      <li>SHOULD provide buttons for the Recents and Back function.
      </li>
    </ul>
    <p>
      If the Home, Recents, or Back functions are provided, they:
    </p>
    <ul>
      <li>[C-1-1] MUST be accessible with a single action (e.g. tap, double-click or gesture) when any of them are accessible.
      </li>
      <li>[C-1-2] MUST provide a clear indication of which single action would trigger each function. Having a visible icon imprinted on the button, showing a software icon on the navigation bar portion of the screen, or walking the user through a guided step-by-step demo flow during the out-of-box setup experience are examples of such an indication.
      </li>
    </ul>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[SR] are STRONGLY RECOMMENDED to not provide the input mechanism for the <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">Menu function</a> as it is deprecated in favor of action bar since Android 4.0.
      </li>
    </ul>
    <p>
      If device implementations provide the Menu function, they:
    </p>
    <ul>
      <li>[C-2-1] MUST display the action overflow button whenever the action overflow menu popup is not empty and the action bar is visible.
      </li>
      <li>[C-2-2] MUST NOT modify the position of the action overflow popup displayed by selecting the overflow button in the action bar, but MAY render the action overflow popup at a modified position on the screen when it is displayed by selecting the Menu function.
      </li>
    </ul>
    <p>
      If device implementations do not provide the Menu function, for backwards compatibility, they: * [C-3-1] MUST make the Menu function available to applications when <code>targetSdkVersion</code> is less than 10, either by a physical button, a software key, or gestures. This Menu function should be accessible unless hidden together with other navigation functions.
    </p>
    <p>
      If device implementations provide the <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_ASSIST">Assist function</a>, they: <em>[C-4-1] MUST make the Assist function accessible with a single action (e.g. tap, double-click or gesture) when other navigation keys are accessible.</em> [SR] STRONGLY RECOMMENDED to use long press on HOME function as this designated interaction.
    </p>
    <p>
      If device implementations use a distinct portion of the screen to display the navigation keys, they:
    </p>
    <ul>
      <li>[C-5-1] 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>[C-5-2] 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>[C-5-3] MUST honor the flags set by the app through the <a href="https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29"><code>View.setSystemUiVisibility()</code></a> API method, so that this distinct portion of the screen (a.k.a. the navigation bar) is properly hidden away as documented in the SDK.
      </li>
    </ul>
    <h4 id="7_2_4_touchscreen_input">
      7.2.4. Touchscreen Input
    </h4>
    <p>
      Android includes support for a variety of pointer input systems, such as touchscreens, touch pads, and fake touch input devices. <a href="https://source.android.com/devices/input/touch-devices">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.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD have a pointer input system of some kind (either mouse-like or touch).
      </li>
      <li>SHOULD support fully independently tracked pointers.
      </li>
    </ul>
    <p>
      If device implementations include a touchscreen (single-touch or better), they:
    </p>
    <ul>
      <li>[C-1-1] MUST report <code>TOUCHSCREEN_FINGER</code> for the <a href="https://developer.android.com/reference/android/content/res/Configuration.html#touchscreen"><code>Configuration.touchscreen</code></a> API field.
      </li>
      <li>[C-1-2] MUST report the <code>android.hardware.touchscreen</code> and <code>android.hardware.faketouch</code> feature flags.
      </li>
    </ul>
    <p>
      If device implementations include a touchscreen that can track more than a single touch, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report the appropriate feature flags <code>android.hardware.touchscreen.multitouch</code>, <code>android.hardware.touchscreen.multitouch.distinct</code>, <code>android.hardware.touchscreen.multitouch.jazzhand</code> corresponding to the type of the specific touchscreen on the device.
      </li>
    </ul>
    <p>
      If device implementations do not include a touchscreen (and rely on a pointer device only) and meet the fake touch requirements in <a href="#7_2_5_fake_touch_input">section 7.2.5</a>, they:
    </p>
    <ul>
      <li>[C-3-1] MUST NOT report any feature flag starting with <code>android.hardware.touchscreen</code> and MUST report only <code>android.hardware.faketouch</code>.
      </li>
    </ul>
    <h4 id="7_2_5_fake_touch_input">
      7.2.5. Fake Touch Input
    </h4>
    <p>
      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.
    </p>
    <p>
      If device implementations do not include a touchscreen but include another pointer input system which they want to make available, they:
    </p>
    <ul>
      <li>SHOULD declare support for the <code>android.hardware.faketouch</code> feature flag.
      </li>
    </ul>
    <p>
      If device implementations declare support for <code>android.hardware.faketouch</code>, they:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] 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>[C-1-3] 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>[C-1-4] 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>[C-1-5] 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>[C-1-6] 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>
      <li>[C-1-7] MUST report <code>TOUCHSCREEN_NOTOUCH</code> for the <a href="https://developer.android.com/reference/android/content/res/Configuration.html#touchscreen"><code>Configuration.touchscreen</code></a> API field.
      </li>
    </ul>
    <p>
      If device implementations declare support for <code>android.hardware.faketouch.multitouch.distinct</code>, they:
    </p>
    <ul>
      <li>[C-2-1] MUST declare support for <code>android.hardware.faketouch</code>.
      </li>
      <li>[C-2-2] MUST support distinct tracking of two or more independent pointer inputs.
      </li>
    </ul>
    <p>
      If device implementations declare support for <code>android.hardware.faketouch.multitouch.jazzhand</code>, they:
    </p>
    <ul>
      <li>[C-3-1] MUST declare support for <code>android.hardware.faketouch</code>.
      </li>
      <li>[C-3-2] MUST support distinct tracking of 5 (tracking a hand of fingers) or more pointer inputs fully independently.
      </li>
    </ul>
    <h4 id="7_2_6_game_controller_support">
      7.2.6. Game Controller Support
    </h4>
    <h5 id="7_2_6_1_button_mappings">
      7.2.6.1. Button Mappings
    </h5>
    <p>
      If device implementations declare the <code>android.hardware.gamepad</code> feature flag, they:
    </p>
    <ul>
      <li>[C-1-1] MUST have embed a controller or ship with a separate controller in the box, that would provide means to input all the events listed in the below tables.
      </li>
      <li>[C-1-2] MUST be capable to map HID events to it's associated Android <code>view.InputEvent</code> constants as listed in the below tables. The upstream Android implementation includes implementation for game controllers that satisfies this requirement.
      </li>
    </ul>
    <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>
      See <a href="#2_3_1_hardware">Section 2.3.1</a> for device-specific requirements.
    </p>
    <h3 id="7_3_sensors">
      7.3. Sensors
    </h3>
    <p>
      If device implementations include 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>.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST accurately report the presence or absence of sensors per the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><code>android.content.pm.PackageManager</code></a> class.
      </li>
      <li>[C-0-2] MUST return an accurate list of supported sensors via the <code>SensorManager.getSensorList()</code> and similar methods.
      </li>
      <li>[C-0-3] MUST behave reasonably for all other sensor APIs (for example, by returning <code>true</code> or <code>false</code> as appropriate when applications attempt to register listeners, not calling sensor listeners when the corresponding sensors are not present; etc.).
      </li>
    </ul>
    <p>
      If device implementations include a particular sensor type that has a corresponding API for third-party developers, they:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] 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>[C-1-3] 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>
      <li>
        <p>
          [SR] 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.
        </p>
      </li>
      <li>
        <p>
          [C-1-4] For any API indicated by the Android SDK documentation to be a <a href="https://source.android.com/devices/sensors/report-modes.html#continuous">continuous sensor</a>, 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>
      </li>
      <li>
        <p>
          [C-1-5] 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>
      </li>
      <li>When several sensors are activated, the power consumption SHOULD NOT exceed the sum of the individual sensor’s reported power consumption.
      </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.)
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>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>.
      </li>
    </ul>
    <p>
      If device implementations include a composite sensor, they:
    </p>
    <ul>
      <li>[C-2-1] 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>.
      </li>
    </ul>
    <h4 id="7_3_1_accelerometer">
      7.3.1. Accelerometer
    </h4>
    <ul>
      <li>Device implementations SHOULD include a 3-axis accelerometer.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis accelerometer, they:
    </p>
    <ul>
      <li>[C-1-1] MUST be able to report events up to a frequency of at least 50 Hz.
      </li>
      <li>[C-1-2] MUST implement and report <a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER"><code>TYPE_ACCELEROMETER</code></a> sensor.
      </li>
      <li>[C-1-3] 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>[C-1-4] MUST be capable of measuring from freefall up to four times the gravity(4g) or more on any axis.
      </li>
      <li>[C-1-5] MUST have a resolution of at least 12-bits.
      </li>
      <li>[C-1-6] 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>[SR] are <strong>STRONGLY RECOMMENDED</strong> to implement the <code>TYPE_SIGNIFICANT_MOTION</code> composite sensor.
      </li>
      <li>[SR] are STRONGLY RECOMMENDED to implement the <code>TYPE_ACCELEROMETER_UNCALIBRATED</code> sensor if online accelerometer calibration is available.
      </li>
      <li>SHOULD implement the <code>TYPE_SIGNIFICANT_MOTION</code>, <code>TYPE_TILT_DETECTOR</code>, <code>TYPE_STEP_DETECTOR</code>, <code>TYPE_STEP_COUNTER</code> composite sensors as described in the Android SDK document.
      </li>
      <li>SHOULD report events up to at least 200 Hz.
      </li>
      <li>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>SHOULD also implement <a href="https://developer.android.com/reference/android/hardware/Sensor.html#STRING_TYPE_ACCELEROMETER_UNCALIBRATED"><code>TYPE_ACCELEROMETER_UNCALIBRATED</code></a> sensor.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis accelerometer and any of the <code>TYPE_SIGNIFICANT_MOTION</code>, <code>TYPE_TILT_DETECTOR</code>, <code>TYPE_STEP_DETECTOR</code>, <code>TYPE_STEP_COUNTER</code> composite sensors are implemented:
    </p>
    <ul>
      <li>[C-2-1] The sum of their power consumption MUST always be less than 4 mW.
      </li>
      <li>SHOULD each be below 2 mW and 0.5 mW for when the device is in a dynamic or static condition.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis accelerometer and a gyroscope sensor, they:
    </p>
    <ul>
      <li>[C-3-1] MUST implement the <code>TYPE_GRAVITY</code> and <code>TYPE_LINEAR_ACCELERATION</code> composite sensors.
      </li>
      <li>SHOULD implement the <code>TYPE_GAME_ROTATION_VECTOR</code> composite sensor.
      </li>
      <li>[SR] Existing and new Android devices are STRONGLY RECOMMENDED to implement the <code>TYPE_GAME_ROTATION_VECTOR</code> sensor.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis accelerometer, a gyroscope sensor and a magnetometer sensor, they:
    </p>
    <ul>
      <li>[C-4-1] MUST implement a <code>TYPE_ROTATION_VECTOR</code> composite sensor.
      </li>
    </ul>
    <h4 id="7_3_2_magnetometer">
      7.3.2. Magnetometer
    </h4>
    <ul>
      <li>Device implementations SHOULD include a 3-axis magnetometer (compass).
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis magnetometer, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the <code>TYPE_MAGNETIC_FIELD</code> sensor.
      </li>
      <li>[C-1-2] 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>[C-1-3] 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>[C-1-4] MUST be capable of measuring between -900 µT and +900 µT on each axis before saturating.
      </li>
      <li>[C-1-5] 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>[C-1-6] MUST have a resolution equal or denser than 0.6 µT.
      </li>
      <li>[C-1-7] MUST support online calibration and compensation of the hard iron bias, and preserve the compensation parameters between device reboots.
      </li>
      <li>[C-1-8] 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>[C-1-9] MUST 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 1.5 µT; SHOULD have a standard deviation no greater than 0.5 µT.
      </li>
      <li>SHOULD implement <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code> sensor.
      </li>
      <li>[SR] Existing and new Android devices are STRONGLY RECOMMENDED to implement the <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code> sensor.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis magnetometer, an accelerometer sensor and a gyroscope sensor, they:
    </p>
    <ul>
      <li>[C-2-1] MUST implement a <code>TYPE_ROTATION_VECTOR</code> composite sensor.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis magnetometer, an accelerometer, they:
    </p>
    <ul>
      <li>MAY implement the <code>TYPE_GEOMAGNETIC_ROTATION_VECTOR</code> sensor.
      </li>
    </ul>
    <p>
      If device implementations include a 3-axis magnetometer, an accelerometer and <code>TYPE_GEOMAGNETIC_ROTATION_VECTOR</code> sensor, they:
    </p>
    <ul>
      <li>[C-3-1] MUST consume less than 10 mW.
      </li>
      <li>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:
    </p>
    <ul>
      <li>SHOULD include a GPS/GNSS receiver.
      </li>
    </ul>
    <p>
      If device implementations include a GPS/GNSS receiver and report the capability to applications through the <code>android.hardware.location.gps</code> feature flag, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support location outputs at a rate of at least 1 Hz when requested via <code>LocationManager#requestLocationUpdate</code>.
      </li>
      <li>[C-1-2] 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>[C-1-6] After making such a location calculation, device implementations MUST determine its location, in open sky, within 5 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>
        <p>
          In open sky conditions after determining the location, while stationary or moving with less than 1 meter per second squared of acceleration:
        </p>
        <ul>
          <li>[C-1-3] 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>[C-1-4] MUST simultaneously track and report via <a href="https://developer.android.com/reference/android/location/GnssStatus.Callback.html#GnssStatus.Callback()'"><code>GnssStatus.Callback</code></a> at least 8 satellites from one constellation.
          </li>
          <li>SHOULD be able to simultaneously track at least 24 satellites, from multiple constellations (e.g. GPS + at least one of Glonass, Beidou, Galileo).
          </li>
          <li>[C-1-5] MUST report the GNSS technology generation through the test API ‘getGnssYearOfHardware’.
          </li>
          <li>[SR] Continue to deliver normal GPS/GNSS location outputs during an emergency phone call.
          </li>
          <li>[SR] Report GNSS measurements from all constellations tracked (as reported in GnssStatus messages), with the exception of SBAS.
          </li>
          <li>[SR] Report AGC, and Frequency of GNSS measurement.
          </li>
          <li>[SR] Report all accuracy estimates (including Bearing, Speed, and Vertical) as part of each GPS/GNSS location.
          </li>
          <li>[SR] are STRONGLY RECOMMENDED to meet as many as possible from the additional mandatory requirements for devices reporting the year "2016" or "2017" through the Test API <code>LocationManager.getGnssYearOfHardware()</code>.
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations include a GPS/GNSS receiver and report the capability to applications through the <code>android.hardware.location.gps</code> feature flag and the <code>LocationManager.getGnssYearOfHardware()</code> Test API reports the year "2016" or newer, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report GNSS measurements, as soon as they are found, even if a location calculated from GPS/GNSS is not yet reported.
      </li>
      <li>[C-2-2] MUST report GNSS 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>
    <p>
      If device implementations include a GPS/GNSS receiver and report the capability to applications through the <code>android.hardware.location.gps</code> feature flag and the <code>LocationManager.getGnssYearOfHardware()</code> Test API reports the year "2017" or newer, they:
    </p>
    <ul>
      <li>[C-3-1] MUST continue to deliver normal GPS/GNSS location outputs during an emergency phone call.
      </li>
      <li>[C-3-2] MUST report GNSS measurements from all constellations tracked (as reported in GnssStatus messages), with the exception of SBAS.
      </li>
      <li>[C-3-3] MUST report AGC, and Frequency of GNSS measurement.
      </li>
      <li>[C-3-4] MUST report all accuracy estimates (including Bearing, Speed, and Vertical) as part of each GPS/GNSS location.
      </li>
    </ul>
    <p>
      If device implementations include a GPS/GNSS receiver and report the capability to applications through the <code>android.hardware.location.gps</code> feature flag and the <code>LocationManager.getGnssYearOfHardware()</code> Test API reports the year "2018" or newer, they:
    </p>
    <ul>
      <li>[C-4-1] MUST continue to deliver normal GPS/GNSS outputs to applications during a Mobile Station Based (MS-Based) Network Initiated emergency session call.
      </li>
      <li>[C-4-2] MUST report positions and measurements to the <a href="https://developer.android.com/reference/android/location/LocationProvider">GNSS Location Provider</a> API's.
      </li>
    </ul>
    <h4 id="7_3_4_gyroscope">
      7.3.4. Gyroscope
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include a gyroscope (angular change sensor).
      </li>
      <li>SHOULD NOT include a gyroscope sensor unless a 3-axis accelerometer is also included.
      </li>
    </ul>
    <p>
      If device implementations include a gyroscope, they:
    </p>
    <ul>
      <li>[C-1-1] MUST be able to report events up to a frequency of at least 50 Hz.
      </li>
      <li>[C-1-2] MUST implement the <code>TYPE_GYROSCOPE</code> sensor and SHOULD also implement <code>TYPE_GYROSCOPE_UNCALIBRATED</code> sensor.
      </li>
      <li>[C-1-3] MUST be capable of measuring orientation changes up to 1,000 degrees per second.
      </li>
      <li>[C-1-4] MUST have a resolution of 12-bits or more and SHOULD have a resolution of 16-bits or more.
      </li>
      <li>[C-1-5] MUST be temperature compensated.
      </li>
      <li>[C-1-6] MUST be calibrated and compensated while in use, and preserve the compensation parameters between device reboots.
      </li>
      <li>[C-1-7] 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>[SR] Existing and new Android devices are STRONGLY RECOMMENDED to implement the <code>SENSOR_TYPE_GYROSCOPE_UNCALIBRATED</code> sensor.
      </li>
      <li>[SR] Calibration error is STRONGLY RECOMMENDED to be less than 0.01 rad/s when device is stationary at room temperature.
      </li>
      <li>SHOULD report events up to at least 200 Hz.
      </li>
    </ul>
    <p>
      If device implementations include a gyroscope, an accelerometer sensor and a magnetometer sensor, they:
    </p>
    <ul>
      <li>[C-2-1] MUST implement a <code>TYPE_ROTATION_VECTOR</code> composite sensor.
      </li>
    </ul>
    <p>
      If device implementations include a gyroscope and a accelerometer sensor, they:
    </p>
    <ul>
      <li>[C-3-1] MUST implement the <code>TYPE_GRAVITY</code> and <code>TYPE_LINEAR_ACCELERATION</code> composite sensors.
      </li>
      <li>[SR] Existing and new Android devices are STRONGLY RECOMMENDED to implement the <code>TYPE_GAME_ROTATION_VECTOR</code> sensor.
      </li>
      <li>SHOULD implement the <code>TYPE_GAME_ROTATION_VECTOR</code> composite sensor.
      </li>
    </ul>
    <h4 id="7_3_5_barometer">
      7.3.5. Barometer
    </h4>
    <ul>
      <li>Device implementations SHOULD include a barometer (ambient air pressure sensor).
      </li>
    </ul>
    <p>
      If device implementations include a barometer, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement and report <code>TYPE_PRESSURE</code> sensor.
      </li>
      <li>[C-1-2] MUST be able to deliver events at 5 Hz or greater.
      </li>
      <li>[C-1-3] MUST be temperature compensated.
      </li>
      <li>[SR] STRONGLY RECOMMENDED to be able to report pressure measurements in the range 300hPa to 1100hPa.
      </li>
      <li>SHOULD have an absolute accuracy of 1hPa.
      </li>
      <li>SHOULD have a relative accuracy of 0.12hPa over 20hPa range (equivalent to ~1m accuracy over ~200m change at sea level).
      </li>
    </ul>
    <h4 id="7_3_6_thermometer">
      7.3.6. Thermometer
    </h4>
    <p>
      Device implementations: <em>MAY include an ambient thermometer (temperature sensor).</em> MAY but SHOULD NOT include a CPU temperature sensor.
    </p>
    <p>
      If device implementations include an ambient thermometer (temperature sensor), they:
    </p>
    <ul>
      <li>[C-1-1] MUST be defined as <code>SENSOR_TYPE_AMBIENT_TEMPERATURE</code> and MUST measure the ambient (room/vehicle cabin) temperature from where the user is interacting with the device in degrees Celsius.
      </li>
      <li>[C-1-2] MUST be defined as <code>SENSOR_TYPE_TEMPERATURE</code>.
      </li>
      <li>[C-1-3] MUST measure the temperature of the device CPU.
      </li>
      <li>[C-1-4] MUST NOT measure any other temperature.
      </li>
    </ul>
    <p>
      Note the <code>SENSOR_TYPE_TEMPERATURE</code> sensor type was deprecated in Android 4.0.
    </p>
    <h4 id="7_3_7_photometer">
      7.3.7. Photometer
    </h4>
    <ul>
      <li>Device implementations MAY include a photometer (ambient light sensor).
      </li>
    </ul>
    <h4 id="7_3_8_proximity_sensor">
      7.3.8. Proximity Sensor
    </h4>
    <ul>
      <li>Device implementations MAY include a proximity sensor.
      </li>
    </ul>
    <p>
      If device implementations include a proximity sensor, they:
    </p>
    <ul>
      <li>[C-1-1] 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 device implementations include a proximity sensor with any other orientation, it MUST NOT be accessible through this API.
      </li>
      <li>[C-1-2] 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>
      If device implementations include a set of higher quality sensors as defined in this section, and make available them to third-party apps, they:
    </p>
    <ul>
      <li>[C-1-1] MUST identify the capability through the <code>android.hardware.sensor.hifi_sensors</code> feature flag.
      </li>
    </ul>
    <p>
      If device implementations declare <code>android.hardware.sensor.hifi_sensors</code>, they:
    </p>
    <ul>
      <li>
        <p>
          [C-2-1] MUST have a <code>TYPE_ACCELEROMETER</code> sensor which:
        </p>
        <ul>
          <li>MUST have a measurement range between at least -8g and +8g, SHOULD have a measurement range between at least -16g and +16g.
          </li>
          <li>MUST have a measurement resolution of at least 2048 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; SHOULD support the SensorDirectChannel <a href="https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#RATE_VERY_FAST"><code>RATE_VERY_FAST</code></a>.
          </li>
          <li>MUST have a measurement noise not above 400 μg/√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>[C-SR] Is STRONGLY RECOMMENDED to have 3dB measurement bandwidth of at least 80% of Nyquist frequency, and white noise spectrum within this bandwidth.
          </li>
          <li>SHOULD have an acceleration random walk less than 30 μg √Hz tested at room temperature.
          </li>
          <li>SHOULD have a bias change vs. temperature of ≤ +/- 1 mg/°C.
          </li>
          <li>SHOULD have a best-fit line non-linearity of ≤ 0.5%, and sensitivity change vs. temperature of ≤ 0.03%/C°.
          </li>
          <li>SHOULD have cross-axis sensitivity of &lt; 2.5 % and variation of cross-axis sensitivity &lt; 0.2% in device operation temperature range.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-2-2] MUST have a <code>TYPE_ACCELEROMETER_UNCALIBRATED</code> with the same quality requirements as <code>TYPE_ACCELEROMETER</code>.
        </p>
      </li>
      <li>
        <p>
          [C-2-3] MUST have a <code>TYPE_GYROSCOPE</code> sensor which:
        </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; SHOULD support the SensorDirectChannel <a href="https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#RATE_VERY_FAST"><code>RATE_VERY_FAST</code></a>.
          </li>
          <li>MUST have a measurement noise not above 0.014°/s/√Hz.
          </li>
          <li>[C-SR] Is STRONGLY RECOMMENDED to have 3dB measurement bandwidth of at least 80% of Nyquist frequency, and white noise spectrum within this bandwidth.
          </li>
          <li>SHOULD have a rate random walk less than 0.001 °/s √Hz tested at room temperature.
          </li>
          <li>SHOULD have a bias change vs. temperature of ≤ +/- 0.05 °/ s / °C.
          </li>
          <li>SHOULD have a sensitivity change vs. temperature of ≤ 0.02% / °C.
          </li>
          <li>SHOULD have a best-fit line non-linearity of ≤ 0.2%.
          </li>
          <li>SHOULD have a noise density of ≤ 0.007 °/s/√Hz.
          </li>
          <li>SHOULD have calibration error less than 0.002 rad/s in temperature range 10 ~ 40 ℃ when device is stationary.
          </li>
          <li>SHOULD have g-sensitivity less than 0.1°/s/g.
          </li>
          <li>SHOULD have cross-axis sensitivity of &lt; 4.0 % and cross-axis sensitivity variation &lt; 0.3% in device operation temperature range.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-2-4] MUST have a <code>TYPE_GYROSCOPE_UNCALIBRATED</code> with the same quality requirements as <code>TYPE_GYROSCOPE</code>.
        </p>
      </li>
      <li>
        <p>
          [C-2-5] MUST have a <code>TYPE_GEOMAGNETIC_FIELD</code> sensor which:
        </p>
        <ul>
          <li>MUST have a measurement range between at least -900 and +900 μT.
          </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>
        <p>
          [C-2-6] MUST have a <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code> with the same quality requirements as <code>TYPE_GEOMAGNETIC_FIELD</code> and in addition:
        </p>
        <ul>
          <li>MUST implement a non-wake-up form of this sensor with a buffering capability of at least 600 sensor events.
          </li>
          <li>[C-SR] Is STRONGLY RECOMMENDED to have white noise spectrum from 1 Hz to at least 10 Hz when the report rate is 50 Hz or higher.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-2-7] MUST have a <code>TYPE_PRESSURE</code> sensor which:
        </p>
        <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>[C-2-8] MUST have a <code>TYPE_GAME_ROTATION_VECTOR</code> sensor which:
        <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>[C-2-9] MUST have a <code>TYPE_SIGNIFICANT_MOTION</code> sensor which:
        <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>[C-2-10] MUST have a <code>TYPE_STEP_DETECTOR</code> sensor which:
        <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>[C-2-11] MUST have a <code>TYPE_STEP_COUNTER</code> sensor which:
        <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>[C-2-12] MUST have a <code>TILT_DETECTOR</code> sensor which:
        <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>[C-2-13] The event timestamp of the same physical event reported by the Accelerometer, Gyroscope, and Magnetometer MUST be within 2.5 milliseconds of each other. The event timestamp of the same physical event reported by the Accelerometer and Gyroscope SHOULD be within 0.25 milliseconds of each other.
      </li>
      <li>[C-2-14] MUST have Gyroscope sensor event timestamps on the same time base as the camera subsystem and within 1 milliseconds of error.
      </li>
      <li>[C-2-15] MUST deliver samples to applications within 5 milliseconds from the time when the data is available on any of the above physical sensors to the application.
      </li>
      <li>[C-2-16] MUST NOT have a power consumption 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>
            <code>SENSOR_TYPE_SIGNIFICANT_MOTION</code>
          </li>
          <li>
            <code>SENSOR_TYPE_STEP_DETECTOR</code>
          </li>
          <li>
            <code>SENSOR_TYPE_STEP_COUNTER</code>
          </li>
          <li>
            <code>SENSOR_TILT_DETECTORS</code>
          </li>
        </ul>
      </li>
      <li>[C-2-17] MAY have a <code>TYPE_PROXIMITY</code> sensor, but if present MUST have a minimum buffer capability of 100 sensor events.
      </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>
      If device implementations include direct sensor support, they:
    </p>
    <ul>
      <li>[C-3-1] MUST correctly declare support of direct channel types and direct report rates level through the <a href="https://developer.android.com/reference/android/hardware/Sensor.html#isDirectChannelTypeSupported%28int%29"><code>isDirectChannelTypeSupported</code></a> and <a href="https://developer.android.com/reference/android/hardware/Sensor.html#getHighestDirectReportRateLevel%28%29"><code>getHighestDirectReportRateLevel</code></a> API.
      </li>
      <li>[C-3-2] MUST support at least one of the two sensor direct channel types for all sensors that declare support for sensor direct channel.
        <ul>
          <li>
            <a href="https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#TYPE_HARDWARE_BUFFER"><code>TYPE_HARDWARE_BUFFER</code></a>
          </li>
          <li>
            <a href="https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#TYPE_MEMORY_FILE"><code>TYPE_MEMORY_FILE</code></a>
          </li>
        </ul>
      </li>
      <li>SHOULD support event reporting through sensor direct channel for primary sensor (non-wakeup variant) of the following types:
        <ul>
          <li>
            <code>TYPE_ACCELEROMETER</code>
          </li>
          <li>
            <code>TYPE_ACCELEROMETER_UNCALIBRATED</code>
          </li>
          <li>
            <code>TYPE_GYROSCOPE</code>
          </li>
          <li>
            <code>TYPE_GYROSCOPE_UNCALIBRATED</code>
          </li>
          <li>
            <code>TYPE_MAGNETIC_FIELD</code>
          </li>
          <li>
            <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code>
          </li>
        </ul>
      </li>
    </ul>
    <h4 id="7_3_10_biometric_sensors">
      7.3.10. Biometric Sensors
    </h4>
    <h5 id="7_3_10_1_fingerprint_sensors">
      7.3.10.1. Fingerprint Sensors
    </h5>
    <p>
      If device implementations include a secure lock screen, they:
    </p>
    <ul>
      <li>SHOULD include a fingerprint sensor.
      </li>
    </ul>
    <p>
      If device implementations include a fingerprint sensor and make the sensor available to third-party apps, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare support for the <code>android.hardware.fingerprint</code> feature.
      </li>
      <li>[C-1-2] 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>[C-1-3] MUST have a false acceptance rate not higher than 0.002%.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to have a spoof and imposter acceptance rate not higher than 7%.
      </li>
      <li>[C-1-4] MUST disclose that this mode may be less secure than a strong PIN, pattern, or password and clearly enumerate the risks of enabling it, if the spoof and imposter acceptance rates are higher than 7%.
      </li>
      <li>[C-1-5] MUST rate limit attempts for at least 30 seconds after five false trials for fingerprint verification.
      </li>
      <li>[C-1-6] 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>[C-1-7] 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), or a chip with a secure channel to the 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>[C-1-8] MUST prevent adding a fingerprint without first establishing a chain of trust by having the user confirm existing or add a new device credential (PIN/pattern/password) that's secured by TEE; the Android Open Source Project implementation provides the mechanism in the framework to do so.
      </li>
      <li>[C-1-9] MUST NOT enable 3rd-party applications to distinguish between individual fingerprints.
      </li>
      <li>[C-1-10] MUST honor the DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT flag.
      </li>
      <li>[C-1-11] 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>[C-1-12] MUST completely remove all identifiable fingerprint data for a user when the user's account is removed (including via a factory reset).
      </li>
      <li>[C-1-13] MUST not allow unencrypted access to identifiable fingerprint data or any data derived from it (such as embeddings) to the Application Processor.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to have a false rejection rate of less than 10%, as measured on the device.
      </li>
      <li>[SR] Are 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>SHOULD use the Android Fingerprint icon provided in the Android Open Source Project.
      </li>
    </ul>
    <h5 id="7_3_10_2_other_biometric_sensors">
      7.3.10.2. Other Biometric Sensors
    </h5>
    <p>
      If device implementations include one or more non-fingerprint-based-biometric sensors and make them available to third-party apps they:
    </p>
    <ul>
      <li>[C-1-1] MUST have a false acceptance rate not higher than 0.002%.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have a spoof and imposter acceptance rate not higher than 7%.
      </li>
      <li>[C-1-2] MUST disclose that this mode may be less secure than a strong PIN, pattern, or password and clearly enumerate the risks of enabling it, if the spoof and imposter acceptance rates are higher than 7%.
      </li>
      <li>[C-1-3] MUST rate limit attempts for at least 30 seconds after five false trials for biometric verification - where a false trial is one with an adequate capture quality (ACQUIRED_GOOD) that does not match an enrolled biometric
      </li>
      <li>[C-1-4] MUST have a hardware-backed keystore implementation, and perform the biometric matching in a Trusted Execution Environment (TEE) or on a chip with a secure channel to the TEE.
      </li>
      <li>[C-1-5] MUST have all identifiable data encrypted and cryptographically authenticated such that they cannot be acquired, read or altered outside of the Trusted Execution Environment (TEE), or a chip with a secure channel to the 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>[C-1-6] MUST prevent adding new biometrics without first establishing a chain of trust by having the user confirm existing or add a new device credential (PIN/pattern/password) that's secured by TEE; the Android Open Source Project implementation provides the mechanism in the framework to do so.
      </li>
      <li>[C-1-7] MUST NOT enable third-party applications to distinguish between biometric enrollments.
      </li>
      <li>[C-1-8] MUST honor the individual flag for that biometric (ie: <code>DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT</code>, <code>DevicePolicymanager.KEYGUARD_DISABLE_FACE</code>, or <code>DevicePolicymanager.KEYGUARD_DISABLE_IRIS</code>).
      </li>
      <li>[C-1-9] MUST completely remove all identifiable biometric data for a user when the user's account is removed (including via a factory reset).
      </li>
      <li>[C-1-10] MUST not allow unencrypted access to identifiable biometric data or any data derived from it (such as embeddings) to the Application Processor outside the context of the TEE.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have a false rejection rate of less than 10%, as measured on the device.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have a latency below 1 second, measured from when the biometric is detected, until the screen is unlocked, for each enrolled biometric.
      </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>
      See <a href="#2_5_1_hardware">Section 2.5.1</a> for device-specific requirements.
    </p>
    <h5 id="7_3_11_2_day_night_mode">
      7.3.11.2. Day Night Mode
    </h5>
    <p>
      See <a href="#2_5_1_hardware">Section 2.5.1</a> for device-specific requirements.
    </p>
    <h5 id="7_3_11_3_driving_status">
      7.3.11.3. Driving Status
    </h5>
    <p>
      This requirement is deprecated.
    </p>
    <h5 id="7_3_11_4_wheel_speed">
      7.3.11.4. Wheel Speed
    </h5>
    <p>
      See <a href="#2_5_1_hardware">Section 2.5.1</a> for device-specific requirements.
    </p>
    <h5 id="7_3_11_5_parking_brake">
      7.3.11.5. Parking Brake
    </h5>
    <p>
      See <a href="#2_5_1_hardware">Section 2.5.1</a> for device-specific requirements.
    </p>
    <h3 id="7_3_12_pose_sensor">
      7.3.12. Pose Sensor
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>MAY support pose sensor with 6 degrees of freedom.
      </li>
    </ul>
    <p>
      If device implementations support pose sensor with 6 degrees of freedom, they:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] MUST be more accurate than the rotation vector alone.
      </li>
    </ul>
    <h3 id="7_4_data_connectivity">
      7.4. Data Connectivity
    </h3>
    <h4 id="7_4_1_telephony">
      7.4.1. Telephony
    </h4>
    <p>
      “Telephony” as used by the Android APIs and this document refers specifically to hardware related to placing voice calls and sending SMS messages via a GSM or CDMA network. While these voice calls may or may not be packet-switched, they are for the purposes of Android considered independent of any data connectivity that may be implemented using the same network. In other words, the Android “telephony” functionality and APIs refer specifically to voice calls and SMS. For instance, device implementations that cannot place calls or send/receive SMS messages are not considered a telephony device, regardless of whether they use a cellular network for data connectivity.
    </p>
    <ul>
      <li>Android MAY be used on devices that do not include telephony hardware. That is, Android is compatible with devices that are not phones.
      </li>
    </ul>
    <p>
      If device implementations include GSM or CDMA telephony, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the <code>android.hardware.telephony</code> feature flag and other sub-feature flags according to the technology.
      </li>
      <li>[C-1-2] MUST implement full support for the API for that technology.
      </li>
    </ul>
    <p>
      If device implementations do not include telephony hardware, they:
    </p>
    <ul>
      <li>[C-2-1] MUST implement the full APIs as no-ops.
      </li>
    </ul>
    <h5 id="7_4_1_1_number_blocking_compatibility">
      7.4.1.1. Number Blocking Compatibility
    </h5>
    <p>
      If device implementations report the <code>android.hardware.telephony feature</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST include number blocking support
      </li>
      <li>[C-1-2] MUST fully implement <a href="http://developer.android.com/reference/android/provider/BlockedNumberContract.html"><code>BlockedNumberContract</code></a> and the corresponding API as described in the SDK documentation.
      </li>
      <li>[C-1-3] 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>[C-1-4] 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>[C-1-5] 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>[C-1-6] MUST implement a blocked numbers management UI, which is opened with the intent returned by <code>TelecomManager.createManageBlockedNumbersIntent()</code> method.
      </li>
      <li>[C-1-7] 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>
    <h5 id="7_4_1_2_telecom_api">
      7.4.1.2. Telecom API
    </h5>
    <p>
      If device implementations report <code>android.hardware.telephony</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support the <code>ConnectionService</code> APIs described in the <a href="https://developer.android.com/guide/topics/connectivity/telecom/selfManaged.html">SDK</a>.
      </li>
      <li>[C-1-2] MUST display a new incoming call and provide user affordance to accept or reject the incoming call when the user is on an ongoing call that is made by a third-party app that does not support the hold feature specified via <a href="https://developer.android.com/reference/android/telecom/Connection.html#CAPABILITY_SUPPORT_HOLD"><code>CAPABILITY_SUPPORT_HOLD</code></a>.
      </li>
      <li>
        <p>
          [C-SR] Are STRONGLY RECOMMENDED to notify the user that answering an incoming call will drop an ongoing call.
        </p>
        <p>
          The AOSP implementation meets these requirements by a heads-up notification which indicates to the user that answering an incoming call will cause the other call to be dropped.
        </p>
      </li>
      <li>
        <p>
          [C-SR] Are STRONGLY RECOMMENDED to preload the default dialer app that shows a call log entry and the name of a third-party app in its call log when the third-party app sets the <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#EXTRA_LOG_SELF_MANAGED_CALLS"><code>EXTRA_LOG_SELF_MANAGED_CALLS</code></a> extras key on its <code>PhoneAccount</code> to <code>true</code>.
        </p>
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to handle the audio headset's <code>KEYCODE_MEDIA_PLAY_PAUSE</code> and <code>KEYCODE_HEADSETHOOK</code> events for the <a href="https://developer.android.com/reference/android/telecom/package-summary.html"><code>android.telecom</code></a> APIs as below:
        <ul>
          <li>Call <a href="https://developer.android.com/reference/android/telecom/Connection.html#onDisconnect%28%29"><code>Connection.onDisconnect()</code></a> when a short press of the key event is detected during an ongoing call.
          </li>
          <li>Call <a href="https://developer.android.com/reference/android/telecom/Connection.html#onAnswer%28%29"><code>Connection.onAnswer()</code></a> when a short press of the key event is detected during an incoming call.
          </li>
          <li>Call <a href="https://developer.android.com/reference/android/telecom/Connection.html#onReject%28%29"><code>Connection.onReject()</code></a> when a long press of the key event is detected during an incoming call.
          </li>
          <li>Toggle the mute status of the <a href="https://developer.android.com/reference/android/telecom/CallAudioState.html"><code>CallAudioState</code></a>.
          </li>
        </ul>
      </li>
    </ul>
    <h4 id="7_4_2_ieee_802_11_(wi-fi)">
      7.4.2. IEEE 802.11 (Wi-Fi)
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include support for one or more forms of 802.11.
      </li>
    </ul>
    <p>
      If device implementations include support for 802.11 and expose the functionality to a third-party application, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the corresponding Android API.
      </li>
      <li>[C-1-2] MUST report the hardware feature flag <code>android.hardware.wifi</code>.
      </li>
      <li>[C-1-3] 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>[C-1-4] 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>
      <li>[C-1-5] MUST NOT treat the <a href="https://developer.android.com/reference/android/net/wifi/WifiManager.html#enableNetwork%28int%2C%20boolean%29"><code>WifiManager.enableNetwork()</code></a> API method call as a sufficient indication to switch the currently active <code>Network</code> that is used by default for application traffic and is returned by <a href="https://developer.android.com/reference/android/net/ConnectivityManager"><code>ConnectivityManager</code></a> API methods such as <a href="https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetwork%28%29"><code>getActiveNetwork</code></a> and <a href="https://developer.android.com/reference/android/net/ConnectivityManager#registerDefaultNetworkCallback%28android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler%29"><code>registerDefaultNetworkCallback</code></a>. In other words, they MAY only disable the Internet access provided by any other network provider (e.g. mobile data) if they successfully validate that the Wi-Fi network is providing Internet access.
      </li>
      <li>[C-1-6] Are STRONGLY RECOMMENDED, when the <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#reportNetworkConnectivity%28android.net.Network%2C%20boolean%29"><code>ConnectivityManager.reportNetworkConnectivity()</code></a> API method is called, to re-evaluate the Internet access on the <code>Network</code> and, once the evaluation determines that the current <code>Network</code> no longer provides Internet access, switch to any other available network (e.g. mobile data) that provides Internet access.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to randomize the source MAC address and sequence number of probe request frames, once at the beginning of each scan, while STA is disconnected.
        <ul>
          <li>Each group of probe request frames comprising one scan should use one consistent MAC address (SHOULD NOT randomize MAC address halfway through a scan).
          </li>
          <li>Probe request sequence number should iterate as normal (sequentially) between the probe requests in a scan.
          </li>
          <li>Probe request sequence number should randomize between the last probe request of a scan and the first probe request of the next scan.
          </li>
        </ul>
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED, while STA is disconnected, to allow only the following elements in probe request frames:
        <ul>
          <li>SSID Parameter Set (0)
          </li>
          <li>DS Parameter Set (3)
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations support Wi-Fi and use Wi-Fi for location scanning, they:
    </p>
    <ul>
      <li>[C-2-1] MUST provide a user affordance to enable/disable the value read through the <a href="https://developer.android.com/reference/android/net/wifi/WifiManager.html#isScanAlwaysAvailable%28%29"><code>WifiManager.isScanAlwaysAvailable</code></a> API method.
      </li>
    </ul>
    <h5 id="7_4_2_1_wi-fi_direct">
      7.4.2.1. Wi-Fi Direct
    </h5>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include support for Wi-Fi Direct (Wi-Fi peer-to-peer).
      </li>
    </ul>
    <p>
      If device implementations include support for Wi-Fi Direct, they:
    </p>
    <ul>
      <li>[C-1-1] 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.
      </li>
      <li>[C-1-2] MUST report the hardware feature <code>android.hardware.wifi.direct</code>.
      </li>
      <li>[C-1-3] MUST support regular Wi-Fi operation.
      </li>
      <li>[C-1-4] MUST support Wi-Fi and Wi-Fi Direct operations concurrently.
      </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:
    </p>
    <ul>
      <li>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.
      </li>
    </ul>
    <p>
      If device implementations include support for TDLS and TDLS is enabled by the WiFiManager API, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare support for TDLS through [<code>WifiManager.isTdlsSupported</code>] (https://developer.android.com/reference/android/net/wifi/WifiManager.html#isTdlsSupported%28%29).
      </li>
      <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>
    <h5 id="7_4_2_3_wi-fi_aware">
      7.4.2.3. Wi-Fi Aware
    </h5>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include support for <a href="http://www.wi-fi.org/discover-wi-fi/wi-fi-aware">Wi-Fi Aware</a>.
      </li>
    </ul>
    <p>
      If device implementations include support for Wi-Fi Aware and expose the functionality to third-party apps, then they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the <code>WifiAwareManager</code> APIs as described in the <a href="http://developer.android.com/reference/android/net/wifi/aware/WifiAwareManager.html">SDK documentation</a>.
      </li>
      <li>[C-1-2] MUST declare the <code>android.hardware.wifi.aware</code> feature flag.
      </li>
      <li>[C-1-3] MUST support Wi-Fi and Wi-Fi Aware operations concurrently.
      </li>
      <li>[C-1-4] MUST randomize the Wi-Fi Aware management interface address at intervals no longer than 30 minutes and whenever Wi-Fi Aware is enabled.
      </li>
    </ul>
    <p>
      If device implementations include support for Wi-Fi Aware and Wi-Fi Location as described in <a href="#7_4_2_5_Wi-Fi_Location">Section 7.4.2.5</a> and exposes these functionalities to third-party apps, then they:
    </p>
    <ul>
      <li>[C-2-1] MUST implement the location-aware discovery APIs: <a href="https://developer.android.com/reference/android/net/wifi/aware/PublishConfig.Builder.html#setRangingEnabled%28boolean%29">setRangingEnabled</a>, <a href="https://developer.android.com/reference/android/net/wifi/aware/SubscribeConfig.Builder#setMinDistanceMm%28int%29">setMinDistanceMm</a>, <a href="https://developer.android.com/reference/android/net/wifi/aware/SubscribeConfig.Builder#setMaxDistanceMm%28int%29">setMaxDistanceMm</a> , and <a href="https://developer.android.com/reference/android/net/wifi/aware/DiscoverySessionCallback#onServiceDiscoveredWithinRange%28android.net.wifi.aware.PeerHandle,%20byte[],%20java.util.List%3Cbyte[]%3E,%20int%29">onServiceDiscoveredWithinRange</a>.
      </li>
    </ul>
    <h5 id="7_4_2_4_wi-fi_passpoint">
      7.4.2.4. Wi-Fi Passpoint
    </h5>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include support for <a href="http://www.wi-fi.org/discover-wi-fi/wi-fi-certified-passpoint">Wi-Fi Passpoint</a>.
      </li>
    </ul>
    <p>
      If device implementations include support for Wi-Fi Passpoint, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the Passpoint related <code>WifiManager</code> APIs as described in the <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html">SDK documentation</a>.
      </li>
      <li>[C-1-2] MUST support IEEE 802.11u standard, specifically related to Network Discovery and Selection, such as Generic Advertisement Service (GAS) and Access Network Query Protocol (ANQP).
      </li>
    </ul>
    <p>
      Conversely if device implementations do not include support for Wi-Fi Passpoint:
    </p>
    <ul>
      <li>[C-2-1] The implementation of the Passpoint related <code>WifiManager</code> APIs MUST throw an <code>UnsupportedOperationException</code>.
      </li>
    </ul>
    <h5 id="7_4_2_5_wi-fi_location_(wi-fi_round_trip_time_-_rtt)">
      7.4.2.5. Wi-Fi Location (Wi-Fi Round Trip Time - RTT)
    </h5>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include support for <a href="https://www.wi-fi.org/discover-wi-fi/wi-fi-location">Wi-Fi Location</a>.
      </li>
    </ul>
    <p>
      If device implementations include support for Wi-Fi Location and expose the functionality to third-party apps, then they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement the <code>WifiRttManager</code> APIs as described in the <a href="http://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager.html">SDK documentation</a>.
      </li>
      <li>[C-1-2] MUST declare the <code>android.hardware.wifi.rtt</code> feature flag.
      </li>
      <li>[C-1-3] MUST randomize the source MAC address for each RTT burst which is executed while the Wi-Fi interface on which the RTT is being executed is not associated to an Access Point.
      </li>
    </ul>
    <h4 id="7_4_3_bluetooth">
      7.4.3. Bluetooth
    </h4>
    <p>
      If device implementations support Bluetooth Audio profile, they:
    </p>
    <ul>
      <li>SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs (e.g. LDAC).
      </li>
    </ul>
    <p>
      If device implementations support HFP, A2DP and AVRCP, they:
    </p>
    <ul>
      <li>SHOULD support at least 5 total connected devices.
      </li>
    </ul>
    <p>
      If device implementations declare <code>android.hardware.vr.high_performance</code> feature, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension.
      </li>
    </ul>
    <p>
      Android includes support for <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">Bluetooth and Bluetooth Low Energy</a>.
    </p>
    <p>
      If device implementations include support for Bluetooth and Bluetooth Low Energy, they:
    </p>
    <ul>
      <li>[C-2-1] MUST declare the relevant platform features (<code>android.hardware.bluetooth</code> and <code>android.hardware.bluetooth_le</code> respectively) and implement the platform APIs.
      </li>
      <li>SHOULD implement relevant Bluetooth profiles such as A2DP, AVRCP, OBEX, HFP, etc. as appropriate for the device.
      </li>
    </ul>
    <p>
      If device implementations include support for Bluetooth Low Energy, they:
    </p>
    <ul>
      <li>[C-3-1] MUST declare the hardware feature <code>android.hardware.bluetooth_le</code>.
      </li>
      <li>[C-3-2] 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>[C-3-3] MUST report the correct value for <code>BluetoothAdapter.isOffloadedFilteringSupported()</code> to indicate whether the filtering logic for the <a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">ScanFilter</a> API classes is implemented.
      </li>
      <li>[C-3-4] MUST report the correct value for <code>BluetoothAdapter.isMultipleAdvertisementSupported()</code> to indicate whether Low Energy Advertising is supported.
      </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>.
      </li>
      <li>SHOULD support offloading of the batched scanning to the bluetooth chipset.
      </li>
      <li>
        <p>
          SHOULD support multi advertisement with at least 4 slots.
        </p>
      </li>
      <li>
        <p>
          [SR] 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.
        </p>
      </li>
    </ul>
    <p>
      If device implementations support Bluetooth LE and use Bluetooth LE for location scanning, they:
    </p>
    <ul>
      <li>[C-4-1] MUST provide a user affordance to enable/disable the value read through the System API <code>BluetoothAdapter.isBleScanAlwaysAvailable()</code>.
      </li>
    </ul>
    <h4 id="7_4_4_near-field_communications">
      7.4.4. Near-Field Communications
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include a transceiver and related hardware for Near-Field Communications (NFC).
      </li>
      <li>[C-0-1] MUST implement <code>android.nfc.NdefMessage</code> and <code>android.nfc.NdefRecord</code> APIs even if they do not include support for NFC or declare the <code>android.hardware.nfc</code> feature as the classes represent a protocol-independent data representation format.
      </li>
    </ul>
    <p>
      If device implementations include NFC hardware and plan to make it available to third-party apps, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the <code>android.hardware.nfc</code> feature from the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><code>android.content.pm.PackageManager.hasSystemFeature()</code> method</a>.
      </li>
      <li>MUST be capable of reading and writing NDEF messages via the following NFC standards as below:
      </li>
      <li>[C-1-2] 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, 5 (defined by the NFC Forum)
          </li>
        </ul>
      </li>
      <li>
        <p>
          [SR] 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 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.
        </p>
      </li>
      <li>
        <p>
          [C-1-3] MUST be capable of transmitting and receiving data via the following peer-to-peer standards and protocols:
        </p>
        <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>[C-1-4] MUST include support for <a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">Android Beam</a> and SHOULD enable Android Beam by default.
      </li>
      <li>[C-1-5] MUST be able to send and receive using Android Beam, when Android Beam is enabled or another proprietary NFC P2p mode is turned on.
      </li>
      <li>[C-1-6] MUST implement the SNEP default server. Valid NDEF messages received by the default SNEP server MUST be dispatched to applications using the <code>android.nfc.ACTION_NDEF_DISCOVERED</code> intent. Disabling Android Beam in settings MUST NOT disable dispatch of incoming NDEF message.
      </li>
      <li>[C-1-7] MUST honor the <code>android.settings.NFCSHARING_SETTINGS</code> intent to show <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS">NFC sharing settings</a>.
      </li>
      <li>[C-1-8] MUST implement the NPP server. Messages received by the NPP server MUST be processed the same way as the SNEP default server.
      </li>
      <li>[C-1-9] 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>[C-1-10] MUST allow foreground activities to set the outbound P2P NDEF message using <code>android.nfc.NfcAdapter.setNdefPushMessage</code>, and <code>android.nfc.NfcAdapter.setNdefPushMessageCallback</code>, and <code>android.nfc.NfcAdapter.enableForegroundNdefPush</code>.
      </li>
      <li>SHOULD use a gesture or on-screen confirmation, such as 'Touch to Beam', before sending outbound P2P NDEF messages.
      </li>
      <li>[C-1-11] MUST support NFC Connection handover to Bluetooth when the device supports Bluetooth Object Push Profile.
      </li>
      <li>[C-1-12] MUST support connection handover to Bluetooth when using <code>android.nfc.NfcAdapter.setBeamPushUris</code>, 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>[C-1-13] 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>
      <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>
    </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.
    </p>
    <p>
      If device implementations include an NFC controller chipset capable of HCE (for NfcA and/or NfcB) and support Application ID (AID) routing, they:
    </p>
    <ul>
      <li>[C-2-1] MUST report the <code>android.hardware.nfc.hce</code> feature constant.
      </li>
      <li>[C-2-2] 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 device implementations include an NFC controller chipset capable of HCE for NfcF, and implement the feature for third-party applications, they:
    </p>
    <ul>
      <li>[C-3-1] MUST report the <code>android.hardware.nfc.hcef</code> feature constant.
      </li>
      <li>[C-3-2] MUST implement the <a href="https://developer.android.com/reference/android/nfc/cardemulation/NfcFCardEmulation.html">NfcF Card Emulation APIs</a> as defined in the Android SDK.
      </li>
    </ul>
    <p>
      If device implementations include general NFC support as described in this section and support MIFARE technologies (MIFARE Classic, MIFARE Ultralight, NDEF on MIFARE Classic) in the reader/writer role, they:
    </p>
    <ul>
      <li>[C-4-1] MUST implement the corresponding Android APIs as documented by the Android SDK.
      </li>
      <li>[C-4-2] MUST report the feature <code>com.nxp.mifare</code> from the <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><code>android.content.pm.PackageManager.hasSystemFeature</code>()</a> method. Note that this is not a standard Android feature and as such does not appear as a constant in the <code>android.content.pm.PackageManager</code> class.
      </li>
    </ul>
    <h4 id="7_4_5_minimum_network_capability">
      7.4.5. Minimum Network Capability
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] 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 200 Kbit/sec or greater. Examples of technologies that satisfy this requirement include EDGE, HSPA, EV-DO, 802.11g, Ethernet and Bluetooth PAN.
      </li>
      <li>SHOULD also include support for at least one common wireless data standard, such as 802.11 (Wi-Fi), when a physical networking standard (such as Ethernet) is the primary data connection.
      </li>
      <li>MAY implement more than one form of data connectivity.
      </li>
      <li>[C-0-2] 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.
      </li>
      <li>[C-0-3] MUST enable IPv6 by default.
      </li>
      <li>MUST ensure that IPv6 communication is as reliable as IPv4, for example:
        <ul>
          <li>[C-0-4] MUST maintain IPv6 connectivity in doze mode.
          </li>
          <li>[C-0-5] 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.
          </li>
        </ul>
      </li>
      <li>[C-0-6] MUST provide third-party applications with direct IPv6 connectivity to the network when connected to an IPv6 network, without any form of address or port translation happening locally on the device. Both managed APIs such as <a href="https://developer.android.com/reference/java/net/Socket.html#getLocalAddress%28%29"><code>Socket#getLocalAddress</code></a> or <a href="https://developer.android.com/reference/java/net/Socket.html#getLocalPort%28%29"><code>Socket#getLocalPort</code></a>) and NDK APIs such as <code>getsockname()</code> or <code>IPV6_PKTINFO</code> MUST return the IP address and port that is actually used to send and receive packets on the network.
      </li>
    </ul>
    <p>
      The required level of IPv6 support depends on the network type, as shown in the following requirements.
    </p>
    <p>
      If device implementations support Wi-Fi, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support dual-stack and IPv6-only operation on Wi-Fi.
      </li>
    </ul>
    <p>
      If device implementations support Ethernet, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support dual-stack operation on Ethernet.
      </li>
    </ul>
    <p>
      If device implementations support Cellular data, they:
    </p>
    <ul>
      <li>SHOULD support IPv6 operation (IPv6-only and possibly dual-stack) on cellular.
      </li>
    </ul>
    <p>
      If device implementations support more than one network type (e.g., Wi-Fi and cellular data), they:
    </p>
    <ul>
      <li>[C-3-1] MUST simultaneously meet the above requirements on each network when the device is simultaneously connected to more than one network type.
      </li>
    </ul>
    <h4 id="7_4_6_sync_settings">
      7.4.6. Sync Settings
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] 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"><code>getMasterSyncAutomatically()</code></a> returns “true”.
      </li>
    </ul>
    <h4 id="7_4_7_data_saver">
      7.4.7. Data Saver
    </h4>
    <p>
      If device implementations include a metered connection, they are:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to provide the data saver mode.
      </li>
    </ul>
    <p>
      If device implementations provide the data saver mode, they:
    </p>
    <ul>
      <li>[C-1-1] 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>
      </li>
      <li>[C-1-2] MUST provide a user interface in the settings, that handles the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS"><code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code></a> intent, allowing users to add applications to or remove applications from the whitelist.
      </li>
    </ul>
    <p>
      If device implementations do not provide the data saver mode, they:
    </p>
    <ul>
      <li>[C-2-1] 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>
      </li>
      <li>[C-2-2] MUST NOT broadcast <code>ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED</code>.
      </li>
      <li>[C-2-3] 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.
      </li>
    </ul>
    <h4 id="7_4_8_secure_elements">
      7.4.8. Secure Elements
    </h4>
    <p>
      If device implementations support <a href="https://developer.android.com/reference/android/se/omapi/package-summary">Open Mobile API</a> capable secure elements and make them available to 3rd-party apps, they:
    </p>
    <ul>
      <li>[C-1-1] MUST enumerate the available Secure Elements readers when <a href="https://developer.android.com/reference/android/se/omapi/SEService#getReaders%28%29"><code>android.se.omapi.SEService.getReaders()</code></a> method is called.
      </li>
    </ul>
    <h3 id="7_5_cameras">
      7.5. Cameras
    </h3>
    <p>
      If device implementations include at least one camera, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the <code>android.hardware.camera.any</code> feature flag.
      </li>
      <li>[C-1-2] 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.
      </li>
    </ul>
    <h4 id="7_5_1_rear-facing_camera">
      7.5.1. Rear-Facing Camera
    </h4>
    <p>
      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.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>SHOULD include a rear-facing camera.
      </li>
    </ul>
    <p>
      If device implementations include at least one rear-facing camera, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the feature flag <code>android.hardware.camera</code> and <code>android.hardware.camera.any</code>.
      </li>
      <li>[C-1-2] 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.
      </li>
    </ul>
    <p>
      If the camera includes a flash:
    </p>
    <ul>
      <li>[C-2-1] the flash lamp MUST NOT be lit while an <code>android.hardware.Camera.PreviewCallback</code> instance has been registered on a Camera preview surface, unless the application has explicitly enabled the flash by enabling the <code>FLASH_MODE_AUTO</code> or <code>FLASH_MODE_ON</code> attributes of a <code>Camera.Parameters</code> object. Note that this constraint does not apply to the device’s built-in system camera application, but only to third-party applications using <code>Camera.PreviewCallback</code>.
      </li>
    </ul>
    <h4 id="7_5_2_front-facing_camera">
      7.5.2. Front-Facing Camera
    </h4>
    <p>
      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>
      Device implementations:
    </p>
    <ul>
      <li>MAY include a front-facing camera.
      </li>
    </ul>
    <p>
      If device implementations include at least one front-facing camera, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the feature flag <code>android.hardware.camera.any</code> and <code>android.hardware.camera.front</code>.
      </li>
      <li>[C-1-2] MUST have a resolution of at least VGA (640x480 pixels).
      </li>
      <li>[C-1-3] MUST NOT use a front-facing camera as the default for the Camera API and MUST NOT configure the API to treat a front-facing camera as the default rear-facing camera, even if it is the only camera on the device.
      </li>
      <li>[C-1-4] The camera preview MUST be mirrored horizontally relative to the orientation specified by the application when the current application has explicitly requested that the Camera display be rotated via a call to the <a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)"><code>android.hardware.Camera.setDisplayOrientation()</code></a> method. Conversely, the preview MUST be mirrored along the device’s default horizontal axis when the current application does not explicitly request that the Camera display be rotated via a call to the <a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)"><code>android.hardware.Camera.setDisplayOrientation()</code></a> method.
      </li>
      <li>[C-1-5] MUST NOT mirror the final captured still image or video streams returned to application callbacks or committed to media storage.
      </li>
      <li>[C-1-6] MUST mirror the image displayed by the postview in the same manner as the camera preview image stream.
      </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>
    </ul>
    <p>
      If device implementations are capable of being rotated by user (such as automatically via an accelerometer or manually via user input):
    </p>
    <ul>
      <li>[C-2-1] The camera preview MUST be mirrored horizontally relative to the device’s current orientation.
      </li>
    </ul>
    <h4 id="7_5_3_external_camera">
      7.5.3. External Camera
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>MAY include support for an external camera that is not necessarily always connected.
      </li>
    </ul>
    <p>
      If device implementations include support for an external camera, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the platform feature flag <code>android.hardware.camera.external</code> and <code>android.hardware camera.any</code>.
      </li>
      <li>[C-1-2] MUST support USB Video Class (UVC 1.0 or higher) if the external camera connects through the USB host port.
      </li>
      <li>[C-1-3] MUST pass camera CTS tests with a physical external camera device connected. Details of camera CTS testing are available at <a href="https://source.android.com/compatibility/cts/camera-hal">source.android.com</a>.
      </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 multiple cameras.
      </li>
      <li>MAY support camera-based video encoding.
      </li>
    </ul>
    <p>
      If camera-based video encoding is supported:
    </p>
    <ul>
      <li>[C-2-1] 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,<code>android.hardware.Camera</code>, 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>
      All features that are common between the deprecated android.hardware.Camera class and the newer android.hardware.camera2 package MUST have equivalent performance and quality in both APIs. For example, with equivalent settings, autofocus speed and accuracy must be identical, and the quality of captured images must be the same. Features that depend on the different semantics of the two APIs are not required to have matching speed or quality, but SHOULD match as closely as possible.
    </p>
    <p>
      Device implementations MUST implement the following behaviors for the camera-related APIs, for all available cameras. Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST use <code>android.hardware.PixelFormat.YCbCr_420_SP</code> for preview data provided to application callbacks when an application has never called <code>android.hardware.Camera.Parameters.setPreviewFormat(int)</code>.
      </li>
      <li>[C-0-2] MUST further be in the NV21 encoding format when an application registers an <code>android.hardware.Camera.PreviewCallback</code> instance and the system calls the <code>onPreviewFrame()</code> method and the preview format is YCbCr_420_SP, the data in the byte[] passed into <code>onPreviewFrame()</code>. That is, NV21 MUST be the default.
      </li>
      <li>[C-0-3] MUST support the YV12 format (as denoted by the <code>android.graphics.ImageFormat.YV12</code> constant) for camera previews for both front- and rear-facing cameras for <code>android.hardware.Camera</code>. (The hardware video encoder and camera may use any native pixel format, but the device implementation MUST support conversion to YV12.)
      </li>
      <li>[C-0-4] MUST support the <code>android.hardware.ImageFormat.YUV_420_888</code> and <code>android.hardware.ImageFormat.JPEG</code> formats as outputs through the <code>android.media.ImageReader</code> API for <code>android.hardware.camera2</code> devices that advertise <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE"><code>REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE</code></a> capability in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES"><code>android.request.availableCapabilities</code></a>.
      </li>
      <li>[C-0-5] 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 <code>android.hardware.Camera.AutoFocusCallback</code> instances (even though this has no relevance to a non-autofocus camera.) Note that this does apply to front-facing cameras; for instance, even though most front-facing cameras do not support autofocus, the API callbacks must still be “faked” as described.
      </li>
      <li>[C-0-6] 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"><code>android.hardware.Camera.Parameters</code></a> class. Conversely, device implementations MUST NOT honor or recognize string constants passed to the <code>android.hardware.Camera.setParameters()</code> method other than those documented as constants on the <code>android.hardware.Camera.Parameters</code>. That is, device implementations MUST support all standard Camera parameters if the hardware allows, and MUST NOT support custom Camera parameter types. For instance, device implementations that support image capture using high dynamic range (HDR) imaging techniques MUST support camera parameter <code>Camera.SCENE_MODE_HDR</code>.
      </li>
      <li>[C-0-7] 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"><code>android.info.supportedHardwareLevel</code></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>.
      </li>
      <li>[C-0-8] MUST also declare its individual camera capabilities of <code>android.hardware.camera2</code> via the <code>android.request.availableCapabilities</code> property and declare the appropriate <a href="http://source.android.com/devices/camera/versioning.html">feature flags</a>; MUST define the feature flag if any of its attached camera devices supports the feature.
      </li>
      <li>[C-0-9] MUST broadcast the <code>Camera.ACTION_NEW_PICTURE</code> intent whenever a new picture is taken by the camera and the entry of the picture has been added to the media store.
      </li>
      <li>[C-0-10] MUST broadcast the <code>Camera.ACTION_NEW_VIDEO</code> intent whenever a new video is recorded by the camera and the entry of the picture has been added to the media store.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support a logical camera device that lists capability <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA"><code>CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA</code></a>, for devices with multiple cameras facing the same direction, consisting of each physical camera facing that direction, as long as the physical camera type is supported by the framework and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL"><code>CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL</code></a> for the physical cameras is either <code>LIMITED</code>, <code>FULL</code>, or <code>LEVEL_3</code>.
      </li>
    </ul>
    <h4 id="7_5_5_camera_orientation">
      7.5.5. Camera Orientation
    </h4>
    <p>
      If device implementations have a front- or a rear-facing camera, such camera(s):
    </p>
    <ul>
      <li>[C-1-1] 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.
      </li>
    </ul>
    <h3 id="7_6_memory_and_storage">
      7.6. Memory and Storage
    </h3>
    <h4 id="7_6_1_minimum_memory_and_storage">
      7.6.1. Minimum Memory and Storage
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST include a <a href="http://developer.android.com/reference/android/app/DownloadManager.html">Download Manager</a> that applications MAY use to download data files and they MUST be capable of downloading individual files of at least 100MB in size to the default “cache” location.
      </li>
    </ul>
    <h4 id="7_6_2_application_shared_storage">
      7.6.2. Application Shared Storage
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST offer storage to be shared by applications, also often referred as “shared external storage”, "application shared storage" or by the Linux path "/sdcard" it is mounted on.
      </li>
      <li>[C-0-2] MUST be configured with shared storage mounted by default, in other words “out of the box”, regardless of whether the storage is implemented on an internal storage component or a removable storage medium (e.g. Secure Digital card slot).
      </li>
      <li>[C-0-3] MUST mount the application shared storage directly on the Linux path <code>sdcard</code> or include a Linux symbolic link from <code>sdcard</code> to the actual mount point.
      </li>
      <li>[C-0-4] MUST enforce the <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission on this shared storage as documented in the SDK. Shared storage MUST otherwise be writable by any application that obtains that permission.
      </li>
    </ul>
    <p>
      Device implementations MAY meet the above requirements using either of the following:
    </p>
    <ul>
      <li>User-accessible removable storage, such as a Secure Digital (SD) card slot.
      </li>
      <li>A portion of the internal (non-removable) storage as implemented in the Android Open Source Project (AOSP).
      </li>
    </ul>
    <p>
      If device implementations use removable storage to satisfy the above requirements, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement a toast or pop-up user interface warning the user when there is no storage medium inserted in the slot.
      </li>
      <li>[C-1-2] MUST include a FAT-formatted storage medium (e.g. SD card) or show on the box and other material available at time of purchase that the storage medium has to be purchased separately.
      </li>
    </ul>
    <p>
      If device implementations use a portion of the non-removable storage to satisfy the above requirements, they:
    </p>
    <ul>
      <li>SHOULD use the AOSP implementation of the internal application shared storage.
      </li>
      <li>MAY share the storage space with the application private data.
      </li>
    </ul>
    <p>
      If device implementations include multiple shared storage paths (such as both an SD card slot and shared internal storage), they:
    </p>
    <ul>
      <li>[C-2-1] MUST allow only preinstalled and privileged Android applications with the <code>WRITE_EXTERNAL_STORAGE</code> 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.
      </li>
    </ul>
    <p>
      If device implementations have a USB port with USB peripheral mode support, they:
    </p>
    <ul>
      <li>[C-3-1] MUST provide a mechanism to access the data on the application shared storage from a host computer.
      </li>
      <li>SHOULD expose content from both storage paths transparently through Android’s media scanner service and <code>android.provider.MediaStore</code>.
      </li>
      <li>MAY use USB mass storage, but SHOULD use Media Transfer Protocol to satisfy this requirement.
      </li>
    </ul>
    <p>
      If device implementations have a USB port with USB peripheral mode and support Media Transfer Protocol, they:
    </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>
      If the device is expected to be mobile in nature unlike Television, device implementations are:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to implement the adoptable storage in a long-term stable location, since accidentally disconnecting them can cause data loss/corruption.
      </li>
    </ul>
    <p>
      If the removable storage device port is in a long-term stable location, such as within the battery compartment or other protective cover, device implementations are:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to implement <a href="http://source.android.com/devices/storage/adoptable.html">adoptable storage</a>.
      </li>
    </ul>
    <h3 id="7_7_usb">
      7.7. USB
    </h3>
    <p>
      If device implementations have a USB port, they:
    </p>
    <ul>
      <li>SHOULD support USB peripheral mode and SHOULD support USB host mode.
      </li>
    </ul>
    <h4 id="7_7_1_usb_peripheral_mode">
      7.7.1. USB peripheral mode
    </h4>
    <p>
      If device implementations include a USB port supporting peripheral mode:
    </p>
    <ul>
      <li>[C-1-1] The port MUST be connectable to a USB host that has a standard type-A or type-C USB port.
      </li>
      <li>[C-1-2] MUST report the correct value of <code>iSerialNumber</code> in USB standard device descriptor through <code>android.os.Build.SERIAL</code>.
      </li>
      <li>[C-1-3] MUST detect 1.5A and 3.0A chargers per the Type-C resistor standard and MUST detect changes in the advertisement if they support Type-C USB.
      </li>
      <li>[SR] 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>[SR] 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>[SR] 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>[SR] 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>
      <li>[SR] STRONGLY RECOMMENDED to support Power Delivery for data and power role swapping when they support Type-C USB and USB host mode.
      </li>
      <li>SHOULD support Power Delivery for high-voltage charging and support for Alternate Modes such as display out.
      </li>
      <li>SHOULD implement the Android Open Accessory (AOA) API and specification as documented in the Android SDK documentation.
      </li>
    </ul>
    <p>
      If device implementations include a USB port and implement the AOA specification, they:
    </p>
    <ul>
      <li>[C-2-1] MUST declare support for the hardware feature <a href="http://developer.android.com/guide/topics/connectivity/usb/accessory.html"><code>android.hardware.usb.accessory</code></a>.
      </li>
      <li>[C-2-2] 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>
      <li>SHOULD NOT implement <a href="https://source.android.com/devices/accessories/aoa2#audio-support">AOAv2 audio</a> documented in the Android Open Accessory Protocol 2.0 documentation. AOAv2 audio is deprecated as of Android version 8.0 (API level 26).
      </li>
    </ul>
    <h4 id="7_7_2_usb_host_mode">
      7.7.2. USB host mode
    </h4>
    <p>
      If device implementations include a USB port supporting host mode, they:
    </p>
    <ul>
      <li>[C-1-1] 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"><code>android.hardware.usb.host</code></a>.
      </li>
      <li>[C-1-2] MUST implement support to connect standard USB peripherals, in other words, they MUST either:
        <ul>
          <li>Have an on-device type C port or ship with cable(s) adapting an on-device proprietary port to a standard USB type-C port (USB Type-C device).
          </li>
          <li>Have an on-device type A or ship with cable(s) adapting an on-device proprietary port to a standard USB type-A port.
          </li>
          <li>Have an on-device micro-AB port, which SHOULD ship with a cable adapting to a standard type-A port.
          </li>
        </ul>
      </li>
      <li>[C-1-3] MUST NOT ship with an adapter converting from USB type A or micro-AB ports to a type-C port (receptacle).
      </li>
      <li>[SR] STRONGLY RECOMMENDED 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>SHOULD support charging the connected USB peripheral device while in host mode; advertising a source current of at least 1.5A as specified in the Termination Parameters section of the <a href="http://www.usb.org/developers/docs/usb_31_021517.zip">USB Type-C Cable and Connector Specification Revision 1.2</a> for USB Type-C connectors or using Charging Downstream Port(CDP) output current range 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> for Micro-AB connectors.
      </li>
      <li>SHOULD implement and support USB Type-C standards.
      </li>
    </ul>
    <p>
      If device implementations include a USB port supporting host mode and the USB audio class, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support the <a href="https://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_HID">USB HID class</a>.
      </li>
      <li>[C-2-2] MUST support the detection and mapping of the following HID data fields specified in the <a href="http://www.usb.org/developers/hidpage/Hut1_12v2.pdf">USB HID Usage Tables</a> and the <a href="http://www.usb.org/developers/hidpage/Voice_Command_Usage.pdf">Voice Command Usage Request</a> to the <a href="https://developer.android.com/reference/android/view/KeyEvent.html"><code>KeyEvent</code></a> constants as below:
        <ul>
          <li>Usage Page (0xC) Usage ID (0x0CD): <code>KEYCODE_MEDIA_PLAY_PAUSE</code>
          </li>
          <li>Usage Page (0xC) Usage ID (0x0E9): <code>KEYCODE_VOLUME_UP</code>
          </li>
          <li>Usage Page (0xC) Usage ID (0x0EA): <code>KEYCODE_VOLUME_DOWN</code>
          </li>
          <li>Usage Page (0xC) Usage ID (0x0CF): <code>KEYCODE_VOICE_ASSIST</code>
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations include a USB port supporting host mode and the Storage Access Framework (SAF), they:
    </p>
    <ul>
      <li>[C-3-1] 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. .
      </li>
    </ul>
    <p>
      If device implementations include a USB port supporting host mode and USB Type-C, they:
    </p>
    <ul>
      <li>[C-4-1] MUST implement Dual Role Port functionality as defined by the USB Type-C specification (section 4.5.1.3.3).
      </li>
      <li>[SR] 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>[SR] STRONGLY RECOMMENDED to NOT support Audio Adapter Accessory Mode as described in the Appendix A of the <a href="http://www.usb.org/developers/docs/">USB Type-C Cable and Connector Specification Revision 1.2</a>.
      </li>
      <li>SHOULD implement the Try.* model that is most appropriate for the device form factor. For example a handheld device SHOULD implement the Try.SNK model.
      </li>
    </ul>
    <h3 id="7_8_audio">
      7.8. Audio
    </h3>
    <h4 id="7_8_1_microphone">
      7.8.1. Microphone
    </h4>
    <p>
      If device implementations include a microphone, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the <code>android.hardware.microphone</code> feature constant.
      </li>
      <li>[C-1-2] MUST meet the audio recording requirements in <a href="#5_4_audio_recording">section 5.4</a>.
      </li>
      <li>[C-1-3] MUST meet the audio latency requirements in <a href="#5_6_audio_latency">section 5.6</a>.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to support near-ultrasound recording as described in <a href="#7_8_3_near_ultrasound">section 7.8.3</a>.
      </li>
    </ul>
    <p>
      If device implementations omit a microphone, they:
    </p>
    <ul>
      <li>[C-2-1] MUST NOT report the <code>android.hardware.microphone</code> feature constant.
      </li>
      <li>[C-2-2] MUST implement the audio recording API at least as no-ops, per <a href="#7_hardware_compatibility">section 7</a>.
      </li>
    </ul>
    <h4 id="7_8_2_audio_output">
      7.8.2. Audio Output
    </h4>
    <p>
      If device implementations include a speaker or an audio/multimedia output port for an audio output peripheral such as a 4 conductor 3.5mm audio jack or USB host mode port using <a href="https://source.android.com/devices/audio/usb#audioClass">USB audio class</a>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST report the <code>android.hardware.audio.output</code> feature constant.
      </li>
      <li>[C-1-2] MUST meet the audio playback requirements in <a href="#5_5_audio_playback">section 5.5</a>.
      </li>
      <li>[C-1-3] MUST meet the audio latency requirements in <a href="#5_6_audio_latency">section 5.6</a>.
      </li>
      <li>[SR] 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>
      If device implementations do not include a speaker or audio output port, they:
    </p>
    <ul>
      <li>[C-2-1] MUST NOT report the <code>android.hardware.audio.output</code> feature.
      </li>
      <li>[C-2-2] MUST implement the Audio Output related APIs as no-ops at least.
      </li>
    </ul>
    <p>
      For the purposes of this section, an "output port" is a <a href="https://en.wikipedia.org/wiki/Computer_port_%28hardware%29">physical interface</a> such as a 3.5mm audio jack, HDMI, or USB host mode port with USB audio class. Support for audio output over radio-based protocols such as Bluetooth, WiFi, or cellular network does not qualify as including an "output port".
    </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="https://source.android.com/devices/accessories/headset/plug-headset-spec">headsets and other audio accessories</a> using the 3.5mm audio plug across the Android ecosystem, if device implementations include one or more analog audio ports, they:
    </p>
    <ul>
      <li>[C-SR] Are STRONGLY RECOMMENDED to include at least one of the audio port(s) to be a 4 conductor 3.5mm audio jack.
      </li>
    </ul>
    <p>
      If device implementations have a 4 conductor 3.5mm audio jack, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support audio playback to stereo headphones and stereo headsets with a microphone.
      </li>
      <li>[C-1-2] MUST support TRRS audio plugs with the CTIA pin-out order.
      </li>
      <li>[C-1-3] 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>: <code>KEYCODE_HEADSETHOOK</code>
          </li>
          <li>
            <strong>210-290 ohm</strong>: <code>KEYCODE_VOLUME_UP</code>
          </li>
          <li>
            <strong>360-680 ohm</strong>: <code>KEYCODE_VOLUME_DOWN</code>
          </li>
        </ul>
      </li>
      <li>[C-1-4] MUST trigger <code>ACTION_HEADSET_PLUG</code> upon a plug insert, but only after all contacts on plug are touching their relevant segments on the jack.
      </li>
      <li>[C-1-5] MUST be capable of driving at least 150mV ± 10% of output voltage on a 32 ohm speaker impedance.
      </li>
      <li>[C-1-6] MUST have a microphone bias voltage between 1.8V ~ 2.9V.
      </li>
      <li>[C-1-7] MUST 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> <code>KEYCODE_VOICE_ASSIST</code>
          </li>
        </ul>
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support audio plugs with the OMTP pin-out order.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMEND to support audio recording from stereo headsets with a microphone.
      </li>
    </ul>
    <p>
      If device implementations have a 4 conductor 3.5mm audio jack and support a microphone, and broadcast the <code>android.intent.action.HEADSET_PLUG</code> with the extra value microphone set as 1, they:
    </p>
    <ul>
      <li>[C-2-1] MUST support the detection of microphone on the plugged in audio accessory.
      </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.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>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:
      </li>
    </ul>
    <p>
      If <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND"><code>PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND</code></a> is "true", the following requirements MUST be met by the <code>VOICE_RECOGNITION</code> and <code>UNPROCESSED</code> audio sources:
    </p>
    <ul>
      <li>[C-1-1] 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>[C-1-2] 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>
    <p>
      If <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND"><code>PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND</code></a> is "true":
    </p>
    <ul>
      <li>[C-2-1] The speaker's mean response in 18.5 kHz - 20 kHz MUST be no lower than 40 dB below the response at 2 kHz.
      </li>
    </ul>
    <h3 id="7_9_virtual_reality">
      7.9. Virtual Reality
    </h3>
    <p>
      Android includes APIs and facilities to build "Virtual Reality" (VR) applications including high quality mobile VR experiences. Device implementations MUST properly implement these APIs and behaviors, as detailed in this section.
    </p>
    <h4 id="7_9_1_virtual_reality_mode">
      7.9.1. Virtual Reality Mode
    </h4>
    <p>
      Android includes support for <a href="https://developer.android.com/reference/android/app/Activity.html#setVrModeEnabled%28boolean,%20android.content.ComponentName%29">VR Mode</a>, a feature which handles stereoscopic rendering of notifications and disables monocular system UI components while a VR application has user focus.
    </p>
    <h4 id="7_9_2_virtual_reality_mode_-_high_performance">
      7.9.2. Virtual Reality Mode - High Performance
    </h4>
    <p>
      If device implementations support VR mode, they:
    </p>
    <ul>
      <li>[C-1-1] MUST have at least 2 physical cores.
      </li>
      <li>[C-1-2] MUST declare the <code>android.hardware.vr.high_performance</code> feature.
      </li>
      <li>[C-1-3] MUST support sustained performance mode.
      </li>
      <li>[C-1-4] MUST support OpenGL ES 3.2.
      </li>
      <li>[C-1-5] MUST support <code>android.hardware.vulkan.level</code> 0.
      </li>
      <li>SHOULD support <code>android.hardware.vulkan.level</code> 1 or higher.
      </li>
      <li>[C-1-6] MUST implement <a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_mutable_render_buffer.txt"><code>EGL_KHR_mutable_render_buffer</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt"><code>EGL_ANDROID_front_buffer_auto_refresh</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt"><code>EGL_ANDROID_get_native_client_buffer</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_fence_sync.txt"><code>EGL_KHR_fence_sync</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_wait_sync.txt"><code>EGL_KHR_wait_sync</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/IMG/EGL_IMG_context_priority.txt"><code>EGL_IMG_context_priority</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_protected_content.txt"><code>EGL_EXT_protected_content</code></a>, <a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_gl_colorspace.txt"><code>EGL_EXT_image_gl_colorspace</code></a>, and expose the extensions in the list of available EGL extensions.
      </li>
      <li>[C-1-8] MUST implement <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture2.txt"><code>GL_EXT_multisampled_render_to_texture2</code></a>, <a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt"><code>GL_OVR_multiview</code></a>, <a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt"><code>GL_OVR_multiview2</code></a>, <a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt"><code>GL_OVR_multiview_multisampled_render_to_texture</code></a>, <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt"><code>GL_EXT_protected_textures</code></a>, and expose the extensions in the list of available GL extensions.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to implement <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_external_buffer.txt"><code>GL_EXT_external_buffer</code></a>, <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt"><code>GL_EXT_EGL_image_array</code></a>, and expose the extensions in the list of available GL extensions.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support Vulkan 1.1.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to implement <a href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer"><code>VK_ANDROID_external_memory_android_hardware_buffer</code></a>, <a href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_GOOGLE_display_timing"><code>VK_GOOGLE_display_timing</code></a>, <a href="https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_KHR_shared_presentable_image"><code>VK_KHR_shared_presentable_image</code></a>, and expose it in the list of available Vulkan extensions.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to expose at least one Vulkan queue family where <code>flags</code> contain both <code>VK_QUEUE_GRAPHICS_BIT</code> and <code>VK_QUEUE_COMPUTE_BIT</code>, and <code>queueCount</code> is at least 2.
      </li>
      <li>[C-1-7] 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>[C-1-9] MUST implement support for <a href="https://developer.android.com/ndk/reference/hardware__buffer_8h.html"><code>AHardwareBuffer</code></a> flags <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>, <code>AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA</code> and <code>AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT</code> as described in the NDK.
      </li>
      <li>[C-1-10] MUST implement support for <code>AHardwareBuffer</code>s with any combination of the usage flags <code>AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT</code>, <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>, <code>AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT</code> for at least the following formats: <code>AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM</code>, <code>AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM</code>, <code>AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM</code>, <code>AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT</code>.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support the allocation of <code>AHardwareBuffer</code>s with more than one layer and flags and formats specified in C-1-10.
      </li>
      <li>[C-1-11] MUST support H.264 decoding at least 3840 x 2160 at 30fps, compressed to an average of 40Mbps (equivalent to 4 instances of 1920 x1080 at 30 fps-10 Mbps or 2 instances of 1920 x 1080 at 60 fps-20 Mbps).
      </li>
      <li>[C-1-12] MUST support HEVC and VP9, MUST be capable of decoding at least 1920 x 1080 at 30 fps compressed to an average of 10 Mbps and SHOULD be capable of decoding 3840 x 2160 at 30 fps-20 Mbps (equivalent to 4 instances of 1920 x 1080 at 30 fps-5 Mbps).
      </li>
      <li>[C-1-13] MUST support <code>HardwarePropertiesManager.getDeviceTemperatures</code> API and return accurate values for skin temperature.
      </li>
      <li>[C-1-14] MUST have an embedded screen, and its resolution MUST be at least 1920 x 1080.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have a display resolution of at least 2560 x 1440.
      </li>
      <li>[C-1-15] The display MUST update at least 60 Hz while in VR Mode.
      </li>
      <li>[C-1-17] The display MUST support a low-persistence mode with ≤ 5 milliseconds persistence, persistence being defined as the amount of time for which a pixel is emitting light.
      </li>
      <li>[C-1-18] MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension <a href="#7_4_3_bluetooth">section 7.4.3</a>.
      </li>
      <li>[C-1-19] MUST support and properly report <a href="https://developer.android.com/reference/android/hardware/Sensor#isDirectChannelTypeSupported%28int%29">Direct Channel Type</a> for all of the following default sensor types:
        <ul>
          <li>
            <code>TYPE_ACCELEROMETER</code>
          </li>
          <li>
            <code>TYPE_ACCELEROMETER_UNCALIBRATED</code>
          </li>
          <li>
            <code>TYPE_GYROSCOPE</code>
          </li>
          <li>
            <code>TYPE_GYROSCOPE_UNCALIBRATED</code>
          </li>
          <li>
            <code>TYPE_MAGNETIC_FIELD</code>
          </li>
          <li>
            <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code>
          </li>
        </ul>
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support the <a href="https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#TYPE_HARDWARE_BUFFER"><code>TYPE_HARDWARE_BUFFER</code></a> direct channel type for all Direct Channel Types listed above.
      </li>
      <li>[C-1-21] MUST meet the gyroscope, accelerometer, and magnetometer related requirements for <code>android.hardware.hifi_sensors</code>, as specified in <a href="#7_3_9_high_fidelity_sensors">section 7.3.9</a>.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support the <code>android.hardware.sensor.hifi_sensors</code> feature.
      </li>
      <li>[C-1-22] MUST have end-to-end motion to photon latency not higher than 28 milliseconds.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have end-to-end motion to photon latency not higher than 20 milliseconds.
      </li>
      <li>[C-1-23] MUST have first-frame ratio, which is the ratio between the brightness of pixels on the first frame after a transition from black to white and the brightness of white pixels in steady state, of at least 85%.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have first-frame ratio of at least 90%.
      </li>
      <li>MAY provide an exclusive core to the foreground application and MAY support the <code>Process.getExclusiveCores</code> API to return the numbers of the cpu cores that are exclusive to the top foreground application.
      </li>
    </ul>
    <p>
      If exclusive core is supported, then the core:
    </p>
    <ul>
      <li>[C-2-1] 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>
    </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.
    </p>
    <h3 id="8_1_user_experience_consistency">
      8.1. User Experience Consistency
    </h3>
    <p>
      A smooth user interface can be provided to the end user if there are certain minimum requirements to ensure a consistent frame rate and response times for applications and games. Device implementations, depending on the device type, MAY have measurable requirements for the user interface latency and task switching as described in <a href="#2_device-types">section 2</a>.
    </p>
    <h3 id="8_2_file_i/o_access_performance">
      8.2. File I/O Access Performance
    </h3>
    <p>
      Providing a common baseline for a consistent file access performance on the application private data storage (<code>/data</code> partition) allows app developers to set a proper expectation that would help their software design. Device implementations, depending on the device type, MAY have certain requirements described in <a href="#2_device-type">section 2</a> for the following read and write operations:
    </p>
    <ul>
      <li>
        <strong>Sequential write performance</strong>. Measured by writing a 256MB file using 10MB write buffer.
      </li>
      <li>
        <strong>Random write performance</strong>. Measured by writing a 256MB file using 4KB write buffer.
      </li>
      <li>
        <strong>Sequential read performance</strong>. Measured by reading a 256MB file using 10MB write buffer.
      </li>
      <li>
        <strong>Random read performance</strong>. Measured by reading a 256MB file using 4KB write buffer.
      </li>
    </ul>
    <h3 id="8_3_power-saving_modes">
      8.3. Power-Saving Modes
    </h3>
    <p>
      If device implementations include features to improve device power management that are included in AOSP or extend the features that are included in AOSP, they:
    </p>
    <ul>
      <li>[C-1-1] MUST NOT deviate from the AOSP implementation for the triggering, maintenance, wakeup algorithms and the use of global system settings of App Standby and Doze power-saving modes.
      </li>
      <li>[C-1-2] MUST NOT deviate from the AOSP implementation for the use of global settings to manage the throttling of jobs, alarm and network for apps in each bucket for App standby.
      </li>
      <li>[C-1-3] MUST NOT deviate from the AOSP implementation for the number of the <a href="https://developer.android.com/topic/performance/appstandby">App Standby Buckets</a> used for App Standby.
      </li>
      <li>[C-1-4] MUST implement <a href="https://developer.android.com/topic/performance/appstandby">App Standby Buckets</a> and Doze as described in <a href="https://source.android.com/devices/tech/power/mgmt">Power Management</a>.
      </li>
      <li>[C-1-5] MUST return <code>true</code> for <a href="https://developer.android.com/reference/android/os/PowerManager#isPowerSaveMode%28%29"><code>PowerManager.isPowerSaveMode()</code></a> when the device is on power save mode.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to provide user affordance to enable and disable the battery saver feature.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to provide user affordance to display all Apps that are exempted from App Standby and Doze power-saving modes.
      </li>
    </ul>
    <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).
    </p>
    <p>
      If device implementations implement S4 power states as defined by the ACPI, they:
    </p>
    <ul>
      <li>[C-1-1] MUST enter this state only after the user has taken an explicit action to put the device in an inactive state (e.g. by closing a lid that is physically part of the device or turning off a vehicle or television) and before the user re-activates the device (e.g. by opening the lid or turning the vehicle or television back on).
      </li>
    </ul>
    <p>
      If device implementations implement S3 power states as defined by the ACPI, they:
    </p>
    <ul>
      <li>
        <p>
          [C-2-1] MUST meet C-1-1 above, or, MUST enter S3 state only when third-party applications do not need the system resources (e.g. the screen, CPU).
        </p>
        <p>
          Conversely, MUST exit from S3 state when third-party applications need the system resources, as described on this SDK.
        </p>
        <p>
          For example, while the third party applications request to keep the screen on through <code>FLAG_KEEP_SCREEN_ON</code> or keep CPU running through <code>PARTIAL_WAKE_LOCK</code>, the device MUST NOT enter S3 state unless, as described in C-1-1, the user has taken explicit action to put the device in an inactive state. Conversely, at a time when a task that third party apps implement through JobScheduler is triggered or Firebase Cloud Messaging is delivered to third party apps, the device MUST exit the S3 state unless the user has put the device in an inactive state. These are not comprehensive examples and AOSP implements extensive wake-up signals that trigger a wakeup from this state.
        </p>
      </li>
    </ul>
    <h3 id="8_4_power_consumption_accounting">
      8.4. Power Consumption Accounting
    </h3>
    <p>
      A more accurate accounting and reporting of the power consumption provides the app developer both the incentives and the tools to optimize the power usage pattern of the application.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to 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>[SR] STRONGLY RECOMMENDED to report all power consumption values in milliampere hours (mAh).
      </li>
      <li>[SR] STRONGLY RECOMMENDED to 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>
      <li>[SR] STRONGLY RECOMMENDED to 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>SHOULD be attributed to the hardware component itself if unable to attribute hardware component power usage to an application.
      </li>
    </ul>
    <h3 id="8_5_consistent_performance">
      8.5. Consistent Performance
    </h3>
    <p>
      Performance can fluctuate dramatically for high-performance long-running apps, either because of the other apps running in the background or the CPU throttling due to temperature limits. Android includes programmatic interfaces so that when the device is capable, the top foreground application can request that the system optimize the allocation of the resources to address such fluctuations.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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>
      </li>
      <li>
        <p>
          SHOULD support Sustained Performance Mode.
        </p>
      </li>
    </ul>
    <p>
      If device implementations report support of Sustained Performance Mode, they:
    </p>
    <ul>
      <li>[C-1-1] MUST provide the top foreground application a consistent level of performance for at least 30 minutes, when the app requests it.
      </li>
      <li>[C-1-2] MUST honor the <a href="https://developer.android.com/reference/android/view/Window.html#setSustainedPerformanceMode%28boolean%29"><code>Window.setSustainedPerformanceMode()</code></a> API and other related APIs.
      </li>
    </ul>
    <p>
      If device implementations include two or more CPU cores, they:
    </p>
    <ul>
      <li>SHOULD provide at least one exclusive core that can be reserved by the top foreground application.
      </li>
    </ul>
    <p>
      If device implementations support reserving one exclusive core for the top foreground application, they:
    </p>
    <ul>
      <li>[C-2-1] 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>[C-2-2] 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 device implementations do not support an exclusive core, they:
    </p>
    <ul>
      <li>[C-3-1] 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.
      </li>
    </ul>
    <h2 id="9_security_model_compatibility">
      9. Security Model Compatibility
    </h2>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] 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>
      </li>
    </ul>
    <h3 id="9_1_permissions">
      9.1. Permissions
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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, they MUST enforce each permission defined as described in the SDK documentation; no permissions may be omitted, altered, or ignored.
        </p>
      </li>
      <li>
        <p>
          MAY add additional permissions, provided the new permission ID strings are not in the <code>android.\*</code> namespace.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] Permissions with a <code>protectionLevel</code> of <a href="https://developer.android.com/reference/android/content/pm/PermissionInfo.html#PROTECTION&amp;lowbar;FLAG&amp;lowbar;PRIVILEGED"><code>PROTECTION_FLAG_PRIVILEGED</code></a> MUST only be granted to apps preinstalled in the privileged path(s) of the system image and within the subset of the explicitly whitelisted permissions for each app. The AOSP implementation meets this requirement by reading and honoring the whitelisted permissions for each app from the files in the <code>etc/permissions/</code> path and using the <code>system/priv-app</code> path as the privileged path.
        </p>
      </li>
    </ul>
    <p>
      Permissions with a protection level of dangerous are runtime permissions. Applications with <code>targetSdkVersion</code> &gt; 22 request them at runtime.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-3] 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>[C-0-4] MUST have one and only one implementation of both user interfaces.
      </li>
      <li>[C-0-5] 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>
      <li>[C-0-6] MUST grant the <code>android.permission.RECOVER_KEYSTORE</code> permission only to system apps that register a properly secured Recovery Agent. A properly secured Recovery Agent is defined as an on-device software agent that synchronizes with an off-device remote storage, that is equipped with secure hardware with protection equivalent or stronger than what is described in <a href="https://developer.android.com/preview/features/security/ckv-whitepaper.html">Google Cloud Key Vault Service</a> to prevent brute-force attacks on the lockscreen knowledge factor.
      </li>
    </ul>
    <p>
      If device implementations include a preinstalled app or wish to allow third-party apps to access the usage statistics, they:
    </p>
    <ul>
      <li>[SR] are STRONGLY RECOMMENDED provide user-accessible mechanism to grant or revoke access to the usage stats in response to the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION&amp;lowbar;USAGE&amp;lowbar;ACCESS&amp;lowbar;SETTINGS"><code>android.settings.ACTION_USAGE_ACCESS_SETTINGS</code></a> intent for apps that declare the <code>android.permission.PACKAGE_USAGE_STATS</code> permission.
      </li>
    </ul>
    <p>
      If device implementations intend to disallow any apps, including preinstalled apps, from accessing the usage statistics, they:
    </p>
    <ul>
      <li>[C-1-1] MUST still have an activity that handles the <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION&amp;lowbar;USAGE&amp;lowbar;ACCESS&amp;lowbar;SETTINGS"><code>android.settings.ACTION_USAGE_ACCESS_SETTINGS</code></a> intent pattern but MUST implement it as a no-op, that is to have an equivalent behavior as when the user is declined for access.
      </li>
    </ul>
    <h3 id="9_2_uid_and_process_isolation">
      9.2. UID and Process Isolation
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST support the Android application sandbox model, in which each application runs as a unique Unixstyle UID and in a separate process.
      </li>
      <li>[C-0-2] 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>.
      </li>
    </ul>
    <h3 id="9_3_filesystem_permissions">
      9.3. Filesystem Permissions
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] 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>.
      </li>
    </ul>
    <h3 id="9_4_alternate_execution_environments">
      9.4. Alternate Execution Environments
    </h3>
    <p>
      Device implementations MUST keep consistency of the Android security and permission model, even if they include runtime environments that execute applications using some other software or technology than the Dalvik Executable Format or native code. In other words:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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>
      </li>
      <li>
        <p>
          [C-0-2] Alternate runtimes MUST NOT be granted access to resources protected by permissions not requested in the runtime’s <code>AndroidManifest.xml</code> file via the &lt;<code>uses-permission</code>&gt; mechanism.
        </p>
      </li>
      <li>
        <p>
          [C-0-3] Alternate runtimes MUST NOT permit applications to make use of features protected by Android permissions restricted to system applications.
        </p>
      </li>
      <li>
        <p>
          [C-0-4] Alternate runtimes MUST abide by the Android sandbox model and installed applications using an alternate runtime MUST NOT reuse the sandbox of any other app installed on the device, except through the standard Android mechanisms of shared user ID and signing certificate.
        </p>
      </li>
      <li>
        <p>
          [C-0-5] Alternate runtimes MUST NOT launch with, grant, or be granted access to the sandboxes corresponding to other Android applications.
        </p>
      </li>
      <li>
        <p>
          [C-0-6] Alternate runtimes MUST NOT be launched with, be granted, or grant to other applications any privileges of the superuser (root), or of any other user ID.
        </p>
      </li>
      <li>
        <p>
          [C-0-7] When the <code>.apk</code> files of alternate runtimes are included in the system image of device implementations, it MUST be signed with a key distinct from the key used to sign other applications included with the device implementations.
        </p>
      </li>
      <li>
        <p>
          [C-0-8] When installing applications, alternate runtimes MUST obtain user consent for the Android permissions used by the application.
        </p>
      </li>
      <li>
        <p>
          [C-0-9] When 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.
        </p>
      </li>
      <li>
        <p>
          [C-0-10] When 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>
      </li>
      <li>
        <p>
          Alternate runtimes SHOULD install apps via the <code>PackageManager</code> into separate Android sandboxes (Linux user IDs, etc.).
        </p>
      </li>
      <li>
        <p>
          Alternate runtimes MAY provide a single Android sandbox shared by all applications using the alternate runtime.
        </p>
      </li>
    </ul>
    <h3 id="9_5_multi-user_support">
      9.5. Multi-User Support
    </h3>
    <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.
    </p>
    <ul>
      <li>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>
    <p>
      If device implementations include multiple users, they:
    </p>
    <ul>
      <li>[C-1-1] MUST meet the following requirements related to <a href="http://source.android.com/devices/storage/traditional.html">multi-user support</a>.
      </li>
      <li>[C-1-2] 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>[C-1-3] MUST have separate and isolated shared application storage (a.k.a. <code>/sdcard</code>) directories for each user instance.
      </li>
      <li>[C-1-4] MUST ensure that applications owned by and running on behalf a given user cannot list, read, or write to the files owned by any other user, even if the data of both users are stored on the same volume or filesystem.
      </li>
      <li>[C-1-5] MUST encrypt the contents of the SD card when multiuser is enabled using a key stored only on non-removable media accessible only to the system if device implementations use removable media for the external storage APIs. 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.
      </li>
    </ul>
    <p>
      If device implementations include multiple users and do not declare the <code>android.hardware.telephony</code> feature flag, they:
    </p>
    <ul>
      <li>[C-2-1] 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>
    </ul>
    <p>
      If device implementations include multiple users and declare the <code>android.hardware.telephony</code> feature flag, they:
    </p>
    <ul>
      <li>[C-3-1] 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>
    </ul>
    <h3 id="9_6_premium_sms_warning">
      9.6. Premium SMS Warning
    </h3>
    <p>
      Android includes support for warning users of any outgoing <a href="http://en.wikipedia.org/wiki/Short_code">premium SMS message</a>. Premium SMS messages are text messages sent to a service registered with a carrier that may incur a charge to the user.
    </p>
    <p>
      If device implementations declare support for <code>android.hardware.telephony</code>, they:
    </p>
    <ul>
      <li>[C-1-1] MUST warn users before sending a SMS message to numbers identified by regular expressions defined in <code>/data/misc/sms/codes.xml</code> file in the device. The upstream Android Open Source Project provides an implementation that satisfies this requirement.
      </li>
    </ul>
    <h3 id="9_7_security_features">
      9.7. Security Features
    </h3>
    <p>
      Device implementations MUST ensure compliance with security features in both the kernel and platform as described below.
    </p>
    <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. Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST maintain compatibility with existing applications, even when SELinux or any other security features are implemented below the Android framework.
      </li>
      <li>[C-0-2] MUST NOT have a visible user interface when a security violation is detected and successfully blocked by the security feature implemented below the Android framework, but MAY have a visible user interface when an unblocked security violation occurs resulting in a successful exploit.
      </li>
      <li>[C-0-3] MUST NOT make SELinux or any other security features implemented below the Android framework configurable to the user or app developer.
      </li>
      <li>[C-0-4] MUST NOT allow an application that can affect another application through an API (such as a Device Administration API) to configure a policy that breaks compatibility.
      </li>
      <li>[C-0-5] 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>
      <li>[C-0-6] 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>.
      </li>
    </ul>
    <p>
      Kernel integrity and self-protection features are integral to Android security. Device implementations:
    </p>
    <ul>
      <li>[C-0-7] MUST implement kernel stack buffer overflow protections (e.g. <code>CONFIG_CC_STACKPROTECTOR_STRONG</code>).
      </li>
      <li>[C-0-8] MUST implement strict kernel memory protections where executable code is read-only, read-only data is non-executable and non-writable, and writable data is non-executable (e.g. <code>CONFIG_DEBUG_RODATA</code> or <code>CONFIG_STRICT_KERNEL_RWX</code>).
      </li>
      <li>[C-0-9] MUST implement static and dynamic object size bounds checking of copies between user-space and kernel-space (e.g. <code>CONFIG_HARDENED_USERCOPY</code>) on devices originally shipping with API level 28 or higher.
      </li>
      <li>[C-0-10] MUST NOT execute user-space memory when executing in the kernel mode (e.g. hardware PXN, or emulated via <code>CONFIG_CPU_SW_DOMAIN_PAN</code> or <code>CONFIG_ARM64_SW_TTBR0_PAN</code>) on devices originally shipping with API level 28 or higher.
      </li>
      <li>[C-0-11] MUST NOT read or write user-space memory in the kernel outside of normal usercopy access APIs (e.g. hardware PAN, or emulated via <code>CONFIG_CPU_SW_DOMAIN_PAN</code> or <code>CONFIG_ARM64_SW_TTBR0_PAN</code>) on devices originally shipping with API level 28 or higher.
      </li>
      <li>[C-0-12] MUST implement kernel page table isolation on all devices originally shipping with API level 28 or higher (e.g. <code>CONFIG_PAGE_TABLE_ISOLATION</code> or `CONFIG_UNMAP_KERNEL_AT_EL0).
      </li>
      <li>[SR] STRONGLY RECOMMENDED to keep kernel data which is written only during initialization marked read-only after initialization (e.g. <code>__ro_after_init</code>).
      </li>
      <li>[SR] STRONGLY RECOMMENDED to randomize the layout of the kernel code and memory, and to avoid exposures that would compromise the randomization (e.g. <code>CONFIG_RANDOMIZE_BASE</code> with bootloader entropy via the <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/chosen.txt"><code>/chosen/kaslr-seed Device Tree node</code></a> or <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/efi-rng-protocol"><code>EFI_RNG_PROTOCOL</code></a>).
      </li>
    </ul>
    <p>
      If device implementations use a Linux kernel, they:
    </p>
    <ul>
      <li>[C-1-1] MUST implement SELinux.
      </li>
      <li>[C-1-2] MUST set SELinux to global enforcing mode.
      </li>
      <li>[C-1-3] MUST configure all domains in enforcing mode. No permissive mode domains are allowed, including domains specific to a device/vendor.
      </li>
      <li>[C-1-4] 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>[C-1-5] MUST run third-party applications targeting API level 28 or higher in per-application SELinux sandboxes with per-app SELinux restrictions on each application's private data directory.
      </li>
      <li>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.
      </li>
    </ul>
    <p>
      If device implementations use kernel other than Linux, they:
    </p>
    <ul>
      <li>[C-2-1] MUST use a mandatory access control system that is equivalent to SELinux.
      </li>
    </ul>
    <p>
      Android contains multiple defense-in-depth features that are integral to device security.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-SR] Are STRONGLY RECOMMENDED not to disable Control-Flow Integrity (CFI) or Integer Overflow Sanitization (IntSan) on components that have it enabled.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to enable both CFI and IntSan for any additional security-sensitive userspace components as explained in <a href="https://source.android.com/devices/tech/debug/cfi">CFI</a> and <a href="https://source.android.com/devices/tech/debug/intsan">IntSan</a>.
      </li>
    </ul>
    <h3 id="9_8_privacy">
      9.8. Privacy
    </h3>
    <h4 id="9_8_1_usage_history">
      9.8.1. Usage History
    </h4>
    <p>
      Android stores the history of the user's choices and manages such history by <a href="https://developer.android.com/reference/android/app/usage/UsageStatsManager.html">UsageStatsManager</a>.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST keep a reasonable retention period of such user history.
      </li>
      <li>[SR] Are STRONGLY RECOMMENDED to keep the 14 days retention period as configured by default in the AOSP implementation.
      </li>
    </ul>
    <p>
      Android stores the system events using the <a href="https://developer.android.com/reference/android/util/StatsLog.html"><code>StatsLog</code></a> identifiers, and manages such history via the <code>StatsManager</code> and the <code>IncidentManager</code> System API.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-2] MUST only include the fields marked with <code>DEST_AUTOMATIC</code> in the incident report created by the System API class <code>IncidentManager</code>.
      </li>
      <li>[C-0-3] MUST not use the system event identifiers to log any other event than what is described in the <a href="https://developer.android.com/reference/android/util/StatsLog.html"><code>StatsLog</code></a> SDK documents. If additional system events are logged, they MAY use a different atom identifier in the range between 100,000 and 200,000.
      </li>
    </ul>
    <h4 id="9_8_2_recording">
      9.8.2. Recording
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST NOT preload or distribute software components out-of-box that send the user's private information (e.g. keystrokes, text displayed on the screen) off the device without the user's consent or clear ongoing notifications.
      </li>
    </ul>
    <p>
      If device implementations include functionality in the system that captures the contents displayed on the screen and/or records the audio stream played on the device, they:
    </p>
    <ul>
      <li>[C-1-1] MUST have an ongoing notification to the user whenever this functionality is enabled and actively capturing/recording.
      </li>
    </ul>
    <p>
      If device implementations include a component enabled out-of-box, capable of recording ambient audio to infer useful information about user’s context, they:
    </p>
    <ul>
      <li>[C-2-1] MUST NOT store in persistent on-device storage or transmit off the device the recorded raw audio or any format that can be converted back into the original audio or a near facsimile, except with explicit user consent.
      </li>
    </ul>
    <h4 id="9_8_3_connectivity">
      9.8.3. Connectivity
    </h4>
    <p>
      If device implementations have a USB port with USB peripheral mode support, they:
    </p>
    <ul>
      <li>[C-1-1] 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.
      </li>
    </ul>
    <h4 id="9_8_4_network_traffic">
      9.8.4. Network Traffic
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST preinstall the same root certificates for the system-trusted Certificate Authority (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.
      </li>
      <li>[C-0-2] MUST ship with an empty user root CA store.
      </li>
      <li>[C-0-3] MUST display a warning to the user indicating the network traffic may be monitored, when a user root CA is added.
      </li>
    </ul>
    <p>
      If device traffic is routed through a VPN, device implementations:
    </p>
    <ul>
      <li>[C-1-1] MUST display a warning to the user indicating either:
        <ul>
          <li>That network traffic may be monitored.
          </li>
          <li>That network traffic is being routed through the specific VPN application providing the VPN.
          </li>
        </ul>
      </li>
    </ul>
    <p>
      If device implementations have a mechanism, enabled out-of-box by default, that routes network data traffic through a proxy server or VPN gateway (for example, preloading a VPN service with <code>android.permission.CONTROL_VPN</code> granted), they:
    </p>
    <ul>
      <li>[C-2-1] 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.
      </li>
    </ul>
    <p>
      If device implementations implement a user affordance to toggle on the "always-on VPN" function of a 3rd-party VPN app, they:
    </p>
    <ul>
      <li>[C-3-1] MUST disable this user affordance for apps that do not support always-on VPN service in the <code>AndroidManifest.xml</code> file via setting the <a href="https://developer.android.com/reference/android/net/VpnService.html#SERVICE_META_DATA_SUPPORTS_ALWAYS_ON"><code>SERVICE_META_DATA_SUPPORTS_ALWAYS_ON</code></a> attribute to <code>false</code>.
      </li>
    </ul>
    <h3 id="9_9_data_storage_encryption">
      9.9. Data Storage Encryption
    </h3>
    <p>
      If Advanced Encryption Standard (AES) crypto performance, measured with the most performant AES technology available on the device (e.g. the ARM Cryptography Extensions), is above 50 MiB/sec, device implementations:
    </p>
    <ul>
      <li>[C-1-1] MUST support data storage encryption of the application private data (<code>/data</code> partition), as well as the application shared storage partition (<code>/sdcard</code> partition) if it is a permanent, non-removable part of the device, except for device implementations that are typically shared (e.g. Television).
      </li>
      <li>[C-1-2] MUST enable the data storage encryption by default at the time the user has completed the out-of-box setup experience, except for device implementations that are typically shared (e.g. Television).
      </li>
    </ul>
    <p>
      If the AES crypto performance is at or below 50 MiB/sec, device implementations MAY use <a href="https://github.com/google/adiantum">Adiantum-XChaCha12-AES</a> instead of the form of AES listed in any of the following: AES-256-XTS in <a href="#9_9_2_File_Based_Encryption">Section 9.9.2</a> [C-1-5]; AES-256 in CBS-CTS mode in <a href="#9_9_2_File_Based_Encryption">Section 9.9.2</a> [C-1-6]; AES in <a href="#9_9_3_Full_Disk_Encryption">Section 9.9.3</a> [C-1-1]; AES in <a href="#9_9_3_Full_Disk_Encryption">Section 9.9.3</a> [C-1-3].
    </p>
    <p>
      If device implementations are already launched on an earlier Android version and cannot meet the requirement through a system software update, they MAY be exempted from the above requirements.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>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).
      </li>
    </ul>
    <h4 id="9_9_1_direct_boot">
      9.9.1. Direct Boot
    </h4>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] The <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_LOCKED_BOOT_COMPLETED"><code>ACTION_LOCKED_BOOT_COMPLETED</code></a> and <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_USER_UNLOCKED"><code>ACTION_USER_UNLOCKED</code></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>
      </li>
    </ul>
    <h4 id="9_9_2_file_based_encryption">
      9.9.2. File Based Encryption
    </h4>
    <p>
      If device implementations support FBE, they:
    </p>
    <ul>
      <li>[C-1-1] 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 <code>ACTION_LOCKED_BOOT_COMPLETED</code> message is broadcasted.
      </li>
      <li>[C-1-2] 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 <code>ACTION_USER_UNLOCKED</code> message is broadcasted.
      </li>
      <li>[C-1-3] MUST NOT offer any method to unlock the CE protected storage without either the user-supplied credentials or a registered escrow key.
      </li>
      <li>[C-1-4] MUST support Verified Boot and ensure that DE keys are cryptographically bound to the device's hardware root of trust.
      </li>
      <li>[C-1-5] MUST support encrypting file contents using AES-256-XTS. AES-256-XTS refers to the Advanced Encryption Standard with a 256-bit key length, operated in XTS mode. The full length of the XTS key is 512 bits.
      </li>
      <li>
        <p>
          [C-1-6] MUST support encrypting file names using AES-256 in CBC-CTS mode.
        </p>
      </li>
      <li>
        <p>
          The keys protecting CE and DE storage areas:
        </p>
      </li>
      <li>
        <p>
          [C-1-7] MUST be cryptographically bound to a hardware-backed Keystore.
        </p>
      </li>
      <li>[C-1-8] CE keys MUST be bound to a user's lock screen credentials.
      </li>
      <li>[C-1-9] CE keys MUST be bound to a default passcode when the user has not specified lock screen credentials.
      </li>
      <li>
        <p>
          [C-1-10] MUST be unique and distinct, in other words no user's CE or DE key matches any other user's CE or DE keys.
        </p>
      </li>
      <li>
        <p>
          [C-1-11] MUST use the mandatorily supported ciphers, key lengths and modes by default.
        </p>
      </li>
      <li>
        <p>
          [C-SR] Are STRONGLY RECOMMENDED to encrypt file system metadata, such as file sizes, ownership, modes, and Extended attributes (xattrs), with a key cryptographically bound to the device's hardware root of trust.
        </p>
      </li>
      <li>
        <p>
          SHOULD make preinstalled essential apps (e.g. Alarm, Phone, Messenger) Direct Boot aware.
        </p>
      </li>
      <li>MAY support alternative ciphers, key lengths and modes for file content and file name encryption.
      </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>
      If device implementations support <a href="http://source.android.com/devices/tech/security/encryption/index.html">full disk encryption</a> (FDE), they:
    </p>
    <ul>
      <li>[C-1-1] MUST use AES in a mode designed for storage (for example, XTS or CBC-ESSIV), and with a cipher key length of 128 bits or greater.
      </li>
      <li>[C-1-2] MUST use a default passcode to wrap the encryption key and MUST NOT write the encryption key to storage at any time without being encrypted.
      </li>
      <li>[C-1-3] MUST AES encrypt the encryption key by default unless the user explicitly opts out, except when it is in active use, with the lock screen credentials stretched using a slow stretching algorithm (e.g. PBKDF2 or scrypt).
      </li>
      <li>[C-1-4] The above default password stretching algorithm MUST be cryptographically bound to that keystore when the user has not specified a lock screen credentials or has disabled use of the passcode for encryption and the device provides a hardware-backed keystore.
      </li>
      <li>[C-1-5] MUST NOT send encryption key off the device (even when wrapped with the user passcode and/or hardware bound key).
      </li>
    </ul>
    <p>
      The upstream Android Open Source project provides a preferred implementation of this feature, based on the Linux kernel feature dm-crypt.
    </p>
    <h3 id="9_10_device_integrity">
      9.10. Device Integrity
    </h3>
    <p>
      The following requirements ensures there is transparency to the status of the device integrity. Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] MUST correctly report through the System API method <code>PersistentDataBlockManager.getFlashLockState()</code> 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>
      </li>
      <li>
        <p>
          [C-0-2] MUST support Verified Boot for device integrity.
        </p>
      </li>
    </ul>
    <p>
      If device implementations are already launched without supporting Verified Boot on an earlier version of Android and can not add support for this feature with a system software update, they MAY be exempted from the requirement.
    </p>
    <p>
      Verified Boot is a feature that guarantees the integrity of the device software. If device implementations support the feature, they:
    </p>
    <ul>
      <li>[C-1-1] MUST declare the platform feature flag <code>android.software.verified_boot</code>.
      </li>
      <li>[C-1-2] MUST perform verification on every boot sequence.
      </li>
      <li>[C-1-3] MUST 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>[C-1-4] MUST 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>[C-1-5] MUST use verification algorithms as strong as current recommendations from NIST for hashing algorithms (SHA-256) and public key sizes (RSA-2048).
      </li>
      <li>[C-1-6] 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>[C-1-7] MUST NOT allow verified partitions on the device to be modified unless the user has explicitly unlocked the bootloader.
      </li>
      <li>[C-SR] If there are multiple discrete chips in the device (e.g. radio, specialized image processor), the boot process of each of those chips is STRONGLY RECOMMENDED to verify every stage upon booting.
      </li>
      <li>[C-1-8] MUST use tamper-evident storage: for storing whether the bootloader is unlocked. Tamper-evident storage means that the boot loader can detect if the storage has been tampered with from inside Android.
      </li>
      <li>[C-1-9] MUST prompt the user, while using the device, and require physical confirmation before allowing a transition from boot loader locked mode to boot loader unlocked mode.
      </li>
      <li>[C-1-10] MUST implement rollback protection for partitions used by Android (e.g. boot, system partitions) and use tamper-evident storage for storing the metadata used for determining the minimum allowable OS version.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to verify all privileged app APK files with a chain of trust rooted in <code>/system</code>, which is protected by Verified Boot.
      </li>
      <li>[C-SR] Are STRONGLY RECOMMENDED to verify any executable artifacts loaded by a privileged app from outside its APK file (such as dynamically loaded code or compiled code) before executing them or STRONGLY RECOMMENDED not to execute them at all.
      </li>
      <li>SHOULD implement rollback protection for any component with persistent firmware (e.g. modem, camera) and SHOULD use tamper-evident storage for storing the metadata used for determining the minimum allowable version.
      </li>
    </ul>
    <p>
      If device implementations are already launched without supporting C-1-8 through C-1-10 on an earlier version of Android and can not add support for these requirements with a system software update, they MAY be exempted from the requirements.
    </p>
    <p>
      The upstream Android Open Source Project provides a preferred implementation of this feature in the <a href="http://android.googlesource.com/platform/external/avb/"><code>external/avb/</code></a> repository, which can be integrated into the boot loader used for loading Android.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-R] Are RECOMMENDED to support the <a href="https://developer.android.com/preview/features/security.html#user-confirmation">Android Protected Confirmation API</a>.
      </li>
    </ul>
    <p>
      If device implementations support the Android Protected Confirmation API they:
    </p>
    <ul>
      <li>[C-3-1] MUST report <code>true</code> for the <a href="https://developer.android.com/reference/android/security/ConfirmationPrompt.html#isSupported%28android.content.Context%29"><code>ConfirmationPrompt.isSupported()</code></a> API.
      </li>
      <li>[C-3-2] MUST ensure that secure hardware takes full control of display in such a way that Android OS cannot block it without detection by the secure hardware.
      </li>
      <li>[C-3-3] MUST ensure that secure hardware takes full control of the touch screen.
      </li>
    </ul>
    <h3 id="9_11_keys_and_credentials">
      9.11. Keys and Credentials
    </h3>
    <p>
      The <a href="https://developer.android.com/training/articles/keystore.html">Android Keystore System</a> allows app developers to store cryptographic keys in a container and use them in cryptographic operations through the <a href="https://developer.android.com/reference/android/security/KeyChain.html">KeyChain API</a> or the <a href="https://developer.android.com/reference/java/security/KeyStore.html">Keystore API</a>. Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST allow at least 8,192 keys to be imported or generated.
      </li>
      <li>[C-0-2] 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>SHOULD not limit the number of keys that can be generated
      </li>
    </ul>
    <p>
      When the device implementation supports a secure lock screen, it:
    </p>
    <ul>
      <li>[C-1-1] MUST back up the keystore implementation with an isolated execution environment.
      </li>
      <li>[C-1-2] MUST have implementations of RSA, AES, ECDSA and HMAC cryptographic algorithms and MD5, SHA1, and SHA-2 family hash functions to properly support the Android Keystore system's supported algorithms in an area that is securely isolated from the code running on the kernel and above. Secure isolation MUST block all potential mechanisms by which kernel or userspace code might access the internal state of the isolated environment, including DMA. The upstream Android Open Source Project (AOSP) meets this requirement by using the <a href="https://source.android.com/security/trusty/">Trusty</a> implementation, but another ARM TrustZone-based solution or a third-party reviewed secure implementation of a proper hypervisor-based isolation are alternative options.
      </li>
      <li>[C-1-3] MUST perform the lock screen authentication in the isolated execution environment and only when successful, allow the authentication-bound keys to be used. Lock screen credentials MUST be stored in a way that allows only the isolated execution environment to perform lock screen authentication. 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> and Trusty, which can be used to satisfy this requirement.
      </li>
      <li>[C-1-4] MUST support key attestation where the attestation signing key is protected by secure hardware and signing is performed in secure hardware. The attestation signing keys MUST be shared across large enough number of devices to prevent the keys from being used as device identifiers. One way of meeting this requirement is to share the same attestation key unless at least 100,000 units of a given SKU are produced. If more than 100,000 units of an SKU are produced, a different key MAY be used for each 100,000 units.
      </li>
      <li>[C-1-5] MUST allow the user to choose the Sleep timeout for transition from the unlocked to the locked state, with a minimum allowable timeout up to 15 seconds.
      </li>
    </ul>
    <p>
      Note that if a device implementation is already launched on an earlier Android version, such a device is exempted from the requirement to have a keystore backed by an isolated execution environment and support the key attestation, unless it declares the <code>android.hardware.fingerprint</code> feature which requires a keystore backed by an isolated execution environment.
    </p>
    <h4 id="9_11_1_secure_lock_screen">
      9.11.1. Secure Lock Screen
    </h4>
    <p>
      The AOSP implementation follows a tiered authentication model where a knowledge-factory based primary authentication can be backed by either a secondary strong biometric, or by weaker tertiary modalities.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-SR] Are STRONGLY RECOMMENDED to set only one of the following as the primary authentication method:
        <ul>
          <li>A numerical PIN
          </li>
          <li>An alphanumerical password
          </li>
          <li>A swipe pattern on a grid of exactly 3x3 dots
          </li>
        </ul>
      </li>
    </ul>
    <p>
      Note that the above authentication methods are referred as the recommended primary authentication methods in this document.
    </p>
    <p>
      If device implementations add or modify the recommended primary authentication methods and use a new authentication method as a secure way to lock the screen, the new authentication method:
    </p>
    <ul>
      <li>[C-2-1] MUST be the user authentication method as described in <a href="https://developer.android.com/training/articles/keystore.html#UserAuthentication">Requiring User Authentication For Key Use</a>.
      </li>
      <li>[C-2-2] MUST unlock all keys for a third-party developer app to use when the user unlocks the secure lock screen. For example, all keys MUST be available for a third-party developer app through relevant APIs, such as <a href="https://developer.android.com/reference/android/app/KeyguardManager.html#createConfirmDeviceCredentialIntent%28java.lang.CharSequence,%20java.lang.CharSequence%29"><code>createConfirmDeviceCredentialIntent</code></a> and <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>setUserAuthenticationRequired</code></a>.
      </li>
    </ul>
    <p>
      If device implementations add or modify the authentication methods to unlock the lock screen if based on a known secret and use a new authentication method to be treated as a secure way to lock the screen:
    </p>
    <ul>
      <li>[C-3-1] The entropy of the shortest allowed length of inputs MUST be greater than 10 bits.
      </li>
      <li>[C-3-2] The maximum entropy of all possible inputs MUST be greater than 18 bits.
      </li>
      <li>[C-3-3] The new authentication method MUST NOT replace any of the recommended primary authentication methods (i.e. PIN, pattern, password) implemented and provided in AOSP.
      </li>
      <li>[C-3-4] The new authentication method 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>
    <p>
      If device implementations add or modify the recommended primary authentication methods to unlock the lock screen and use a new authentication method that is based on biometrics to be treated as a secure way to lock the screen, the new method:
    </p>
    <ul>
      <li>[C-4-1] MUST meet all requirements described in <a href="#7_3_10_2_other_biometric_sensors">section 7.3.10.2</a>.
      </li>
      <li>[C-4-2] MUST have a fall-back mechanism to use one of the recommended primary authentication methods which is based on a known secret.
      </li>
      <li>[C-4-3] MUST be disabled and only allow the recommended 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()</code></a> , with any of the associated biometric flags (i.e. <code>KEYGUARD_DISABLE_BIOMETRICS</code>, <code>KEYGUARD_DISABLE_FINGERPRINT</code>, <code>KEYGUARD_DISABLE_FACE</code>, or <code>KEYGUARD_DISABLE_IRIS</code>).
      </li>
      <li>[C-4-4] MUST challenge the user for the recommended primary authentication (e.g. PIN, pattern, password) at least once every 72 hours or less.
      </li>
      <li>[C-4-5] MUST have a false acceptance rate that is equal or stronger than what is required for a fingerprint sensor as described in section <a href="#7_3_10_biometric_sensors">section 7.3.10</a>, or otherwise MUST be disabled and only allow the recommended 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>
      <li>[C-SR] Are STRONGLY RECOMMENDED to have spoof and imposter acceptance rates that are equal to or stronger than what is required for a fingerprint sensor as described in <a href="#7_3_10_biometric_sensors">section 7.3.10</a>.
      </li>
      <li>[C-4-6] MUST have a secure processing pipeline such that an operating system or kernel compromise cannot allow data to be directly injected to falsely authenticate as the user.
      </li>
      <li>[C-4-7] MUST be paired with an explicit confirm action (eg: a button press) to allow access to keystore keys if the application sets <code>true</code> for <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Built.setUserAuthenticationRequired()</code></a> and the biometric is passive (e.g. face or iris where no explicit signal of intent exists).
      </li>
      <li>[C-SR] The confirm action for passive biometrics is STRONGLY RECOMMENDED to be secured such that an operating system or kernel compromise cannot spoof it. For example, this means that the confirm action based on a physical button is routed through an input-only general-purpose input/output (GPIO) pin of a secure element (SE) that cannot be driven by any other means than a physical button press.
      </li>
    </ul>
    <p>
      If the biometric authentication methods do not meet the spoof and imposter acceptance rates as described in <a href="#7_3_10_biometric_sensors">section 7.3.10</a>:
    </p>
    <ul>
      <li>[C-5-1] The methods MUST be disabled if 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>
      <li>[C-5-2] The user MUST be challenged for the recommended primary authentication (eg: PIN, pattern, password) after any 4-hour idle timeout period. The idle timeout period is reset after any successful confirmation of the device credentials.
      </li>
      <li>[C-5-3] The methods MUST NOT be treated as a secure lock screen, and MUST meet the requirements that start with C-8 in this section below.
      </li>
    </ul>
    <p>
      If device implementations add or modify the authentication methods to unlock the lock screen and a new authentication method is based on a physical token or the location:
    </p>
    <ul>
      <li>[C-6-1] They MUST have a fall-back mechanism to use one of the recommended primary authentication methods which is based on a known secret and meet the requirements to be treated as a secure lock screen.
      </li>
      <li>[C-6-2] The new method MUST be disabled and only allow one of the recommended primary authentication methods 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>
      <li>[C-6-3] The user MUST be challenged for one of the recommended primary authentication methods (e.g.PIN, pattern, password) at least once every 72 hours or less.
      </li>
      <li>[C-6-4] The new method MUST NOT be treated as a secure lock screen and MUST follow the constraints listed in C-8 below.
      </li>
    </ul>
    <p>
      If device implementations have a secure lock screen and include one or more trust agent, which implements the <code>TrustAgentService</code> System API, they:
    </p>
    <ul>
      <li>[C-7-1] MUST have clear indication in the settings menu and on the lock screen when device lock is deferred or can be unlocked by trust agent(s). For example, AOSP meets this requirement by showing a text description for the "Automatically lock setting" and "Power button instantly locks" in the settings menu and a distinguishable icon on the lock screen.
      </li>
      <li>[C-7-2] MUST respect and fully implement all trust agent APIs in the <code>DevicePolicyManager</code> class, such as the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#KEYGUARD&amp;lowbarDISABLE&amp;lowbarTRUST&amp;lowbarAGENTS"><code>KEYGUARD_DISABLE_TRUST_AGENTS</code></a> constant.
      </li>
      <li>[C-7-3] MUST NOT fully implement the <code>TrustAgentService.addEscrowToken()</code> function on a device that is used as a primary personal device (e.g. handheld) but MAY fully implement the function on device implementations that are typically shared (e.g. Android Television or Automotive device).
      </li>
      <li>[C-7-4] MUST encrypt all stored tokens added by <code>TrustAgentService.addEscrowToken()</code>.
      </li>
      <li>[C-7-5] MUST NOT store the encryption key on the same device where the key is used. For example, it is allowed for a key stored on a phone to unlock a user account on a TV.
      </li>
      <li>[C-7-6] MUST inform the user about the security implications before enabling the escrow token to decrypt the data storage.
      </li>
      <li>[C-7-7] MUST have a fall-back mechanism to use one of the recommended primary authentication methods.
      </li>
      <li>[C-7-8] The user MUST be challenged for one of the recommended primary authentication (eg: PIN, pattern, password) methods at least once every 72 hours or less.
      </li>
      <li>[C-7-9] The user MUST be challenged for one of the recommended primary authentication (eg: PIN, pattern, password) methods after any 4-hour idle timeout period. The idle timeout period is reset after any successful confirmation of the device credentials.
      </li>
      <li>[C-7-10] MUST NOT be treated as a secure lock screen and MUST follow the constraints listed in C-8 below.
      </li>
    </ul>
    <p>
      If device implementations add or modify the authentication methods to unlock the lock screen that is not a secure lock screen as described above, and use a new authentication method to unlock the keyguard:
    </p>
    <ul>
      <li>[C-8-1] The new method 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>[C-8-2] They 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>[C-8-3] They MUST NOT authenticate access to keystores when the application sets <code>true</code> for <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Builder.setUserAuthenticationRequired()</code></a>).
      </li>
    </ul>
    <h4 id="9_11_2_strongbox">
      9.11.2. StrongBox
    </h4>
    <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 dedicated secure processor as well as the isolated execution environment described above.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-SR] Are STRONGLY RECOMMENDED to support StrongBox.
      </li>
    </ul>
    <p>
      If device implementations support StrongBox, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] MUST declare <a href="https://developer.android.com/reference/kotlin/android/content/pm/PackageManager#FEATURE_STRONGBOX_KEYSTORE%3Akotlin.String">FEATURE_STRONGBOX_KEYSTORE</a>.
        </p>
      </li>
      <li>
        <p>
          [C-1-2] MUST provide dedicated secure hardware that is used to back keystore and secure user authentication.
        </p>
      </li>
      <li>
        <p>
          [C-1-3] MUST have a discrete CPU that shares no cache, DRAM, coprocessors or other core resources with the application processor (AP).
        </p>
      </li>
      <li>
        <p>
          [C-1-4] MUST ensure that any peripherals shared with the AP cannot alter StrongBox processing in any way, or obtain any information from the StrongBox. The AP MAY disable or block access to StrongBox.
        </p>
      </li>
      <li>
        <p>
          [C-1-5] MUST have an internal clock with reasonable accuracy (+-10%) that is immune to manipulation by the AP.
        </p>
      </li>
      <li>
        <p>
          [C-1-6] MUST have a true random number generator that produces uniformly-distributed and unpredictable output.
        </p>
      </li>
      <li>
        <p>
          [C-1-7] MUST have tamper resistance, including resistance against physical penetration, and glitching.
        </p>
      </li>
      <li>
        <p>
          [C-1-8] MUST have side-channel resistance, including resistance against leaking information via power, timing, electromagnetic radiation, and thermal radiation side channels.
        </p>
      </li>
      <li>
        <p>
          [C-1-9] MUST have secure storage which ensures confidentiality, integrity, authenticity, consistency, and freshness of the contents. The storage MUST NOT be able to be read or altered, except as permitted by the StrongBox APIs.
        </p>
      </li>
      <li>
        <p>
          To validate compliance with [C-1-3] through [C-1-9], device implementations:
        </p>
        <ul>
          <li>[C-1-10] MUST include the hardware that is certified against the Secure IC Protection Profile <a href="https://www.commoncriteriaportal.org/files/ppfiles/pp0084b_pdf.pdf">BSI-CC-PP-0084-2014</a> or evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the <a href="https://www.commoncriteriaportal.org/files/supdocs/CCDB-2013-05-002.pdf">Common Criteria Application of Attack Potential to Smartcards</a>.
          </li>
          <li>[C-1-11] MUST include the firmware that is evaluated by a nationally accredited testing laboratory incorporating High attack potential vulnerability assessment according to the <a href="https://www.commoncriteriaportal.org/files/supdocs/CCDB-2013-05-002.pdf">Common Criteria Application of Attack Potential to Smartcards</a>.
          </li>
          <li>[C-SR] Are STRONGLY RECOMMENDED to include the hardware that is evaluated using a Security Target, Evaluation Assurance Level (EAL) 5, augmented by AVA_VAN.5. EAL 5 certification will likely become a requirement in a future release.
          </li>
        </ul>
      </li>
      <li>
        <p>
          [C-SR] are STRONGLY RECOMMENDED to provide insider attack resistance (IAR), which means that an insider with access to firmware signing keys cannot produce firmware that causes the StrongBox to leak secrets, to bypass functional security requirements or otherwise enable access to sensitive user data. The recommended way to implement IAR is to allow firmware updates only when the primary user password is provided via the IAuthSecret HAL. IAR will likely become a requirement in a future release.
        </p>
      </li>
    </ul>
    <h3 id="9_12_data_deletion">
      9.12. Data Deletion
    </h3>
    <p>
      All device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST provide users a mechanism to perform a "Factory Data Reset".
      </li>
      <li>[C-0-2] MUST delete all user-generated data. That is, all data except for the following:
        <ul>
          <li>The system image
          </li>
          <li>Any operating system files required by the system image
          </li>
        </ul>
      </li>
      <li>[C-0-3] MUST delete the data in such a way that will satisfy relevant industry standards such as NIST SP800-88.
      </li>
      <li>[C-0-4] MUST trigger the above "Factory Data Reset" process when the <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#wipeData%28int%29"><code>DevicePolicyManager.wipeData()</code></a> API is called by the primary user's Device Policy Controller app.
      </li>
      <li>MAY provide a fast data wipe option that conducts only a logical data erase.
      </li>
    </ul>
    <h3 id="9_13_safe_boot_mode">
      9.13. Safe Boot Mode
    </h3>
    <p>
      Android provides Safe Boot Mode, which allows 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>
      Device implementations are:
    </p>
    <ul>
      <li>[SR] STRONGLY RECOMMENDED to implement Safe Boot Mode.
      </li>
    </ul>
    <p>
      If device implementations implement Safe Boot Mode, they:
    </p>
    <ul>
      <li>
        <p>
          [C-1-1] 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 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>
          [C-1-2] MUST provide the user the capability to uninstall any third-party apps within Safe Mode.
        </p>
      </li>
      <li>
        <p>
          SHOULD provide the user an option to enter Safe Boot Mode from the boot menu using a workflow that is different from that of a normal boot.
        </p>
      </li>
    </ul>
    <h3 id="9_14_automotive_vehicle_system_isolation">
      9.14. Automotive Vehicle System Isolation
    </h3>
    <p>
      Android Automotive devices are expected to exchange data with critical vehicle subsystems 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.
    </p>
    <p>
      The data exchange can be secured by implementing security features below the Android framework layers to prevent malicious or unintentional interaction with these subsystems.
    </p>
    <h3 id="9_15_subscription_plans">
      9.15. Subscription Plans
    </h3>
    <p>
      "Subscription plans" refer to the billing relationship plan details provided by a mobile carrier through <a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionPlans%28int,%20java.util.List%3Candroid.telephony.SubscriptionPlan%3E%29"><code>SubscriptionManager.setSubscriptionPlans()</code></a>.
    </p>
    <p>
      All device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST return subscription plans only to the mobile carrier app that has originally provided them.
      </li>
      <li>[C-0-2] MUST NOT remotely back up or upload subscription plans.
      </li>
      <li>[C-0-3] MUST only allow overrides, such as <a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionOverrideCongested%28int,%20boolean,%20long%29"><code>SubscriptionManager.setSubscriptionOverrideCongested()</code></a>, from the mobile carrier app currently providing valid subscription plans.
      </li>
    </ul>
    <h2 id="10_software_compatibility_testing">
      10. Software Compatibility Testing
    </h2>
    <p>
      Device implementations MUST pass all tests described in this section. However, note that no software test package is fully comprehensive. For this reason, device implementers are <strong>STRONGLY RECOMMENDED</strong> to make the minimum number of changes as possible to the reference and preferred implementation of Android available from the Android Open Source Project. This will minimize the risk of introducing bugs that create incompatibilities requiring rework and potential device updates.
    </p>
    <h3 id="10_1_compatibility_test_suite">
      10.1. Compatibility Test Suite
    </h3>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-1] 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.
        </p>
      </li>
      <li>
        <p>
          [C-0-2] MUST ensure compatibility in cases of ambiguity in CTS and for any reimplementations of parts of the reference source code.
        </p>
      </li>
    </ul>
    <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 9.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>
        <p>
          [C-0-3] MUST pass the latest CTS version available at the time the device software is completed.
        </p>
      </li>
      <li>
        <p>
          SHOULD use the reference implementation in the Android Open Source tree as much as possible.
        </p>
      </li>
    </ul>
    <h3 id="10_2_cts_verifier">
      10.2. CTS Verifier
    </h3>
    <p>
      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>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-1] MUST correctly execute all applicable cases in the CTS verifier.
      </li>
    </ul>
    <p>
      The CTS Verifier has tests for many kinds of hardware, including some hardware that is optional.
    </p>
    <p>
      Device implementations:
    </p>
    <ul>
      <li>[C-0-2] 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.
      </li>
    </ul>
    <p>
      Test cases for features noted as optional by this Compatibility Definition Document MAY be skipped or omitted.
    </p>
    <ul>
      <li>[C-0-2] 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.
      </li>
    </ul>
    <h2 id="11_updatable_software">
      11. Updatable Software
    </h2>
    <ul>
      <li>
        <p>
          [C-0-1] 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. 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>
      </li>
      <li>
        <p>
          [C-0-2] 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>
      </li>
    </ul>
    <p>
      If the device implementations includes support for an unmetered data connection such as 802.11 or Bluetooth PAN (Personal Area Network) profile, then, they:
    </p>
    <ul>
      <li>[C-1-1] MUST support OTA downloads with offline update via reboot.
      </li>
    </ul>
    <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, then:
    </p>
    <ul>
      <li>[C-2-1] The device implementer MUST correct the error via a software update available that can be applied per the mechanism just described.
      </li>
    </ul>
    <p>
      Android includes features that allow the Device Owner app (if present) to control the installation of system updates. If the system update subsystem for devices report android.software.device_admin then, they:
    </p>
    <ul>
      <li>[C-3-1] MUST implement the behavior described in the <a href="http://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html">SystemUpdatePolicy</a> class.
      </li>
    </ul>
    <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/pie-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/pie-dev/1_introduction?pretty=full&amp;no-merges">Introduction</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/2_device_types?pretty=full&amp;no-merges">Device Types</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/3_software?pretty=full&amp;no-merges">Software</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/4_application-packaging?pretty=full&amp;no-merges">Application Packaging</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/5_multimedia?pretty=full&amp;no-merges">Multimedia</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-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/pie-dev/7_hardware-compatibility?pretty=full&amp;no-merges">Hardware Compatibility</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-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/pie-dev/9_security-model?pretty=full&amp;no-merges">Security Model</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-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/pie-dev/11_updatable-software?pretty=full&amp;no-merges">Updatable Software</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/12_document-changelog?pretty=full&amp;no-merges">Document Changelog</a>
      </li>
      <li>
        <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/pie-dev/13_contact-us?pretty=full&amp;no-merges">Contact Us</a>
      </li>
    </ol>
    <h3 id="12_1_changelog_viewing_tips">
      12.1. Changelog Viewing Tips
    </h3>
    <p>
      Changes are marked as follows:
    </p>
    <ul>
      <li>
        <p>
          <strong>CDD</strong><br>
          Substantive changes to the compatibility requirements.
        </p>
      </li>
      <li>
        <p>
          <strong>Docs</strong><br>
          Cosmetic or build related changes.
        </p>
      </li>
    </ul>
    <p>
      For best viewing, append the <code>pretty=full</code> and <code>no-merges</code> URL parameters to your changelog URLs.
    </p>
    <h2 id="13_contact_us">
      13. Contact Us
    </h2>
    <p>
      You can join the <a href="https://groups.google.com/forum/#!forum/android-compatibility">android-compatibility forum</a> and ask for clarifications or bring up any issues that you think the document does not cover.
    </p>
  </body>
</html>
