This document enumerates the requirements that must be met in order for devices to be compatible with Android 13. Show
The use of “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” is per the IETF standard defined in RFC2119. As used in this document, a “device implementer” or “implementer” is a person or organization developing a hardware/software solution running Android 13. A “device implementation” or “implementation" is the hardware/software solution so developed. To be considered compatible with Android 13, device implementations MUST meet the requirements presented in this Compatibility Definition, including any documents incorporated via reference. Where this definition or the software tests described in section 10 is silent, ambiguous, or incomplete, it is the responsibility of the device implementer to ensure compatibility with existing implementations. For this reason, the Android Open Source Project 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. 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. 1.1 Document Structure1.1.1. Requirements by Device TypeSection 2 contains all of the requirements that apply to a specific device type. Each subsection of Section 2 is dedicated to a specific device type. All the other requirements, that universally apply to any Android device implementations, are listed in the sections after Section 2. These requirements are referenced as "Core Requirements" in this document. 1.1.2. Requirement IDRequirement ID is assigned for MUST requirements.
Each ID is defined as below:
1.1.3. Requirement ID in Section 2The Requirement IDs in Section 2 have two parts. The first corresponds to a section ID as described above. The second part identifies the form factor and the form-factor specific requirement. section ID that is followed by the Requirement ID described above.
2. Device TypesThe Android Open Source Project provides a software stack that can be used for a variety of device types and form factors. To support security on devices, the software stack, including any replacement OS or an alternate kernel implementation, is expected to execute in a secure environment as described in section 9 and elsewhere within this CDD. There are a few device types that have a relatively better established application distribution ecosystem. This section describes those device types, and additional requirements and recommendations applicable for each device type. 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. 2.1 Device ConfigurationsFor the major differences in hardware configuration by device type, see the device-specific requirements that follow in this section. 2.2. Handheld RequirementsAn Android Handheld device refers to an Android device implementation that is typically used by holding it in the hand, such as an mp3 player, phone, or tablet. Android device implementations are classified as a Handheld if they meet all the following criteria:
The additional requirements in the rest of this section are specific to Android Handheld device implementations. Note: Requirements that do not apply to Android Tablet devices are marked with an *. 2.2.1. HardwareHandheld device implementations:
If Handheld device implementations support software screen rotation, they:
If Handheld device implementations do not support software screen rotation, they:
If Handheld device implementations claim support for high dynamic range displays through
Handheld device implementations:
If Handheld device implementations declare support via a system property
Handheld device implementations:
Start new requirements
End new requirements
If Handheld device implementations include a 3-axis accelerometer, they:
If Handheld device implementations include a GPS/GNSS receiver and report the capability to applications through the
If Handheld device implementations include a 3-axis gyroscope, they:
Handheld device implementations that can make a voice call and indicate any value other than
Handheld device implementations:
Start new requirements If devices support WiFi Neighbor Awareness Networking (NAN) protocol by declaring
It is STRONGLY RECOMMENDED to follow the measurement setup steps specified in Presence Calibration Requirements. End new requirements If Handheld device implementations include a metered connection, they:
If Handheld device implementations include a logical camera device that lists capabilities using
Handheld device implementations:
If Handheld device implementations declare support of only a 32-bit ABI:
If Handheld device implementations declare support of 32-bit and 64-bit ABIs:
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. If Handheld device implementations include less than or equal to 1GB of memory available to the kernel and userspace, they:
If Handheld device implementations include more than 1GB of memory available to the kernel and userspace, they:
If Handheld device implementations include greater than or equal to 2GB and less than 4GB of memory available to the kernel and userspace, they:
If Handheld device implementations include less than 2GB of memory available to the kernel and userspace, they:
Handheld device implementations:
If handheld device implementations include a USB port supporting peripheral mode, they:
If Handheld device implementations include a USB port supporting host mode, they:
Handheld device implementations:
If Handheld device implementations are capable of meeting all the performance requirements for supporting VR mode and include support for it, they:
If Handheld device implementations include one or more USB-C port(s) in host mode and implement (USB audio class), in addition to requirements in section 7.7.2, they:
HID usage: 0x0CD Kernel key: EGL_EXT_gl_colorspace_bt2020_pq 9Android key: Configuration.isScreenHdr() 4Media playbackInput: Short pressOutput: Play or pauseInput: Long press Output: Launch voice command Sends: EGL_EXT_surface_SMPTE2086_metadata 1 if the device is locked or its screen is off. Sends EGL_EXT_surface_SMPTE2086_metadata 2 otherwiseIncoming callInput: Short pressOutput: Accept callInput: Long press Output: Reject callOngoing callInput: Short press Output: End callInput: Long press Output: Mute or unmute microphoneBHID usage page: 0x0C HID usage: 0x0E9 Kernel key: EGL_EXT_surface_SMPTE2086_metadata 3Android key: EGL_EXT_surface_SMPTE2086_metadata 4Media playback, Ongoing callInput: Short or long pressOutput: Increases the system or headset volumeCHID usage page: 0x0C HID usage: 0x0EA Kernel key: EGL_EXT_surface_SMPTE2086_metadata 5Android key: EGL_EXT_surface_SMPTE2086_metadata 6Media playback, Ongoing callInput: Short or long pressOutput: Decreases the system or headset volumeDHID usage page: 0x0C HID usage: 0x0CF Kernel key: EGL_EXT_surface_SMPTE2086_metadata 7Android key: EGL_EXT_surface_SMPTE2086_metadata 8All. Can be triggered in any instance.Input: Short or long pressOutput: Launch voice command
When the USB audio terminal types 0x0302 is detected, they:
When the USB audio terminal types 0x0402 is detected, they:
When API AudioManager.getDevices() is called while the USB peripheral is connected they:
If Handheld device implementations declare
Start new requirements
End new requirements If Handheld device implementations include at least one haptic actuator, they:
Start new requirements
End new requirements
Start new requirements
End new requirements
A linear resonant actuator (LRA) is a single-mass spring system which has a dominant resonant frequency where the mass translates in the direction of desired motion. If Handheld device implementations include at least one linear resonant actuator, they:
If Handheld device implementations have a haptic actuator which is X-axis linear resonant actuator (LRA), they:
If handheld device implementations follow haptic constants mapping, they:
Start new requirements
End new requirements
2.2.2. MultimediaHandheld device implementations MUST support the following audio encoding and decoding formats and make them available to third-party applications:
Handheld device implementations MUST support the following video encoding formats and make them available to third-party applications:
Handheld device implementations MUST support the following video decoding formats and make them available to third-party applications:
2.2.3. SoftwareHandheld device implementations:
Start new requirements If Handheld device implementations support MediaStyle notifications they:
End new requirements If Handheld device implementations support Assist action, they:
If Handheld device implementations support
If Android Handheld device implementations support a lock screen, they:
If Handheld device implementations support a secure lock screen, they:
If Handheld device implementations include support for
Start new requirements
End new requirements Conversely, If Handheld device implementations do not implement such controls, they:
If handheld device implementations are not running in lock task mode, when content is copied to the clipboard they:
Handheld device implementations:
If Android handheld device implementations declare
If the navigation function is provided as an on-screen, gesture-based action:
If Handheld device implementations provide a navigation function as a gesture from anywhere on the left and right edges of the screen:
If Handheld device implementations support a secure lock screen and have greater than or equal to 2GB of memory available to the kernel and userspace, they:
If Android handheld device implementations declare the support for camera via
2.2.4. Performance and Power
Handheld device implementations:
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:
Handheld device implementations:
If Handheld device implementations include a screen or video output, they:
Start new requirements Handheld device implementations:
End new requirements 2.2.5. Security ModelHandheld device implementations:
Handheld device implementations:
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 When Handheld device implementations support a secure lock screen, they:
If Handheld device implementations include multiple users and do not declare the
If Handheld device implementations include multiple users and declare the
Android, through the System API VoiceInteractionService supports a mechanism for secure always-on hotword detection without mic access indication If Handheld device implementations support the System API
If device implementations include an application that uses the System API
If Handheld device implementations declare
If Handheld device implementations declare
2.2.6. Developer Tools and Options CompatibilityHandheld device implementations (* Not applicable for Tablet):
Handheld device implementations (* Not applicable for Tablet):
2.2.7. Handheld Media Performance ClassSee Section 7.11 for the definition of media performance class. 2.2.7.1. MediaIf Handheld device implementations return
Start new requirements If Handheld device implementations return
End new requirements 2.2.7.2. CameraIf Handheld device implementations return
Start new requirements If Handheld device implementations return
End new requirements 2.2.7.3. HardwareIf Handheld device implementations return
Start new requirements If Handheld device implementations return
End new requirements 2.2.7.4. PerformanceIf Handheld device implementations return
Start new requirements If Handheld device implementations return
End new requirements 2.3. Television RequirementsAn Android Television device refers to an Android device implementation that is an entertainment interface for consuming digital media, movies, games, apps, and/or live TV for users sitting about ten feet away (a “lean back” or “10-foot user interface”). Android device implementations are classified as a Television if they meet all the following criteria:
The additional requirements in the rest of this section are specific to Android Television device implementations. 2.3.1. HardwareTelevision device implementations:
If Television device implementations include a 3-axis gyroscope, they:
Television device implementations:
If Television device implementations include a USB port that supports host mode, they:
If TV device implementations are 32-bit:
If TV device implementations are 64-bit:
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. Television device implementations:
2.3.2. MultimediaTelevision device implementations MUST support the following audio encoding and decoding formats and make them available to third-party applications:
Television device implementations MUST support the following video encoding formats and make them available to third-party applications:
Television device implementations:
Television device implementations MUST support the following video decoding formats and make them available to third-party applications:
Television device implementations MUST support MPEG-2 decoding, as detailed in Section 5.3.1, at standard video frame rates and resolutions up to and including:
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:
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:
If Television device implementations with H.265 hardware decoders support H.265 decoding and the UHD decoding profile, they:
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:
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:
If Television device implementations with VP9 hardware decoders support VP9 decoding and the UHD decoding profile, they:
Television device implementations:
If Television device implementations do not have a built in display, but instead support an external display connected via HDMI, they:
If Television device implementations do not have a built in display, but instead support an external display connected via HDMI, they:
If Television device implementations do not support UHD decoding, but instead support an external display connected via HDMI, they:
2.3.3. SoftwareTelevision device implementations:
If Android Television device implementations support a lock screen,they:
Television device implementations:
If Television device implementations report the feature
Television device implementations:
2.3.4. Performance and Power
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:
If Television device implementations do not have a battery they:
If Television device implementations have a battery they:
Television device implementations:
2.3.5. Security ModelTelevision device implementations:
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 If Television device implementations support a secure lock screen, they:
If Television device implementations include multiple users and do not declare the
If Television device implementations include multiple users and declare the
If Television device implementations declare
If Television device implementations declare
2.3.6. Developer Tools and Options CompatibilityTelevision device implementations:
2.4. Watch RequirementsAn Android Watch device refers to an Android device implementation intended to be worn on the body, perhaps on the wrist. Android device implementations are classified as a Watch if they meet all the following criteria:
The additional requirements in the rest of this section are specific to Android Watch device implementations. 2.4.1. HardwareWatch device implementations:
If Watch device implementations include a GPS/GNSS receiver and report the capability to applications through the
If Watch device implementations include a 3-axis gyroscope, they:
Watch device implementations:
2.4.2. MultimediaNo additional requirements. 2.4.3. SoftwareWatch device implementations:
Watch device implementations:
Watch device implementations that declare the
If Watch device implementations report the feature android.hardware.audio.output, they:
2.4.4. Performance and PowerIf 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:
Watch device implementations:
2.4.5. Security ModelWatch device implementations:
If Watch device implementations include multiple users and do not declare the
If Watch device implementations include multiple users and declare the
2.5. Automotive RequirementsAndroid Automotive implementation refers to a vehicle head unit running Android as an operating system for part or all of the system and/or infotainment functionality. Android device implementations are classified as an Automotive if they declare the feature
The additional requirements in the rest of this section are specific to Android Automotive device implementations. 2.5.1. HardwareAutomotive device implementations:
Start new requirements
End new requirements If Automotive device implementations support OpenGL ES 3.1, they:
Start new requirements If Automotive device implementations include an accelerometer, they:
If device implementations include a 3-axis accelerometer, they:
End new requirements Start new requirements If Automotive device implementations include an accelerometer with less than 3 axes, they:
End new requirements Start new requirements If Automotive device implementations include a gyroscope, they:
End new requirements If Automotive device implementations include a 3-axis gyroscope, they: Start new requirements
If Automotive device implementations include a gyroscope with less than 3-axes, they:
End new requirements If Automotive device implementations include a GPS/GNSS receiver, but do not include cellular network-based data connectivity, they:
Start new requirements If automotive device implementations include a
End new requirements Automotive device implementations:
An exterior view camera is a camera that images scenes outside of the device implementation, like the rearview camera a dashcam . Automotive device implementations:
If Automotive device implementations include an exterior view camera, for such a camera, they:
Start new requirements If automotive device implementations include one or more exterior view cameras, and load Exterior View System (EVS) service, then for such a camera, they:
End new requirements Start new requirements Automotive device implementations:
If automotive device implementations include at least one camera and make it available to third party applications then, they:
End new requirements Automotive device implementations:
If Automotive device implementations provide shared external storage via a portion of the internal non-removable storage, they:
If Automotive device implementations are 32-bit:
If Automotive device implementations are 64-bit:
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. Automotive device implementations:
Automotive device implementations:
Automotive device implementations:
2.5.2. MultimediaAutomotive device implementations MUST support the following audio encoding and decoding formats and make them available to third-party applications:
Automotive device implementations MUST support the following video encoding formats and make them available to third-party applications:
Automotive device implementations MUST support the following video decoding formats and make them available to third-party applications:
Automotive device implementations are STRONGLY RECOMMENDED to support the following video decoding:
2.5.3. SoftwareAutomotive device implementations:
If Automotive device implementations provide a proprietary API using
Automotive device implementations:
If Automotive device implementations include a push-to-talk button, they:
Automotive device implementations:
If Automotive device implementations support User HAL properties, they:
Automotive device implementations:
If Automotive device implementations include a default launcher app, they:
Automotive device implementations:
2.5.4. Performance and PowerAutomotive device implementations:
2.5.5. Security ModelIf Automotive device implementations support multiple users, they:
Start new requirements If Automotive device implementations declare End new requirements Automotive device implementations:
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 Automotive device implementations:
2.5.6. Developer Tools and Options CompatibilityAutomotive device implementations:
2.6. Tablet RequirementsAn Android Tablet device refers to an Android device implementation that typically meets all the following criteria:
Start new requirements
End new requirements Tablet device implementations have similar requirements to handheld device implementations. The exceptions are indicated by an * in that section and noted for reference in this section. 2.6.1. HardwareStart new requirements Screen Size
End new requirements Gyroscope If Tablet device implementations include a 3-axis gyroscope, they:
Minimum Memory and Storage (Section 7.6.1) The screen densities listed for small/normal screens in the handheld requirements are not applicable to tablets. USB peripheral mode (Section 7.7.1) If tablet device implementations include a USB port supporting peripheral mode, they:
Virtual Reality Mode (Section 7.9.1) Virtual Reality High Performance (Section 7.9.2) Virtual reality requirements are not applicable to tablets. 2.6.2. Security ModelKeys and Credentials (Section 9.11) Refer to Section [9.11]. If Tablet device implementations include multiple users and do not declare the
If Tablet device implementations include multiple users and declare the
2.6.2. Software
3. Software3.1. Managed API CompatibilityThe managed Dalvik bytecode execution environment is the primary vehicle for Android applications. The Android application programming interface (API) is the set of Android platform interfaces exposed to applications running in the managed runtime environment. Device implementations:
3.1.1. Android ExtensionsAndroid supports extending the managed API surface of a particular API level by updating the extension version for that API level. The Android device implementations:
3.1.2. Android LibraryDue to Apache HTTP client deprecation, device implementations:
The AOSP implementation meets these requirements. 3.2. Soft API CompatibilityIn addition to the managed APIs from section 3.1, 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. 3.2.1. Permissions
3.2.2. Build ParametersThe Android APIs include a number of constants on the android.os.Build class that are intended to describe the current device.
$(BRAND)/$(PRODUCT)/ For example: acme/myproduct/ The fingerprint MUST NOT include whitespace characters. The value of this field MUST be encodable as 7-bit ASCII. HARDWAREThe 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_-]+$”.HOSTA 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 ("").IDAn 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._-]+$”.MANUFACTURERThe 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.SOC_MANUFACTURERThe trade of name of the manufacturer of the primary system on chip (SOC) used in the product. Devices with the same SOC manufacturer should use the same constant value. Please ask the SOC manufacturer for the correct constant to use. The value of this field MUST be encodable as 7-bit ASCII, MUST match the regular expression “^([0-9A-Za-z ]+)”, MUST NOT start or end with whitespace, and MUST NOT be equal to “unknown”. This field MUST NOT change during the lifetime of the product.SOC_MODELThe model name of the primary system on a chip (SOC) used in the product. Devices with the same SOC model should use the same constant value. Please ask the SOC manufacturer for the correct constant to use. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “^([0-9A-Za-z ._/+-]+)$”, MUST NOT start or end with whitespace, and MUST NOT be equal to “unknown”. This field MUST NOT change during the lifetime of the product.MODELA 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.PRODUCTA 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.ODM_SKUAn optional value chosen by the device implementer that contains SKU (Stock Keeping Unit) used to track specific configurations of the device, for example, any peripherals included with the device when sold. The value of this field MUST be encodable as 7-bit ASCII and match the regular expression “[0-9A-Za-z.,_-])"SERIALMUST return "UNKNOWN".TAGSA comma-separated list of tags chosen by the device implementer that further distinguishes the build. The tags MUST be encodable as 7-bit ASCII and match the regular expression “^[a-zA-Z0-9._-]+” and MUST have one of the values corresponding to the three typical Android platform signing configurations: release-keys, dev-keys, and test-keys.TIMEA value representing the timestamp of when the build occurred.TYPEA 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.USERA 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 ("").SECURITY_PATCHA 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 Android Public Security Bulletin or in the Android Security Advisory, for example "2015-11-01".BASE_OSA 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 ("").BOOTLOADERA 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._-]+$”.getRadioVersion()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._-,]+$”.getSerial()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]+$”.3.2.3. Intent Compatibility3.2.3.1. Common Application IntentsAndroid intents allow application components to request functionality from other Android components. The Android upstream project includes a list of applications which implement several intent patterns to perform common actions. Device implementations:
Please refer to Section 2 for mandatory application intents for each device type. 3.2.3.2. Intent Resolution
Android also includes a mechanism for third-party apps to declare an authoritative default app linking behavior for certain types of web URI intents. When such authoritative declarations are defined in an app's intent filter patterns, device implementations:
3.2.3.3. Intent Namespaces
3.2.3.4. Broadcast IntentsThird-party applications rely on the platform to broadcast certain intents to notify them of changes in the hardware or software environment. Device implementations:
3.2.3.5. Conditional Application IntentsAndroid includes settings that provide users an easy way to select their default applications, for example for Home screen or SMS. Where it makes sense, device implementations MUST provide a similar settings menu and be compatible with the intent filter pattern and API methods described in the SDK documentation as below. If device implementations report
If device implementations report
If device implementations report
If device implementations report
If device implementations report
If device implementations support the DND feature, they:
If device implementations allow users to use third-party input methods on the device, they:
If device implementations support third-party accessibility services, they:
If device implementations include support for Wi-Fi Easy Connect and expose the functionality to third-party apps, they:
If device implementations provide the data saver mode, they: * [C-10-1] MUST provide a user interface in the settings, that handles the If device implementations do not provide the data saver mode, they:
If device implementations declare support for the camera via
If device implementations report
If device implementations declare the
If device implementations include a pre-installed app or wish to allow third-party apps to access the usage statistics, they:
If device implementations intend to disallow any apps, including pre-installed apps, from accessing the usage statistics, they:
If device implementations surface links to the activities specified by AutofillService_passwordsActivity in Settings or links to user passwords through a similar mechanism, they:
Start new requirements If device implementation's Settings application implements a split functionality, using activity embedding, then they:
End new requirements If device implementations support the
If device implementations report the feature
Android includes support for interactive screensavers, 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. Device Implementations:
3.2.4. Activities on secondary/multiple displaysIf device implementations allow launching normal Android Activities on more than one display, they:
If device implementations allow launching normal Android Activities on secondary displays and a secondary display has the android.view.Display.FLAG_PRIVATE flag:
3.3. Native API CompatibilityNative code compatibility is challenging. For this reason, device implementers are:
3.3.1. Application Binary InterfacesManaged Dalvik bytecode can call into native code provided in the application Device implementations:
Note that future releases of Android may introduce support for additional ABIs. 3.3.2. 32-bit ARM Native Code CompatibilityIf device implementations report the support of the
If device implementations report the support of the
3.4. Web Compatibility3.4.1. WebView CompatibilityIf device implementations provide a complete implementation of the
Note that if device implementations are 32-bit or declare the feature flag 3.4.2. Browser CompatibilityIf device implementations include a standalone Browser application for general web browsing, they:
However, If device implementations do not include a standalone Browser application, they:
3.5. API Behavioral CompatibilityDevice implementations:
The behaviors of each of the API types (managed, soft, native, and web) must be consistent with the preferred implementation of the upstream Android Open Source Project. Some specific areas of compatibility are:
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. 3.5.1. Application RestrictionIf device implementations implement a proprietary mechanism to restrict apps (e.g. changing or restricting API behaviors that are described in the SDK) and that mechanism is more restrictive than the Restricted App Standby Bucket, they: Start new requirements
If an app is pre-installed on the device and has never been explicitly used by a user for more than 30 days, [C-1-3] [C-1-5] are exempted. End new requirements If device implementations extend the app restrictions that are implemented in AOSP, they:
3.5.2. Application HibernationIf device implementations include App Hibernation that is included in AOSP or extends the feature that is included in AOSP, then they:
App Hibernation in AOSP meets the above requirements. 3.6. API NamespacesAndroid 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:
That is, they:
Device implementers MAY modify the underlying implementation of the APIs, but such modifications:
However, device implementers MAY add custom APIs outside the standard Android namespace, but the custom APIs:
Device implementers MAY add custom APIs in native languages, outside of the NDK APIs, but the custom APIs:
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 source.android.com and begin the process for contributing changes and code, according to the information on that site. 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. 3.7. Runtime CompatibilityDevice implementations:
Note that memory values specified below are considered minimum values and device implementations MAY allocate more memory per application. Screen LayoutScreen DensityMinimum Application MemoryAndroid Watch120 dpi (ldpi)32MB140 dpi (140dpi)160 dpi (mdpi)180 dpi (180dpi)200 dpi (200dpi)213 dpi (tvdpi)220 dpi (220dpi)36MB240 dpi (hdpi)280 dpi (280dpi)320 dpi (xhdpi)48MB360 dpi (360dpi)400 dpi (400dpi)56MB420 dpi (420dpi)64MB480 dpi (xxhdpi)88MB560 dpi (560dpi)112MB640 dpi (xxxhdpi)154MBsmall/normal120 dpi (ldpi)32MB140 dpi (140dpi)160 dpi (mdpi)180 dpi (180dpi)48MB200 dpi (200dpi)213 dpi (tvdpi)220 dpi (220dpi)240 dpi (hdpi)280 dpi (280dpi)320 dpi (xhdpi)80MB360 dpi (360dpi)400 dpi (400dpi)96MB420 dpi (420dpi)112MB480 dpi (xxhdpi)128MB560 dpi (560dpi)192MB640 dpi (xxxhdpi)256MBlarge120 dpi (ldpi)32MB140 dpi (140dpi)48MB160 dpi (mdpi)180 dpi (180dpi)80MB200 dpi (200dpi)213 dpi (tvdpi)220 dpi (220dpi)240 dpi (hdpi)280 dpi (280dpi)96MB320 dpi (xhdpi)128MB360 dpi (360dpi)160MB400 dpi (400dpi)192MB420 dpi (420dpi)228MB480 dpi (xxhdpi)256MB560 dpi (560dpi)384MB640 dpi (xxxhdpi)512MBxlarge120 dpi (ldpi)48MB140 dpi (140dpi)80MB160 dpi (mdpi)180 dpi (180dpi)96MB200 dpi (200dpi)213 dpi (tvdpi)220 dpi (220dpi)240 dpi (hdpi)280 dpi (280dpi)144MB320 dpi (xhdpi)192MB360 dpi (360dpi)240MB400 dpi (400dpi)288MB420 dpi (420dpi)336MB480 dpi (xxhdpi)384MB560 dpi (560dpi)576MB640 dpi (xxxhdpi)768MB3.8. User Interface Compatibility3.8.1. Launcher (Home Screen)Android includes a launcher application (home screen) and support for third-party applications to replace the device launcher (home screen). If device implementations allow third-party applications to replace the device home screen, they:
If device implementations include a default launcher that supports in-app pinning of shortcuts, they:
Conversely, if device implementations do not support in-app pinning of shortcuts, they:
If device implementations implement a default launcher that provides quick access to the additional shortcuts provided by third-party apps through the ShortcutManager API, they:
If device implementations include a default launcher app that shows badges for the app icons, they:
Start new requirements If device implementations support monochrome icons, these icons:
End new requirements 3.8.2. WidgetsAndroid supports third-party app widgets by defining a component type and corresponding API and lifecycle that allows applications to expose an “AppWidget” to the end user. If device implementations support third-party app widgets, they:
If device implementations support third-party app widgets and in-app pinning of shortcuts, they:
3.8.3. NotificationsAndroid includes 3.8.3.1. Presentation of NotificationsIf device implementations allow third-party apps to notify users of notable events, they:
Android 11 introduces support for conversation notifications, which are notifications that use MessagingStyle and provides a published People Shortcut ID. Device implementations:
If device implementations support
If device implementations support rich notifications, they:
Heads up notifications are notifications that are presented to the user as they come in independently of the surface the user is on. If device implementations support heads-up notifications, then they:
3.8.3.2. Notification Listener ServiceAndroid includes the Device implementations:
If device implementations have a user affordance to snooze notifications, they:
3.8.3.3. DND (Do not Disturb) / Priority ModeIf device implementations support the DND feature (also called Priority Mode), they:
3.8.4. Assist API'sAndroid includes the Assist APIs to allow applications to elect how much information of the current context is shared with the assistant on the device. If device implementations support the Assist action, they:
3.8.5. Alerts and ToastsApplications can use the If device implementations include a screen or video output, they:
3.8.6. ThemesAndroid provides “themes” as a mechanism for applications to apply styles across an entire Activity or application. 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 Holo theme look and feel as defined by the Android SDK. If device implementations include a screen or video output, they:
Start new requirements
End new requirements 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.
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. If device implementations include a system status bar, they:
3.8.7. Live WallpapersAndroid defines a component type and corresponding API and lifecycle that allows applications to expose one or more “Live Wallpapers” to the end user. Live wallpapers are animations, patterns, or similar images with limited input capabilities that display as a wallpaper, behind other applications. 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.
If device implementations implement live wallpapers, they:
3.8.8. Activity SwitchingThe upstream Android source code includes the overview screen, a system-level user interface for task switching and displaying recently accessed activities and tasks using a thumbnail image of the application’s graphical state at the moment the user last left the application. Device implementations including the recents function navigation key as detailed in section 7.2.3 MAY alter the interface. If device implementations including the recents function navigation key as detailed in section 7.2.3 alter the interface, they:
3.8.9. Input ManagementAndroid includes support for Input Management and support for third-party input method editors. If device implementations allow users to use third-party input methods on the device, they:
3.8.10. Lock Screen Media ControlThe Remote Control Client API is deprecated from Android 5.0 in favor of the Media Notification Template that allows media applications to integrate with playback controls that are displayed on the lock screen. 3.8.11. Screen savers (previously Dreams)See section 3.2.3.5 for settings intent to congfigure screen savers. 3.8.12. LocationIf device implementations include a hardware sensor (e.g. GPS) that is capable of providing the location coordinates, they
3.8.13. Unicode and FontAndroid includes support for the emoji characters defined in Unicode 10.0. If device implementations include a screen or video output, they:
If device implementations include an IME, they:
Android includes support to render Myanmar fonts. Myanmar has several non-Unicode compliant fonts, commonly known as “Zawgyi,” for rendering Myanmar languages. If device implementations include support for Burmese, they:
3.8.14. Multi-windowsIf device implementations have the capability to display multiple activities at the same time, they:
If device implementations support multi-window mode(s), and the split screen mode, they:
If device implementations support multi-window mode(s) and picture-in-picture multi-window mode, they:
3.8.15. Display CutoutAndroid supports a Display Cutout as described in the SDK document. The If device implementations include display cutout(s), they:
3.8.16. Device ControlsAndroid includes See Section 2_2_3 for device-specific requirements. Start new requirements 3.8.17. ClipboardDevice implementations:
If device implementations generate a user-visible preview when content is copied to the clipboard for any
The AOSP reference implementation satisfies these clipboard requirements. End new requirements 3.9. Device AdministrationAndroid includes features that allow security-aware applications to perform device administration functions at the system level, such as enforcing password policies or performing remote wipe, through the Android Device Administration API. If device implementations implement the full range of device administration policies defined in the Android SDK documentation, they:
3.9.1 Device Provisioning3.9.1.1 Device owner provisioningIf device implementations declare
If device implementations declare
3.9.1.2 Managed profile provisioningIf device implementations declare
3.9.2 Managed Profile SupportIf device implementations declare
If device implementations declare
3.9.3 Managed User SupportIf device implementations declare
If device implementations declare
Start new requirements 3.9.4 Device Policy Management Role RequirementsIf device implementations report
If a package name is not defined for
If a package name is defined for
If a package name is defined for
End new requirements 3.10. AccessibilityAndroid 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. If device implementations support third-party accessibility services, they:
If device implementations include preinstalled accessibility services, they:
3.11. Text-to-SpeechAndroid includes APIs that allow applications to make use of text-to-speech (TTS) services and allows service providers to provide implementations of TTS services. If device implementations reporting the feature android.hardware.audio.output, they:
If device implementations support installation of third-party TTS engines, they:
3.12. TV Input FrameworkThe Android Television Input Framework (TIF) simplifies the delivery of live content to Android Television devices. TIF provides a standard API to create input modules that control Android Television devices. If device implementations support TIF, they:
3.13. Quick SettingsAndroid provides a Quick Settings UI component that allows quick access to frequently used or urgently needed actions. If device implementations include a Quick Settings UI component and support third-party Quick Settings, they:
3.14. Media UIIf device implementations include non-voice-activated applications (the Apps) that interact with third-party applications through
3.15. Instant AppsIf device implementations support Instant Apps, they MUST satisfy the following requirements:
3.16. Companion Device PairingAndroid includes support for companion device pairing to more effectively manage association with companion devices and provides the If device implementations support the companion device pairing feature, they:
3.17. Heavyweight AppsIf device implementations declare the feature
If device implementations don't declare the feature
3.18. ContactsAndroid includes RawContacts are "associated with" or "stored in" an Account when the Default local account: an account for raw contacts that are only stored on the device and not associated with an Account in the AccountManager, which are created with null values for the Custom local account: an account for raw contacts that are only stored on the device and not associated with an Account in the AccountManager, which are created with at least one non-null value for the Device implementations:
If device implementations use a custom local account:
Start new requirements Default account for new contacts: Contacts Provider provides APIs to manage the setting of the default account when creating a new contact. If device implementations preload a contacts app, then the pre-loaded contacts app:
End new requirements 4. Application Packaging CompatibilityDevices implementations:
5. Multimedia CompatibilityDevice implementations:
Device implementations:
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. 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. 5.1. Media Codecs5.1.1. Audio EncodingSee more details in 5.1.3. Audio Codecs Details. If device implementations declare
All audio encoders MUST support:
5.1.2. Audio DecodingSee more details in 5.1.3. Audio Codecs Details. If device implementations declare support for the
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
When decoding USAC audio, MPEG-D (ISO/IEC 23003-4):
MPEG-4 AAC, HE AAC, and HE AACv2 profile decoders:
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:
All audio decoders MUST support outputting:
Start new requirements 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
If device implementations support audio decoders other than the default AAC audio decoder and are capable of outputting multi-channel audio (i.e. more than 2 channels) when fed compressed multi-channel content, then:
End new requirements 5.1.3. Audio Codecs DetailsFormat/CodecDetailsFile Types/Container Formats to be supportedMPEG-4 AAC Profile(AAC LC)Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.
Profile (enhanced AAC+)Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz.
Encoding: Support for mono and stereo content with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz.
5.1.4. Image EncodingSee more details in 5.1.6. Image Codecs Details. Device implementations MUST support encoding the following image encoding:
If device implementations support HEIC encoding via
5.1.5. Image DecodingSee more details in 5.1.6. Image Codecs Details. Device implementations MUST support decoding the following image encoding:
If device implementations support HEVC video decoding, they: * [C-1-1] MUST support HEIF (HEIC) image decoding. Image decoders that support a high bit-depth format (9+ bits per channel):
5.1.6. Image Codecs DetailsFormat/CodecDetailsSupported File Types/Container FormatsJPEGBase+progressiveJPEG (.jpg)GIFGIF (.gif)PNGPNG (.png)BMPBMP (.bmp)WebPWebP (.webp)RawARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf), PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)HEIFImage, Image collection, Image sequenceHEIF (.heif), HEIC (.heic)Image encoder and decoders exposed through the MediaCodec API
5.1.7. Video Codecs
If device implementations include a video decoder or encoder:
If device implementations advertise HDR profile support through
If device implementations advertise intra refresh support through
Unless the application specifies otherwise using the
5.1.8. Video Codecs ListFormat/CodecDetailsFile Types/Container Formats to be supportedH.263
5.1.9. Media Codec SecurityDevice implementations MUST ensure compliance with media codec security features as described below. Android includes support for OMX, a cross-platform multimedia acceleration API, as well as Codec 2.0, a low-overhead multimedia acceleration API. If device implementations support multimedia, they:
If device implementations do not support the Codec 2.0 API, they:
If device implementations support Codec 2.0 API, they:
5.1.10. Media Codec CharacterizationIf device implementations support media codecs, they:
In particular:
If device implementations support video codecs:
5.2. Video EncodingIf device implementations support any video encoder and make it available to third-party apps, they:
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
If device implementations support any of the H.264, VP8, VP9 or HEVC video encoders and make it available to third-party applications, they:
If device implementations support the MPEG-4 SP video encoder and make it available to third-party apps, they:
If device implementations provide hardware accelerated video or image encoders, and support one or more attached or pluggable hardware camera(s) exposed through the
If device implementations provide HDR encoding, they:
5.2.1. H.263If device implementations support H.263 encoders and make it available to third-party apps, they:
5.2.2. H.264If device implementations support H.264 codec, they:
If device implementations report support of H.264 encoding for 720p or 1080p resolution videos through the media APIs, they:
5.2.3. VP8If device implementations support VP8 codec, they:
If device implementations report support of VP8 encoding for 720p or 1080p resolution videos through the media APIs, they:
5.2.4. VP9If device implementations support VP9 codec, they:
If device implementations claim to support Profile 2 or Profile 3 through the Media APIs:
5.2.5. H.265If device implementations support H.265 codec, they:
5.3. Video DecodingIf device implementations support VP8, VP9, H.264, or H.265 codecs, they:
5.3.1. MPEG-2If device implementations support MPEG-2 decoders, they:
5.3.2. H.263If device implementations support H.263 decoders, they:
5.3.3. MPEG-4If device implementations with MPEG-4 decoders, they:
5.3.4. H.264If device implementations support H.264 decoders, they:
If the height that is reported by the
5.3.5. H.265 (HEVC)If device implementations support H.265 codec, they:
If the height that is reported by the
If device implementations claim to support an HDR Profile through the Media APIs:
5.3.6. VP8If device implementations support VP8 codec, they:
If the height as reported by the
5.3.7. VP9If device implementations support VP9 codec, they:
If device implementations support VP9 codec and a hardware decoder:
If the height that is reported by the
If device implementations claim to support
If device implementations claim to support an HDR Profile (
5.3.8. Dolby VisionIf device implementations declare support for the Dolby Vision decoder through
5.3.9. AV1If device implementations support AV1 codec, they:
5.4. Audio RecordingWhile 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 STRONGLY RECOMMENDED 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. 5.4.1. Raw Audio Capture and Microphone InformationIf device implementations declare
If device implementations allow AM radio and DVD quality capture of raw audio content, they:
5.4.2. Capture for Voice RecognitionIf device implementations declare
Start new requirements
End new requirements
If device implementations declare
5.4.3. Capture for Rerouting of PlaybackThe If device implementations declare both
5.4.4. Acoustic Echo CancelerIf device implementations declare
If device implementations provides an Acoustic Echo Canceler which is inserted in the capture audio path when
5.4.5. Concurrent CaptureIf device implementations declare
5.4.6. Microphone Gain Levels [Moved to 5.4.2]If device implementations declare
5.5. Audio PlaybackAndroid includes the support to allow apps to playback audio through the audio output peripheral as defined in section 7.8.2. 5.5.1. Raw Audio PlaybackIf device implementations declare
5.5.2. Audio EffectsAndroid provides an API for audio effects for device implementations. If device implementations declare the feature
5.5.3. Audio Output VolumeAutomotive device implementations:
5.5.4. Audio OffloadIf device implementations support audio offload playback, they:
5.6. Audio LatencyAudio 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. For the purposes of this section, use the following definitions:
Start new requirements
End new requirements
If device implementations declare
Start new requirements
End new requirements If device implementations declare
If device implementations meet the above requirements, after any initial calibration, when using the AAudio native audio API, for continuous output latency and cold output latency over at least one supported audio output device, they are:
If device implementations do not meet the requirements for low-latency audio via the AAudio native audio API, they:
If device implementations include
Start new requirements
End new requirements If device implementations include
If device implementations declare 5.7. Network ProtocolsDevice implementations MUST support the media network protocols for audio and video playback as specified in the Android SDK documentation. For each codec and container format that a device implementation is required to support, the device implementation:
Media Segment Formats Segment formatsReference(s)Required codec supportMPEG-2 Transport StreamISO 13818Video codecs:
and MPEG-2. Audio codecs:
RTSP (RTP, SDP) Profile nameReference(s)Required codec supportH264 AVCRFC 6184See section 5.1.8 for details on H264 AVCMP4A-LATMRFC 6416See section 5.1.3 for details on AAC and its variantsH263-1998RFC 3551RFC 4629 RFC 2190See section 5.1.8 for details on H263H263-2000RFC 4629See section 5.1.8 for details on H263AMRRFC 4867See section 5.1.3 for details on AMR-NBAMR-WBRFC 4867See section 5.1.3 for details on AMR-WBMP4V-ESRFC 6416See section 5.1.8 for details on MPEG-4 SPmpeg4-genericRFC 3640See section 5.1.3 for details on AAC and its variantsMP2TRFC 2250See MPEG-2 Transport Stream underneath HTTP Live Streaming for details 5.8. Secure MediaIf device implementations support secure video output and are capable of supporting secure surfaces, they:
If device implementations declare support for
If device implementations declare support for
5.9. Musical Instrument Digital Interface (MIDI)If device implementations report support for feature
5.10. Professional AudioIf device implementations report support for feature
Start new requirements
End new requirements
If device implementations meet all of the above requirements, they:
If device implementations include a 4 conductor 3.5mm audio jack, they:
If device implementations omit a 4 conductor 3.5mm audio jack and include a USB port(s) supporting USB host mode, they:
If device implementations include an HDMI port, they:
5.11. Capture for UnprocessedAndroid includes support for recording of unprocessed audio via the If device implementations intent to support unprocessed audio source and make it available to third-party apps, they:
All SPL measurements are made directly next to the microphone under test. For multiple microphone configurations, these requirements apply to each microphone. If device implementations declare
Start new requirements 5.12. HDR VideoAndroid 13 supports the HDR technologies as described in an upcoming document. Pixel FormatIf a video decoder advertises support for COLOR_FormatYUVP010, then:
If a video decoder advertises support for COLOR_Format32bitABGR2101010, it:
If a video encoder advertises support for COLOR_FormatYUVP010, it:
If a video encoder advertises support for COLOR_Format32bitABGR2101010, it:
HDR Capture RequirementsFor all video encoders that support HDR profiles, device implementations:
If device implementations support HDR capture using the CamcorderProfile APIs then they:
HDR Editing RequirementsIf device implementations include video encoders that support HDR editing, then they:
If device implementation includes codecs that support FEATURE_HdrEditing, then those codecs:
If device implementation includes codecs that support FEATURE_HdrEditing, then the device:
End new requirements 6. Developer Tools and Options Compatibility6.1. Developer ToolsDevice implementations:
Start new requirements
End new requirements If device implementations report the support of Vulkan 1.0 or higher via the
6.2. Developer OptionsAndroid includes support for developers to configure application development-related settings. Device implementations MUST provide a consistent experience for Developer Options, they:
7. Hardware CompatibilityIf a device includes a particular hardware component that has a corresponding API for third-party developers:
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:
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. 7.1. Display and GraphicsAndroid includes facilities that automatically adjust application assets and UI layouts appropriately for the device to ensure that third-party applications run well on a variety of hardware configurations. On the Android-compatible display(s) where all third-party Android-compatible applications can run, device implementations MUST properly implement these APIs and behaviors, as detailed in this section. The units referenced by the requirements in this section are defined as follows:
7.1.1. Screen Configuration7.1.1.1. Screen Size and ShapeThe 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 Device implementations:
If device implementations support
If device implementations include an Android-compatible display(s) that is foldable, or includes a folding hinge between multiple display panels and makes such display(s) available to render third-party apps, they:
If device implementations include an Android-compatible display(s) that is foldable, or includes a folding hinge between multiple display panels and if the hinge or fold crosses a fullscreen application window, they:
For details on correctly implementing the sidecar or extension APIs refer to the public documentation of Window Manager Jetpack. 7.1.1.2. Screen Aspect RatioWhile there is no restriction to the aspect ratio of the physical display for the Android-compatible display(s), the aspect ratio of the logical display where third-party apps are rendered, which can be derived from the height and width values reported through the
7.1.1.3. Screen DensityThe Android UI framework defines a set of standard logical densities to help application developers target application resources.
If there is an affordance to change the display size of the device:
7.1.2. Display MetricsIf device implementations include the Android-compatible display(s) or video output to the Android-compatible display screen(s), they:
If device implementations does not include an embedded screen or video output, they:
7.1.3. Screen OrientationDevice implementations:
If device implementations support both screen orientations, they:
7.1.4. 2D and 3D Graphics Acceleration7.1.4.1 OpenGL ESDevice implementations:
If device implementations include a screen or video output, they:
The OpenGL ES dEQP tests are partitioned into a number of test lists, each with an associated date/version number. These are in the Android source tree at If device implementations support any of the OpenGL ES versions, they:
Start new requirements
End new requirements If device implementations declare support for OpenGL ES 3.0, 3.1, or 3.2, they:
If device implementations support OpenGL ES 3.2, they:
If device implementations support the OpenGL ES Android Extension Pack in its entirety, they:
If device implementations expose support for the
7.1.4.2 VulkanAndroid includes support for Vulkan , a low-overhead, cross-platform API for high-performance 3D graphics. If device implementations support OpenGL ES 3.1, they: Start new requirements
If device implementations include a screen or video output, they:
End new requirements The Vulkan dEQP tests are partitioned into a number of test lists, each with an associated date/version. These are in the Android source tree at If device implementations include support for Vulkan 1.0 or higher, they:
Start new requirements
End new requirements If device implementations do not include support for Vulkan 1.0, they:
If device implementations include support for Vulkan 1.1 and declare any of the Vulkan feature flags, they:
7.1.4.3 RenderScript
7.1.4.4 2D Graphics AccelerationAndroid includes a mechanism for applications to declare that they want to enable hardware acceleration for 2D graphics at the Application, Activity, Window, or View level through the use of a manifest tag android:hardwareAccelerated or direct API calls. Device implementations:
Android includes a TextureView object that lets developers directly integrate hardware-accelerated OpenGL ES textures as rendering targets in a UI hierarchy. Device implementations:
7.1.4.5 Wide-gamut DisplaysIf device implementations claim support for wide-gamut displays through
Conversely, if device implementations do not support wide-gamut displays, they:
7.1.5. Legacy Application Compatibility ModeAndroid 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. 7.1.6. Screen TechnologyThe Android platform includes APIs that allow applications to render rich graphics to an Android-compatible display. Devices MUST support all of these APIs as defined by the Android SDK unless specifically allowed in this document. All of a device implementation's Android-compatible displays:
7.1.7. Secondary DisplaysAndroid includes support for secondary Android-compatible displays to enable media sharing capabilities and developer APIs for accessing external displays. If device implementations support an external display either via a wired, wireless, or an embedded additional display connection, they:
7.2. Input DevicesDevice implementations:
7.2.1. KeyboardIf device implementations include support for third-party Input Method Editor (IME) applications, they:
Device implementations: * [C-0-1] MUST NOT include a hardware keyboard that does not match one of the formats specified in android.content.res.Configuration.keyboard (QWERTY or 12-key). * SHOULD include additional soft keyboard implementations. * MAY include a hardware keyboard. 7.2.2. Non-touch NavigationAndroid includes support for d-pad, trackball, and wheel as mechanisms for non-touch navigation. Device implementations:
If device implementations lack non-touch navigations, they:
7.2.3. Navigation KeysThe Home, Recents, and Back 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:
If the Home, Recents, or Back functions are provided, they:
Device implementations:
Start new requirements
End new requirements If device implementations provide the Menu function, they:
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 If device implementations provide the Assist function, they:
If device implementations use a distinct portion of the screen to display the navigation keys, they:
If the navigation function is provided as an on-screen, gesture-based action:
If a navigation function is provided from anywhere on the left and right edges of the current orientation of the screen:
Start new requirements If the back navigation function is provided and the user cancels the Back gesture, then:
If the back navigation function is provided but the foreground application does NOT have an
If device implementations provide support for the system API
End new requirements 7.2.4. Touchscreen InputAndroid includes support for a variety of pointer input systems, such as touchscreens, touch pads, and fake touch input devices. Touchscreen-based device implementations 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. Device implementations:
If device implementations include a touchscreen (single-touch or better) on a primary Android-compatible display, they:
If device implementations include a touchscreen that can track more than a single touch on a primary Android-compatible display, they:
If device implementations rely on an external input device such as mouse or trackball (i.e. not directly touching the screen) for input on a primary Android-compatible display and meet the fake touch requirements in section 7.2.5, they:
7.2.5. Fake Touch InputFake 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. If device implementations do not include a touchscreen but include another pointer input system which they want to make available, they:
If device implementations declare support for
If device implementations declare support for
If device implementations declare support for
7.2.6. Game Controller Support7.2.6.1. Button MappingsDevice implementations:
If device implementations 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, they:
D-pad down10x01 0x00393AXIS_HAT_Y4D-pad left1 D-pad right10x01 0x00393AXIS_HAT_X4Left shoulder button10x09 0x0007KEYCODE_BUTTON_L1 (102)Right shoulder button10x09 0x0008KEYCODE_BUTTON_R1 (103)Left stick click10x09 0x000EKEYCODE_BUTTON_THUMBL (106)Right stick click10x09 0x000FKEYCODE_BUTTON_THUMBR (107)Back10x0c 0x0224KEYCODE_BACK (4) 1 KeyEvent 2 The above HID usages must be declared within a Game pad CA (0x01 0x0005). 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. 4 MotionEvent Analog Controls1HID UsageAndroid ButtonLeft Trigger0x02 0x00C5AXIS_LTRIGGERRight Trigger0x02 0x00C4AXIS_RTRIGGERLeft Joystick0x01 0x00300x01 0x0031AXIS_X AXIS_YRight Joystick0x01 0x0032 0x01 0x0035AXIS_Z AXIS_RZ 1 MotionEvent 7.2.7. Remote ControlSee Section 2.3.1 for device-specific requirements. 7.3. SensorsIf 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 sensors. Device implementations:
If device implementations include a particular sensor type that has a corresponding API for third-party developers, they:
The list above is not comprehensive; the documented behavior of the Android SDK and the Android Open Source Documentations on sensors is to be considered authoritative. If device implementations include a particular sensor type that has a corresponding API for third-party developers, they:
Some sensor types are composite, meaning they can be derived from data provided by one or more other sensors. (Examples include the orientation sensor and the linear acceleration sensor.) Device implementations:
If device implementations include a composite sensor, they:
If device implementations include a particular sensor type that has a corresponding API for third-party developers and the sensor only reports one value, then device implementations:
If device implementations include a particular sensor type which supports SensorAdditionalInfo#TYPE_VEC3_CALIBRATION and the sensor is exposed to third-party developers, they:
If device implementations include a combination of 3-axis accelerometer, a 3-axis gyroscope sensor, or a magnetometer sensor, they are:
7.3.1. AccelerometerDevice implementations:
If device implementations include an accelerometer, a 3-axis accelerometer, they:
Start new requirements If device implementations include a 3-axis accelerometer, they:
If device implementations include an accelerometer with less than 3 axes, they:
End new requirements If device implementations include a 3-axis accelerometer and any of the
If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:
If device implementations include a 3-axis accelerometer, a 3-axis gyroscope sensor, and a magnetometer sensor, they:
7.3.2. MagnetometerDevice implementations:
If device implementations include a 3-axis magnetometer, they:
If device implementations include a 3-axis magnetometer, an accelerometer sensor, and a 3-axis gyroscope sensor, they:
If device implementations include a 3-axis magnetometer, an accelerometer, they:
If device implementations include a 3-axis magnetometer, an accelerometer and
7.3.3. GPSDevice implementations:
If device implementations include a GPS/GNSS receiver and report the capability to applications through the
7.3.4. GyroscopeDevice implementations:
Start new requirements If device implementations include a gyroscope, they:
End new requirements If device implementations include a 3-axis gyroscope, they:
Start new requirements If device implementations include a gyroscope with less than 3 axes, they:
End new requirements If device implementations include a 3-axis gyroscope, an accelerometer sensor and a magnetometer sensor, they:
If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:
7.3.5. BarometerDevice implementations:
If device implementations include a barometer, they:
7.3.6. ThermometerIf device implementations include an ambient thermometer (temperature sensor), they:
If device implementations include a thermometer sensor that measures a temperature other than ambient temperature, such as CPU temperature, they:
If device implementations include a sensor for monitoring skin temperature, then they:
7.3.7. Photometer
7.3.8. Proximity Sensor
If device implementations include a proximity sensor and they report only a binary “near” or “far” reading, they:
7.3.9. High Fidelity SensorsIf device implementations include a set of higher quality sensors as defined in this section, and make available them to third-party apps, they:
If device implementations declare
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. If device implementations include direct sensor support, they:
7.3.10. Biometric SensorsFor additional background on Measuring Biometric Unlock Security, please see Measuring Biometric Security documentation. If device implementations include a secure lock screen, they:
Biometric sensors can be classified as Class 3 (formerly Strong), Class 2 (formerly Weak), or Class 1 (formerly Convenience) based on their spoof and imposter acceptance rates, and on the security of the biometric pipeline. This classification determines the capabilities the biometric sensor has to interface with the platform and with third-party applications. Sensors need to meet additional requirements as detailed below if they wish to be classified as either Class 1, Class 2 or Class 3. Sensors are classified as Class 1 by default, and need to meet additional requirements as detailed below if they wish to be classified as either Class 2 or Class 3. Both Class 2 and Class 3 biometrics get additional capabilities as detailed below. If device implementations make a biometric sensor available to third-party applications via android.hardware.biometrics.BiometricManager, android.hardware.biometrics.BiometricPrompt, and android.provider.Settings.ACTION_BIOMETRIC_ENROLL, they:
If device implementations support passive biometrics, they:
If device implementations have multiple biometric sensors, they:
In order for device implementations to allow access to keystore keys to third-party applications, they:
If device implementations wish to treat a biometric sensor as Class 1 (formerly Convenience), they:
Start new requirements
End new requirements
If device implementations wish to treat a biometric sensor as Class 2 (formerly Weak), they:
If device implementations wish to treat a biometric sensor as Class 3 (formerly Strong), they:
If device implementations contain an under-display fingerprint sensor (UDFPS), they:
7.3.11. Pose SensorDevice implementations:
If device implementations support pose sensor with 6 degrees of freedom, they:
7.3.12. Hinge Angle SensorIf device implementations support a hinge angle sensor, they:
Start new requirements 7.3.13. IEEE 802.1.15.4 (UWB)If device implementations include support for 802.1.15.4 and expose the functionality to a third-party application, they:
End new requirements 7.4. Data Connectivity7.4.1. Telephony“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.
If device implementations include GSM or CDMA telephony, they:
If device implementations do not include telephony hardware, they:
If device implementations support eUICCs or eSIMs/embedded SIMs and include a proprietary mechanism to make eSIM functionality available for third-party developers, they:
If device implementations don’t set the system property
If device implementations support a single IP Multimedia Subsystem (IMS) registration for both multimedia telephony service (MMTEL) and rich communication service (RCS) features and are expected to comply with cellular carrier requirements regarding using a single IMS registration for all IMS signalling traffic, they:
Start new requirements If device implementations include GSM or CDMA telephony, then:
If the device device implementations include GSM or CDMA telephony and provide a system status bar, then:
If device implementations include GSM or CDMA telephony, then:
If device device implementations include GSM or CDMA telephony and all active, non-opportunistic subscriptions that share a group UUID are disabled, physically removed from the device, or marked opportunistic, then the device:
If device implementations include GSM telephony but not CDMA telephony, they:
If the device implementations support eUICCs with multiple ports and profiles, they:
End new requirements 7.4.1.1. Number Blocking CompatibilityIf device implementations report the
Start new requirements
End new requirements
Start new requirements
End new requirements 7.4.1.2. Telecom APIIf device implementations report
Start new requirements 7.4.1.3. Cellular NAT-T Keepalive OffloadDevice implementations:
If device implementations include support for Cellular keepalive offload and exposes the functionality to third-party apps, they:
If device implementations do not include support for cellular keepalive offload, they:
End new requirements 7.4.2. IEEE 802.11 (Wi-Fi)Device implementations:
If device implementations include support for 802.11 and expose the functionality to a third-party application, they:
If device implementations include support for Wi-Fi power save mode as defined in IEEE 802.11 standard, they:
If device implementations support Wi-Fi and use Wi-Fi for location scanning, they:
7.4.2.1. Wi-Fi DirectDevice implementations:
If device implementations include support for Wi-Fi Direct, they:
7.4.2.2. Wi-Fi Tunneled Direct Link SetupDevice implementations:
If device implementations include support for TDLS and TDLS is enabled by the WiFiManager API, they:
7.4.2.3. Wi-Fi AwareDevice implementations:
If device implementations include support for Wi-Fi Aware and expose the functionality to third-party apps, then they:
If device implementations include support for Wi-Fi Aware and Wi-Fi Location as described in Section 7.4.2.5 and exposes these functionalities to third-party apps, then they:
7.4.2.4. Wi-Fi PasspointIf device implementations include support for 802.11 (Wi-Fi) they:
If a global Passpoint disable user control switch is provided, implementations:
7.4.2.5. Wi-Fi Location (Wi-Fi Round Trip Time - RTT)Device implementations:
If device implementations include support for Wi-Fi Location and expose the functionality to third-party apps, then they:
Start new requirements
End new requirements 7.4.2.6. Wi-Fi Keepalive OffloadDevice implementations:
If device implementations include support for Wi-Fi keepalive offload and expose the functionality to third-party apps, they:
If device implementations do not include support for Wi-Fi keepalive offload, they:
7.4.2.7. Wi-Fi Easy Connect (Device Provisioning Protocol)Device implementations:
If device implementations include support for Wi-Fi Easy Connect and expose the functionality to third-party apps, they:
7.4.2.8. Enterprise Wi-Fi Server Certificate ValidationIf the Wi-Fi server certificate is not validated or the Wi-Fi server domain name is not set, device implementations:
Start new requirements 7.4.2.9. Trust On First Use (TOFU)If device implementations support Trust on first usage (TOFU) and allow the user to define WPA/WPA2/WPA3-Enterprise configurations, then they:
End new requirements 7.4.3. BluetoothIf device implementations support Bluetooth Audio profile, they:
If device implementations support HFP, A2DP and AVRCP, they:
If device implementations declare
Android includes support for Bluetooth and Bluetooth Low Energy. If device implementations include support for Bluetooth and Bluetooth Low Energy, they:
If device implementations include support for Bluetooth Low Energy (BLE), they:
If device implementations support Bluetooth LE and use Bluetooth LE for location scanning, they:
If device implementations include support for Bluetooth LE and Hearing Aids Profile, as described in Hearing Aid Audio Support Using Bluetooth LE, they:
If device implementations include support for Bluetooth or Bluetooth Low Energy, they:
If device implementations include support for Bluetooth or Bluetooth Low Energy and the app manifest does not include a declaration from the developer stating that they are not deriving location from Bluetooth, then, they:
Start new requirements If device implementations return
If device implementations return
If device implementations return
If device implementations declare
It is STRONGLY RECOMMENDED to follow the measurement setup steps specified in Presence Calibration Requirements. If device implementations support Bluetooth version 5.0, then they:
End new requirements 7.4.4. Near-Field CommunicationsDevice implementations:
If device implementations include NFC hardware and plan to make it available to third-party apps, they:
Note that publicly available links are not available for the JIS, ISO, and NFC Forum specifications cited above. Android includes support for NFC Host Card Emulation (HCE) mode. If device implementations include an NFC controller chipset capable of HCE (for NfcA and/or NfcB) and support Application ID (AID) routing, they:
If device implementations include an NFC controller chipset capable of HCE for NfcF, and implement the feature for third-party applications, they:
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:
7.4.5. Networking protocols and APIs7.4.5.1. Minimum Network CapabilityDevice implementations:
7.4.5.2. IPv6Device implementations:
The required level of IPv6 support depends on the network type, as shown in the following requirements. If device implementations support Wi-Fi, they:
If device implementations support Ethernet, they:
If device implementations support Cellular data, they:
If device implementations support more than one network type (e.g., Wi-Fi and cellular data), they:
7.4.5.3. Captive PortalsA captive portal refers to a network that requires sign-in in order to obtain internet access. If device implementations provide a complete implementation of the
7.4.6. Sync SettingsDevice implementations:
7.4.7. Data SaverIf device implementations include a metered connection, they are:
If device implementations provide the data saver mode, they:
If device implementations do not provide the data saver mode, they:
7.4.8. Secure ElementsIf device implementations support Open Mobile API-capable secure elements and make them available to third-party apps, they:
Start new requirements 7.4.9. UWBIf device implementations report support for feature
It is STRONGLY RECOMMENDED to follow the measurement setup steps specified in Presence Calibration Requirements. End new requirements 7.5. CamerasIf device implementations include at least one camera, they:
Start new requirements If device implementations support HDR 10-bit output capability, then they:
For Logical camera devices which support 10-bit HDR that implement the
End new requirements 7.5.1. Rear-Facing CameraA 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. Device implementations:
If device implementations include at least one rear-facing camera, they:
If the camera includes a flash:
7.5.2. Front-Facing CameraA 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. Device implementations:
If device implementations include at least one front-facing camera, they:
If device implementations are capable of being rotated by user (such as automatically via an accelerometer or manually via user input):
7.5.3. External CameraDevice implementations:
If device implementations include support for an external camera, they:
If camera-based video encoding is supported:
7.5.4. Camera API BehaviorAndroid 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. The older API package, 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. Device implementations MUST implement the following behaviors for the camera-related APIs, for all available cameras. Device implementations:
If device implementations provide a proprietary camera API to 3rd-party apps, they:
7.5.5. Camera OrientationIf device implementations have a front- or a rear-facing camera, such camera(s):
Devices that fulfill all of the following criteria are exempt from the requirement above:
7.6. Memory and Storage7.6.1. Minimum Memory and StorageDevice implementations:
7.6.2. Application Shared StorageDevice implementations:
Device implementations MAY meet the above requirements using either of the following:
If device implementations use removable storage to satisfy the above requirements, they:
If device implementations use a portion of the non-removable storage to satisfy the above requirements, they:
If device implementations have a USB port with USB peripheral mode support, they:
If device implementations have a USB port with USB peripheral mode and support Media Transfer Protocol, they:
7.6.3. Adoptable StorageIf the device is expected to be mobile in nature unlike Television, device implementations are:
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:
7.7. USBIf device implementations have a USB port, they:
7.7.1. USB peripheral modeIf device implementations include a USB port supporting peripheral mode:
If device implementations include a USB port and implement the AOA specification, they:
7.7.2. USB host modeIf device implementations include a USB port supporting host mode, they:
If device implementations include a USB port supporting host mode and the USB audio class, they:
If device implementations include a USB port supporting host mode and the Storage Access Framework (SAF), they:
If device implementations include a USB port supporting host mode and USB Type-C, they:
7.8. Audio7.8.1. MicrophoneIf device implementations include a microphone, they:
If device implementations omit a microphone, they:
7.8.2. Audio OutputIf 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 USB audio class, they:
If device implementations do not include a speaker or audio output port, they:
For the purposes of this section, an "output port" is a physical interface 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". 7.8.2.1. Analog Audio PortsIn order to be compatible with the headsets and other audio accessories using the 3.5mm audio plug across the Android ecosystem, if device implementations include one or more analog audio ports, they:
If device implementations have a 4 conductor 3.5mm audio jack, they:
If device implementations have a 4 conductor 3.5mm audio jack and support a microphone, and broadcast the
7.8.2.2. Digital Audio PortsIn order to be compatible with the headsets and other audio accessories using USB-C connectors and implementing (USB audio class) across the Android ecosystem as defined in Android USB headset specification. See Section 2.2.1 for device-specific requirements. 7.8.3. Near-UltrasoundNear-Ultrasound audio is the 18.5 kHz to 20 kHz band. Device implementations:
If
If
7.8.4. Signal IntegrityDevice implementations:
The test requires an audio loopback dongle, used directly in a 3.5mm jack, and/or in combination with a USB-C to 3.5mm adapter. All audio output ports SHOULD be tested. OboeTester currently supports AAudio paths, so the following combinations SHOULD be tested for glitches using AAudio: Perf ModeSharingOut Sample RateIn ChansOut ChansLOW_LATENCYEXCLUSIVEUNSPECIFIED12LOW_LATENCYEXCLUSIVEUNSPECIFIED21LOW_LATENCYSHAREDUNSPECIFIED12LOW_LATENCYSHAREDUNSPECIFIED21NONESHARED4800012NONESHARED4800021NONESHARED4410012NONESHARED4410021NONESHARED1600012NONESHARED1600021A reliable stream SHOULD meet the following criteria for Signal to Noise Ratio (SNR) and Total Harmonic Distortion (THD) for 2000 Hz sine. TransducerTHDSNRprimary built-in speaker, measured using an external reference microphone< 3.0%>= 50 dBprimary built-in microphone, measured using an external reference speaker< 3.0%>= 50 dBbuilt-in analog 3.5 mm jacks, tested using loopback adapter< 1%>= 60 dBUSB adapters supplied with the phone, tested using loopback adapter< 1.0%>= 60 dB7.9. Virtual RealityAndroid 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. 7.9.1. Virtual Reality ModeAndroid includes support for VR Mode, a feature which handles stereoscopic rendering of notifications and disables monocular system UI components while a VR application has user focus. 7.9.2. Virtual Reality Mode - High PerformanceIf device implementations support VR mode, they:
If exclusive core is supported, then the core:
7.10. HapticsSee Section 2.2.1 for device-specific requirements. 7.11. Media Performance ClassThe media performance class of the device implementation can be obtained from the If device implementations return non-zero value for
Start new requirements
In other words, media performance class in Android T is only defined for handheld devices at version T, S or R. End new requirements See section 2.2.7 for device-specific requirements. 8. Performance and PowerSome minimum performance and power criteria are critical to the user experience and impact the baseline assumptions developers would have when developing an app. 8.1. User Experience ConsistencyA 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 section 2. 8.2. File I/O Access PerformanceProviding a common baseline for a consistent file access performance on the application private data storage (
8.3. Power-Saving ModesIf device implementations include features to improve device power management that are included in AOSP (e.g. App Standby Bucket, Doze) or extend the features to apply stronger restrictions than the RESTRICTED App Standby Bucket, they:
If device implementations extend power management features that are included in AOSP and that extension applies more stringent restrictions than the Rare App Standby Bucket, refer to section 3.5.1. 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). If device implementations implement S4 power states as defined by the ACPI, they:
If device implementations implement S3 power states as defined by the ACPI, they:
8.4. Power Consumption AccountingA 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. Device implementations:
8.5. Consistent PerformancePerformance 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. Device implementations:
If device implementations report support of Sustained Performance Mode, they:
If device implementations include two or more CPU cores, they:
If device implementations support reserving one exclusive core for the top foreground application, they:
If device implementations do not support an exclusive core, they:
9. Security Model CompatibilityDevice implementations:
If device implementations declare the
9.1. PermissionsDevice implementations:
Permissions with a protection level of dangerous are runtime permissions. Applications with Device implementations:
Device implementations:
More specifically, device implementations:
TelephonyManager#getServiceState requires The only exceptions to the Android location permission properties above are for apps not accessing Location to derive or identify user location; specifically:
Permissions can be marked as restricted altering their behavior.
If devices report
If device implementations provide a user affordance to choose which apps can draw on top of other apps with an activity that handles the
If device implementations report android.software.device_admin, they:
If device implementations pre-install any packages that hold any of the System UI Intelligence, System Ambient Audio Intelligence, System Audio Intelligence, System Notification Intelligence, System Text Intelligence, or System Visual Intelligence roles, the packages:
9.2. UID and Process IsolationDevice implementations:
9.3. Filesystem PermissionsDevice implementations:
9.4. Alternate Execution EnvironmentsDevice 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:
9.5. Multi-User SupportAndroid includes support for multiple users and provides support for full user isolation and clone user profiles with partial isolation(i.e. single additional user profile of type
If device implementations include support for multiple users, they:
If device implementations include support for multiple users, then for all users except users specifically created for running dual instances of the same app, they:
Device implementations MAY create a single additional user profile of type If device implementations create the additional user profile discussed above, then they:
9.6. Premium SMS WarningAndroid includes support for warning users of any outgoing premium SMS message. Premium SMS messages are text messages sent to a service registered with a carrier that may incur a charge to the user. If device implementations declare support for
9.7. Security FeaturesDevice implementations MUST ensure compliance with security features in both the kernel and platform as described below. 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:
Kernel integrity and self-protection features are integral to Android security. Device implementations:
Start new requirements
End new requirements
If device implementations use a Linux kernel, they:
If device implementations use kernel other than Linux, they:
If device implementations use I/O devices capable of DMA, they:
Android contains multiple defense-in-depth features that are integral to device security. In addition, Android focuses on reducing key classes of common bugs that contribute to poor quality and security. In order to reduce memory bugs, device implementations:
If device implementations use an Arm TrustZone-based TEE, they:
9.8. Privacy9.8.1. Usage HistoryAndroid stores the history of the user's choices and manages such history by UsageStatsManager. Device implementations:
Android stores the system events using the Device implementations:
9.8.2. RecordingDevice implementations:
If device implementations include functionality in the system that either captures the contents displayed on the screen and/or records the audio stream played on the device other than via the System API
If device implementations include a component enabled out-of-box, capable of recording ambient audio and/or record the audio played on the device to infer useful information about user’s context, they:
A “microphone indicator” refers to a view on screen, which is constantly visible to the user and cannot be obscured, which users understand as a microphone is in use(through unique text, color, icon, or some combination). A “camera indicator” refers to a view on screen, which is constantly visible to the user and cannot be obscured, which users understand as a camera is in use (through unique text, color, icon, or some combination). After the first one second displayed, an indicator can change visually, such as becoming smaller, and is not required to show as originally presented and understood. The microphone indicator may be merged with an actively displayed camera indicator, provided that text, icons, or colors indicate to the user that microphone use has begun. The camera indicator may be merged with an actively displayed microphone indicator, provided that text, icons, or colors indicate to the user that the camera use has begun. If device implementations declare
If device implementations declare
9.8.3. ConnectivityIf device implementations have a USB port with USB peripheral mode support, they:
9.8.4. Network TrafficDevice implementations:
If device traffic is routed through a VPN, device implementations:
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
If device implementations implement a user affordance to toggle on the "always-on VPN" function of a 3rd-party VPN app, they:
9.8.5. Device IdentifiersDevice implementations:
9.8.6. Content Capture and App SearchAndroid, through the System API
If device implementations capture the data above, they:
If device implementations include a service that implements the System API
Android, through 9.8.7. Clipboard AccessDevice implementations:
Start new requirements
End new requirements 9.8.8. LocationLocation includes information in the Android Location class( such as Latitude, Longitude, Altitude), as well as identifiers that can be converted to Location. Location can be as fine as DGPS (Differential Global Positioning System) or as coarse as country level locations (like the country code location - MCC - Mobile Country Code). The following is a list of location types that either directly derive a user's location or can be converted to a user's location. This is not a comprehensive list, but should be used as an example on what Location can directly or indirectly be derived from:
As a primary point of reference, see the Android APIs which require ACCESS_FINE_Location or ACCESS_COARSE_Location permissions. Device implementations:
9.8.9. Installed appsAndroid apps targeting API level 30 or above cannot see details about other installed apps by default (see Package visibility in the Android SDK documentation). Device implementations:
9.8.10. Connectivity Bug ReportIf device implementations declare the
If device implementations include additional information (e.g. vendor logs) in bug reports and that information has privacy/security/battery/storage/memory impact, they:
9.8.11. Data blobs sharingAndroid, through BlobStoreManager allows apps to contribute data blobs to the System to be shared with a selected set of apps. If device implementations support shared data blobs as described in the SDK documentation, they:
9.8.12. Music RecognitionAndroid, through the System API MusicRecognitionManager, supports a mechanism for device implementations to request music recognition, given an audio record, and delegate the music recognition to a privileged app implementing the MusicRecognitionService API. If device implementations include a service that implements the System API MusicRecognitionManager or any proprietary service that streams audio data as described as above, they:
If device implementations of MusicRecognitionManagerService or MusicRecognitionService store any audio data captured, they:
9.8.13. SensorPrivacyManagerIf device implementations provide the user a software affordance to turn off the camera and/or microphone input for the device implementation, they:
9.9. Data Storage EncryptionAll devices MUST meet the requirements of section 9.9.1. Devices which launched on an API level earlier than that of this document are exempted from the requirements of sections 9.9.2 and 9.9.3; instead they MUST meet the requirements in section 9.9 of the Android Compatibility Definition document corresponding to the API level on which the device launched. 9.9.1. Direct BootDevice implementations:
9.9.2. Encryption requirementsDevice implementations:
9.9.3. Encryption MethodsIf device implementations are encrypted, they:
9.9.3.1. File Based Encryption with Metadata EncryptionIf device implementations use File Based Encryption with Metadata Encryption, they:
The upstream Android Open Source project provides a preferred implementation of File Based Encryption based on the Linux kernel "fscrypt" encryption feature, and of Metadata Encryption based on the Linux kernel "dm-default-key" feature. Note: Device implementations that shipped on API level 28 or earlier and do not meet the requirements in 9.9.3 through a system software update MUST meet the requirements in section 9.9 of the Android Compatibility Definition Document corresponding to the API level on which the device shipped.9.9.3.2. Per-User Block-Level EncryptionIf device implementations use per-user block-level encryption, they:
Per-user block-level encryption can be implemented using the Linux kernel "dm-crypt" feature over per-user partitions. 9.9.4. Resume on RebootResume on Reboot allows unlocking the CE storage of all apps, including those that do not yet support Direct Boot, after a reboot initiated by an OTA. This feature enables users to receive notifications from installed apps after the reboot. An implementation of Resume-on-Reboot must continue to ensure that when a device falls into an attacker’s hands, it is extremely difficult for that attacker to recover the user’s CE-encrypted data, even if the device is powered on, CE storage is unlocked, and the user has unlocked the device after receiving an OTA. For insider attack resistance, we also assume the attacker gains access to broadcast cryptographic signing keys. Specifically:
By way of example, a device implementation that implements and complies with all of the descriptions found here will be compliant with [C-0-1]. 9.10. Device IntegrityThe following requirements ensure there is transparency to the status of the device integrity. Device implementations:
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. Verified Boot is a feature that guarantees the integrity of the device software. If device implementations support the feature, they:
If device implementations are already launched without supporting C-1-8 through C-1-11 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. The upstream Android Open Source Project provides a preferred implementation of this feature in the Device implementations:
If device implementations are already launched without the ability to verify file content against a trusted key on an earlier Android version and can not add support for this feature with a system software update, they MAY be exempted from the requirement. The upstream Android Open Source project provides a preferred implementation of this feature based on the Linux kernel fs-verity feature. Device implementations:
If device implementations support the Android Protected Confirmation API they:
9.11. Keys and CredentialsThe Android Keystore System allows app developers to store cryptographic keys in a container and use them in cryptographic operations through the KeyChain API or the Keystore API. Device implementations:
When the device implementation supports a secure lock screen, it:
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
9.11.1. Secure Lock Screen, Authentication and Virtual DevicesThe 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. Device implementations:
Note that the above authentication methods are referred as the recommended primary authentication methods in this document. 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:
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:
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:
If the biometric authentication methods do not meet the requirements for Class 3 (formerly Strong) as described in section 7.3.10:
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:
If device implementations have a secure lock screen and include one or more trust agent, which implements the
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:
Start new requirements If device implementations allow applications to create secondary virtual displays and do not support associated input events, such as via
If device implementations allow applications to create secondary virtual displays and support associated input events, such as via VirtualDeviceManager, they:
When device implementations allow the user to transfer the primary authentication knowledge-factor from a source device to a target device, such as for initial setup of the target device, they:
If device implementations have a secure lock screen and include one or more trust agents, which call the
If device implementations allow applications to create secondary virtual displays and support associated input events such as via VirtualDeviceManager and the displays are not marked with VIRTUAL_DISPLAY_FLAG_SECURE, they:
End new requirements If device implementations support separate display power states through
9.11.2. StrongBoxThe Android Keystore System allows app developers to store cryptographic keys in a dedicated secure processor as well as the isolated execution environment described above. Such a dedicated secure processor is called "StrongBox". Requirements C-1-3 through C-1-11 below define the requirements a device must meet to qualify as a StrongBox. Device implementations that have a dedicated secure processor:
If device implementations support StrongBox, they:
9.11.3. Identity CredentialThe Identity Credential System is defined and achieved by implementing all APIs in the
If device implementations implement the Identity Credential System, they:
Start new requirements The upstream Android Open Source Project provides a reference implementation of a trusted application (libeic) that can be used to implement the Identity Credential system. 9.11.4. ID AttestationDevice implementations:
End new requirements 9.12. Data DeletionAll device implementations:
9.13. Safe Boot ModeAndroid 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. Device implementations are:
If device implementations implement Safe Boot Mode, they:
9.14. Automotive Vehicle System IsolationAndroid Automotive devices are expected to exchange data with critical vehicle subsystems by using the vehicle HAL to send and receive messages over vehicle networks such as CAN bus. The data exchange can be secured by implementing security features below the Android framework layers to prevent malicious or unintentional interaction with these subsystems. 9.15. Subscription Plans"Subscription plans" refer to the billing relationship plan details provided by a mobile carrier through All device implementations:
9.16. Application Data MigrationIf device implementations include a capability to migrate data from a device to another device and do not limit the application data it copies to what is configured by the application developer in the manifest via android:fullBackupContent attribute, they:
Start new requirements 9.17. Android Virtualization FrameworkIf the device implements support for the Android Virtualization Framework APIs (
If the device implements support for the Android Virtualization Framework APIs (
If the device implements support for the Android Virtualization Framework APIs (
If the device implements support for the Android Virtualization Framework APIs, then across all areas:
If the device implements support for the Android Virtualization Framework APIs, then:
If the device implements support for the Android Virtualization Framework APIs, then for Key Management:
End new requirements 10. Software Compatibility TestingDevice 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 STRONGLY RECOMMENDED 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. 10.1. Compatibility Test SuiteDevice implementations:
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 13. Device implementations:
10.2. CTS VerifierThe 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. Device implementations:
The CTS Verifier has tests for many kinds of hardware, including some hardware that is optional. Device implementations:
Test cases for features noted as optional by this Compatibility Definition Document MAY be skipped or omitted.
11. Updatable Software
If the device implementations includes support for an unmetered data connection such as 802.11 or Bluetooth PAN (Personal Area Network) profile, then, they:
Device implementations SHOULD verify that the system image is binary identical to the 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. Also, device implementations SHOULD support A/B system updates. The AOSP implements this feature using the boot control HAL. 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:
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:
12. Document ChangelogFor a summary of changes to the Compatibility Definition in this release:
13. Contact UsYou can join the android-compatibility forum and ask for clarifications or bring up any issues that you think the document does not cover. |