Notas de la versión de definición de compatibilidad con Android

11 de abril de 2022

2. Tipos de dispositivos

  • 2.2.1 Hardware :

    Actualizaciones a los requisitos para el protocolo WiFi Neighbor Awareness Networking (NAN):

    Ver revisión

    Si los dispositivos son compatibles con el protocolo WiFi Neighbor Awareness Networking (NAN), entonces:

    Próximamente se agregará una guía de prueba.

    Actualizaciones a los requisitos para un dispositivo de cámara lógica en dispositivos portátiles:

    Ver revisión

    Si las implementaciones de dispositivos portátiles incluyen un dispositivo de cámara lógica que enumera las capacidades mediante CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA , estas:

    • [ 7.5 .4/H-1-1] DEBE tener un campo de visión normal (FOV) por defecto y DEBE estar entre 50 y 95 grados.

  • 2.2.7.1 Medios : Actualizaciones a los requisitos de Clase de desempeño de medios.

    Ver revisión

    Si las implementaciones de dispositivos portátiles devuelven android.os.Build.VERSION_CODES.T para android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , entonces:

    • [5.6/H-1-3] DEBE admitir >= audio de 24 bits para salida estéreo a través de conectores de audio de 3,5 mm, si están presentes, y a través de audio USB, si se admite a través de toda la ruta de datos para configuraciones de baja latencia y transmisión. Para la configuración de baja latencia, la aplicación debe usar AAudio en el modo de devolución de llamada de baja latencia. Para la configuración de transmisión, la aplicación debe usar una pista de audio de Java. Tanto en las configuraciones de baja latencia como de transmisión, el sumidero de salida HAL debe aceptar AUDIO_FORMAT_PCM_24_BIT , AUDIO_FORMAT_PCM_24_BIT_PACKED , AUDIO_FORMAT_PCM_32_BIT o AUDIO_FORMAT_PCM_FLOAT para su formato de salida de destino.
    • [5.6/H-1-4] DEBE ser compatible con dispositivos de audio USB de >=4 canales (esto lo utilizan los controladores de DJ para escuchar canciones).
    • [5.6/H-1-5] DEBE admitir dispositivos MIDI compatibles con la clase y declarar el indicador de función MIDI.
    • [5.7/H-1-1] DEBE admitir un decodificador seguro para cada decodificador de hardware HEVC, VP9 o AV1 en el dispositivo.
    • [5.7/H-1-2] DEBE admitir MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL con las siguientes capacidades de descifrado de contenido.
    Nivel de clasificación de recursos 3 - Alto
    Tamaño mínimo de muestra 4 MB
    Número mínimo de submuestras - H264 o HEVC 32
    Número mínimo de submuestras - VP9 9
    Número mínimo de submuestras - AV1 288
    Tamaño mínimo de búfer de submuestra 1 MiB
    Tamaño mínimo de búfer criptográfico genérico 500 KiB
    Número mínimo de sesiones simultáneas 30
    Número mínimo de claves por sesión 20
    Número total mínimo de claves (todas las sesiones) 80
    Número total mínimo de claves DRM (todas las sesiones) 6
    Tamaño del mensaje 16 KiB
    Fotogramas descifrados por segundo 60 fps de alta definición

  • 2.2.7.2 Cámara : Actualizaciones a los requisitos de clase de rendimiento de medios relacionados con la cámara.

    Ver revisión

    Si las implementaciones de dispositivos portátiles devuelven android.os.Build.VERSION_CODES.T para android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , entonces:

    • [7.5/H-1-9] DEBE ser compatible con las extensiones Bokeh y NightMode tanto para la cámara frontal principal como para la trasera principal.
    • [7.5/H-1-10] DEBE tener una cámara principal orientada hacia atrás que admita 720p o 1080p a 240 fps.
    • [7.5/H-1-11] DEBE tener un ZOOM_RATIO mínimo < 1.0 para las cámaras principales si hay una cámara RGB ultraancha orientada en la misma dirección.
    • [7.5/H-1-12] DEBE implementar la transmisión frontal y posterior simultánea en las cámaras principales.
    • [7.5/H-1-13] DEBE ser compatible con CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION tanto para la cámara frontal principal como para la trasera principal.
    • [7.5/H-1-14] DEBE admitir la capacidad LOGICAL_MULTI_CAMERA para las cámaras principales si hay más de 1 cámara RGB orientada en la misma dirección.
    • [7.5/H-1-15] DEBE ser compatible con la capacidad STREAM_USE_CASE tanto para la cámara frontal principal como para la trasera principal.

3. Software

  • 3.5.1 Restricción de aplicaciones : Cambios en los requisitos de restricción de aplicaciones.

    Ver revisión

    Si las implementaciones de dispositivos implementan un mecanismo patentado para restringir las aplicaciones (por ejemplo, cambiar o restringir los comportamientos de la API que se describen en el SDK) y ese mecanismo es más restrictivo que el depósito en espera de aplicaciones restringidas , ellos:

    • [C-1-10] DEBE obtener un consentimiento explícito del usuario sobre cualquier restricción que se imponga para una aplicación que ejecuta servicios en primer plano. Por el contrario, NO DEBE imponer ninguna restricción para una aplicación que ejecuta servicios en primer plano sin el consentimiento del usuario.

    • [C-1-11] DEBE obtener un consentimiento explícito del usuario si se aplican restricciones de antecedentes. Dicho consentimiento DEBE obtenerse dentro de las 24 horas anteriores a la aplicación de dichas restricciones.

    • [C-1-12] DEBE mostrar una advertencia al usuario de que una aplicación puede comportarse mal y obtener un consentimiento explícito del usuario si la restricción es forzar la detención de una aplicación. Dicho consentimiento DEBE obtenerse dentro de las 24 horas anteriores a la aplicación de dichas restricciones.

      • [SR] SE RECOMIENDA ENCARECIDAMENTE NO restringir las aplicaciones deteniéndolas a la fuerza. Se espera que este requisito se convierta en IMPRESCINDIBLE en la próxima versión de Android.
    • [C-1-13] Si eximen las aplicaciones instalables por el usuario de las restricciones de propiedad, DEBEN proporcionar un documento o sitio web público y claro que describa cómo solicitar la suscripción a dicha exención. Este documento o sitio web DEBE poder vincularse desde los documentos SDK de Android.

    Si una aplicación está preinstalada en el dispositivo y nunca ha sido utilizada explícitamente por un usuario durante más de 30 días, [C-1-3] [C-1-5][C-1-10][C-1 -11] [C-1-12] están exentos.

  • 3.8.3.1 Presentación de notificaciones : Relajación de algunos de los parámetros requeridos anteriormente para notificaciones de terceros (volviendo a recomendaciones).

    Ver revisión

    Si las implementaciones de dispositivos permiten que las aplicaciones de terceros notifiquen a los usuarios sobre eventos notables , estos:

    • [C-1-8] DEBE [C-SR] Se RECOMIENDA ENCARECIDAMENTE proporcionar una posibilidad para que el usuario controle las notificaciones que están expuestas a las aplicaciones a las que se les ha otorgado el permiso de escucha de notificaciones. La granularidad DEBE ser tal que el usuario pueda controlar para cada oyente de notificación qué tipos de notificación se enlazan con este oyente. Los tipos DEBEN incluir notificaciones de "conversaciones", "alertas", "silenciosas" e "importantes en curso".
    • [C-1-9] DEBE [C-SR] Se RECOMIENDA ENCARECIDAMENTE proporcionar una posibilidad para que los usuarios especifiquen aplicaciones para excluir de la notificación a cualquier oyente de notificación específico.

5. Compatibilidad Multimedia

6. Compatibilidad de opciones y herramientas de desarrollador

  • 6.1 Herramientas para desarrolladores : actualizaciones de los requisitos para la información de trabajo de la GPU.

    Ver revisión

    Información de trabajo de la GPU

    Implementaciones de dispositivos:

    • [C-6-1] DEBE implementar el comando de shell dumpsys gpu --gpuwork para mostrar los datos de trabajo de GPU agregados devueltos por el punto de seguimiento del kernel power/gpu_work_period gpu_work_period, o no mostrar datos si el punto de seguimiento no es compatible. La implementación de AOSP es frameworks/native/services/gpuservice/gpuwork/ .

7. Compatibilidad de hardware

  • 7.1.4.1 OpenGL ES : se agregó una recomendación para los dispositivos compatibles con OpenGL ES.

    Ver revisión

    Si las implementaciones de dispositivos son compatibles con cualquiera de las versiones de OpenGL ES, estas:

    • DEBERÍA admitir EGL_IMG_context_priority y EGL_EXT_protected_content .

  • 7.2.3 Teclas de navegación : Aclaración de los requisitos para la barra de navegación.

    Ver revisión

    Si las implementaciones de dispositivos brindan soporte para la API del sistema setNavBarMode para permitir que cualquier aplicación del sistema con permiso android.permission.STATUS_BAR establezca el modo de la barra de navegación, entonces:

    • [C-9-1] DEBE proporcionar soporte para íconos aptos para niños o navegación basada en botones como se proporciona en el código AOSP.

  • 7.4.2.5. Ubicación de Wi-Fi (tiempo de ida y vuelta de Wi-Fi - RTT) : actualizaciones de los requisitos de precisión de ubicación de Wi-Fi.

    Ver revisión

    Si las implementaciones de dispositivos incluyen compatibilidad con la ubicación Wi-Fi y exponen la funcionalidad a aplicaciones de terceros, entonces:

    • [C-1-4] DEBE tener una precisión de 2 metros con un ancho de banda de 80 MHz en el percentil 68 (según lo calculado con la función de distribución acumulativa).
    • [C-SR] Se RECOMIENDA ENCARECIDAMENTE informarlo con precisión dentro de 1,5 metros con un ancho de banda de 80 MHz en el percentil 68 (según lo calculado con la función de distribución acumulativa).

  • 7.4.2.6. Descarga de Keepalive de Wi-Fi / Cellular NAT-T : actualizaciones de los requisitos de ranuras de Keepalive de Wi-Fi / Cellular.

    Ver revisión

    Si las implementaciones de dispositivos incluyen soporte para descarga de mantenimiento de Wi-Fi o descarga de mantenimiento de celular y exponen la funcionalidad a aplicaciones de terceros, ellos:

    • [C-1-3] DEBE admitir tantos intervalos de mantenimiento de actividad celular simultáneos como admita la HAL de radio celular.
    • [C-SR] Se RECOMIENDA ENCARECIDAMENTE que admitan al menos tres ranuras de conexión celular.

  • 7.4.2.9 Confianza en el primer uso (TOFU) : actualización del requisito de red Wi-Fi empresarial para TOFU.

    Ver revisión

    Si las implementaciones de dispositivos son compatibles con la confianza en el primer uso (TOFU), entonces:

    • [C-4-1] NO DEBE proporcionar al usuario una opción para agregar manualmente una red Wi-Fi empresarial basada en TLS si el certificado del servidor Wi-Fi no está configurado o el nombre de dominio del servidor Wi-Fi no está configurado.

    • [C-4-1] DEBE proporcionar al usuario una opción para seleccionar el uso de TOFU.

  • 7.4.3 Bluetooth : se actualizan los requisitos cuando se usa Bluetooth LE para determinar la proximidad a otros dispositivos.

    Ver revisión

    Si las implementaciones de dispositivos son compatibles con Bluetooth LE y usan Bluetooth LE para el escaneo de ubicación para determinar la proximidad a otros dispositivos, ellos:

    • [C-10-1] DEBE tener mediciones de RSSI dentro de +/-6dBm para el 95% de las mediciones a 1 m de distancia de un dispositivo de referencia que transmite en ADVERTISE_TX_POWER_HIGH en un entorno de línea de visión.
    • [C-10-2] DEBE incluir correcciones Rx/Tx para reducir las desviaciones por canal de modo que las mediciones en cada uno de los 3 canales, en cada una de las antenas (si se usan múltiples), estén dentro de +/-3dBm de uno otra para el 95% de las mediciones.
    • [C-10-3] DEBE medir y compensar la compensación de Rx para garantizar que el BLE RSSI medio sea -60dBm +/-3 dBm a 1 m de distancia de un dispositivo de referencia que transmite en ADVERTISE_TX_POWER_HIGH , donde los dispositivos están orientados de tal manera que están en "paralelo". planos' con pantallas orientadas en la misma dirección.
    • [C-10-4] DEBE medir y compensar la compensación de Tx para garantizar que el BLE RSSI medio sea -60dBm +/-3 dBm al escanear desde un dispositivo de referencia ubicado a 1 m de distancia y transmitiendo en ADVERTISE_TX_POWER_HIGH , donde los dispositivos están orientados de tal manera que están en 'planos paralelos' con pantallas orientadas en la misma dirección.

  • 7.4.9 UWB : Aclaraciones a los requisitos para dispositivos que incluyen hardware UWB.

    Ver revisión

    Si las implementaciones de dispositivos incluyen hardware UWB, entonces:

    • [C-1-1] DEBE asegurarse de que las medidas de distancia estén dentro de +/-10 cm y que las medidas del ángulo de llegada (si se admite) estén dentro de +/-5 grados (dentro de +/-60 grados de acimut desde el centro) para el 95 % de las mediciones en el entorno de la línea de visión.
    • [C-1-2] DEBE aplicar correcciones para que la mediana de las medidas a 10 cm del dispositivo de referencia sea igual a 10 cm +/- 2 cm, donde la distancia real de tierra se mide de antena a antena.

    • [C-1-3] DEBE tener medidas que se ajusten a una línea de tendencia con un sesgo de 0 y una pendiente de 1 para los puntos de 1 m, 3 m y 5 m.

  • 7.5 Cámaras : actualizaciones de los requisitos y recomendaciones para la capacidad de salida HDR de 10 bits.

    Ver revisión

    Si las implementaciones de dispositivos admiten la capacidad de salida HDR de 10 bits, entonces:

    • [C-2-2] DEBE admitir una salida de 10 bits para la cámara principal que mira hacia atrás o para la cámara principal que mira hacia adelante.
    • [C-SR] Se RECOMIENDA ENCARECIDAMENTE admitir una salida de 10 bits para ambas cámaras principales.

8. Rendimiento y potencia

  • 8.3 Modos de ahorro de energía : Aclaración sobre las aplicaciones consideradas RESTRINGIDAS para fines de ahorro de energía.

    Ver revisión

    Si las implementaciones de dispositivos incluyen funciones para mejorar la administración de energía del dispositivo que se incluyen en AOSP (por ejemplo, App Standby Bucket, Doze) o amplían las funciones para aplicar restricciones más estrictas que el App Standby Bucket RESTRINGIDO , ellos:

    • [C-1-4] DEBE implementar App Standby Buckets y Doze como se describe en Administración de energía .

      Inicio nuevos requisitos para T (AOSP experimental)

      1) Una aplicación se coloca en el depósito RESTRINGIDO solo cuando un usuario no la ha utilizado durante más de 4 horas.

      2) Una aplicación se coloca en el depósito RESTRINGIDO solo cuando se demuestra que la aplicación tiene un impacto significativo en el estado del sistema, como una aplicación que agota más del 0,1 % de la capacidad de una batería completamente cargada.

14 de marzo de 2022

3. Software

  • 3.8.1 Lanzador (pantalla de inicio) : aclaraciones a los nuevos requisitos para dispositivos compatibles con iconos monochrome/adaptive-icon .

    Ver revisión

    Si las implementaciones de dispositivos son compatibles monochrome/adaptive-icon , estos iconos:

    • [C-6-1] DEBE usarse solo cuando un usuario lo habilite explícitamente (por ejemplo, a través de Configuración o menú de selección de fondo de pantalla).
    • [C-6-2] NO DEBE anular las insignias de íconos de aplicaciones con un esquema de insignias patentado, a menos que las aplicaciones relacionadas con esos íconos de aplicaciones indiquen compatibilidad con el esquema de insignias patentadas mediante el uso de API patentadas.

  • 3.8.18 Tema oscuro : aclaraciones a los nuevos requisitos para dispositivos que admiten el tema oscuro.

    Ver revisión

    3.8.18.Tema oscuro

    Si las implementaciones de dispositivos son compatibles con UiModeManager.setNightModeCustomType(@NightModeCustomType int nightModeCustomType) y UiModeManager.setNightModeActivatedForCustomMode(@NightModeCustomType int nightModeCustomType, boolean active) de la API del sistema para brindar compatibilidad con el tema oscuro, entonces:

    • [C-1-1] DEBE proporcionar al usuario la posibilidad de acceder a la configuración del sistema, lo que le permite vincular el tema oscuro a un horario personalizado. El AOSP cumple con este requisito y proporciona una posibilidad de usuario predeterminada en la aplicación de configuración del sistema para activar el tema oscuro en un momento personalizado o activarlo desde el atardecer hasta el amanecer o no seguir ningún horario.

  • 3.9.1.1 Aprovisionamiento de propietarios de dispositivos : actualizaciones de los requisitos para dispositivos que aprovisionan propietarios de dispositivos.

    Ver revisión

    Si las implementaciones de dispositivos declaran android.software.device_admin , ellos:

    • [C-1-1] DEBE admitir la inscripción de un cliente de política de dispositivos (DPC) como una aplicación de propietario de dispositivo como se describe a continuación:
      • Cuando la implementación del dispositivo no tiene usuarios ni datos de usuario configurados, este:
        • [C-1-5] DEBE inscribir la aplicación DPC como la aplicación Propietario del dispositivo o permitir que la aplicación DPC elija si se convierte en Propietario del dispositivo o Propietario del perfil, si el dispositivo declara compatibilidad con Near-Field Communications (NFC) a través de la función. marca android.hardware.nfc y recibe un mensaje NFC que contiene un registro con el tipo MIME MIME_TYPE_PROVISIONING_NFC .
        • [C-1-8] DEBE enviar la intención ACTION_GET_PROVISIONING_MODE después de que se active el aprovisionamiento del propietario del dispositivo para que la aplicación DPC pueda elegir si convertirse en propietario del dispositivo o propietario del perfil, según los valores de android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES , a menos que se puede determinar a partir del contexto que solo hay una opción válida. (como para el aprovisionamiento basado en NFC donde no se admite el aprovisionamiento del propietario del perfil).
        • [C-1-9] DEBE enviar la intención ACTION_ADMIN_POLICY_COMPLIANCE a la aplicación del propietario del dispositivo si se establece un propietario del dispositivo durante el aprovisionamiento, independientemente del método de aprovisionamiento utilizado. El usuario no debe poder continuar con el Asistente de configuración hasta que finalice la aplicación Propietario del dispositivo.
      • Cuando la implementación del dispositivo tiene usuarios o datos de usuario:
        • [C-1-7] Ya no DEBE inscribir ninguna aplicación de DPC como la aplicación del propietario del dispositivo.
    • [C-1-2] DEBE mostrar un aviso de divulgación adecuado (como el que se menciona en AOSP ) y obtener el consentimiento afirmativo del usuario final antes de que una aplicación se establezca como propietario del dispositivo, a menos que el dispositivo esté configurado mediante programación para el modo de demostración minorista antes de interacción en pantalla con el usuario final. requieren alguna acción afirmativa antes o durante el proceso de aprovisionamiento para dar su consentimiento para que una aplicación se configure como Propietario del dispositivo. El consentimiento puede ser a través de la acción del usuario o por algún medio programático, pero se DEBE mostrar un aviso de divulgación apropiado (como se menciona en AOSP) antes de que se inicie el aprovisionamiento del propietario del dispositivo. Además, el mecanismo de consentimiento del propietario del dispositivo programático utilizado (por las empresas) para el aprovisionamiento del propietario del dispositivo NO DEBE interferir con la experiencia lista para usar para uso no empresarial.
    • [C-1-3] NO DEBE codificar el consentimiento ni impedir el uso de otras aplicaciones del propietario del dispositivo.

  • 3.9.4 Requisitos de la función de administración de políticas de dispositivos : Revisiones de la sección Requisitos de la función de administración de políticas de dispositivos recién agregada.

    Ver revisión

    3.9.4 Requisitos de la función de gestión de políticas de dispositivos

    • [C-1-1] DEBE admitir la función de gestión de políticas de dispositivos como se define en la sección 9.1 . La aplicación que tiene la función de gestión de políticas de dispositivos PUEDE definirse configurando config_devicePolicyManagement en el nombre del paquete. El nombre del paquete DEBE ir seguido de : y el certificado de firma, a menos que la aplicación esté precargada.

    Si no se define un nombre de paquete para config_devicePolicyManagement como se describe anteriormente:

    Si se define un nombre de paquete para config_devicePolicyManagement como se describe anteriormente:

    • [C-3-1] La aplicación DEBE estar instalada en todos los perfiles de un usuario .
    • [C-3-2] Las implementaciones de dispositivos PUEDEN definir una aplicación que actualice el titular de la función de administración de políticas del dispositivo antes del aprovisionamiento configurando config_devicePolicyManagementUpdater .

    Si se define un nombre de paquete para config_devicePolicyManagementUpdater como se describe anteriormente:

    • [C-4-1] La aplicación DEBE estar preinstalada en el dispositivo.
    • [C-4-2] La aplicación DEBE implementar un filtro de intenciones que resuelva android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER .

5. Compatibilidad Multimedia

  • 5.5.4 Descarga de audio : Aclaración de la recomendación para recortar contenido de audio sin pausas.

    Ver revisión

    Si las implementaciones de dispositivos admiten la reproducción de descarga de audio , ellos:

    • [C-SR] Se RECOMIENDA ENCARECIDAMENTE recortar el contenido de audio sin pausas reproducido entre dos clips con el mismo formato cuando lo especifique la API sin pausas de AudioTrack y el contenedor de medios para MediaPlayer.

7. Compatibilidad de hardware

  • 7.5 Cámaras : Actualizaciones a los requisitos para dispositivos que admitan la capacidad de salida HDR de 10 bits.

    Ver revisión

    Si las implementaciones de dispositivos admiten la capacidad de salida HDR de 10 bits, entonces:

    • [C-2-1] DEBE admitir al menos el perfil HLG HDR para cada dispositivo de cámara que admita una salida de 10 bits.
    • [C-2-2] DEBE admitir una salida de 10 bits para las cámaras principal trasera y principal delantera.
    • [C-2-3] DEBE admitir los mismos perfiles HDR para todas las subcámaras físicas compatibles con BACKWARD_COMPATIBLE de una cámara lógica y la propia cámara lógica.
    • [C-2-3] DEBE admitir la calidad de imagen general en función de la configuración de captura solicitada por la aplicación y el caso de uso especificado por la aplicación de la salida y NO en el destino de esa salida.

28 de febrero de 2022

5. Compatibilidad Multimedia

  • 5.10 Audio profesional : Corrección del umbral de latencia.

    Ver revisión

    Si las implementaciones de dispositivos informan la compatibilidad con la característica android.hardware.audio.pro a través de la clase android.content.pm.PackageManager , ellos:

    • [C-1-2] DEBE tener la latencia de audio de ida y vuelta continua, como se define en la sección 5.6 Latencia de audio de 25 250 milisegundos o menos en al menos una ruta admitida.

7. Compatibilidad de hardware

  • 7.4.1 Telefonía : requisito adicional con respecto a la confirmación explícita del usuario para comportamientos específicos en aplicaciones de operadores activos.

    Ver revisión

    Si las implementaciones del dispositivo incluyen telefonía GSM o CDMA, entonces:

    • [C-6-10] NO DEBE aplicar ninguno de los siguientes comportamientos a las aplicaciones de operadores activos (según lo designado por TelephonyManager#getCarrierServicePackageName ) automáticamente o sin confirmación explícita del usuario:
      • Revocar o limitar el acceso a la red
      • Revocar permisos
      • Restrinja la ejecución de aplicaciones en segundo plano o en primer plano más allá de las funciones de administración de energía existentes incluidas en AOSP
      • Deshabilitar o desinstalar la aplicación

  • 7.4.3 Bluetooth : se actualizan los requisitos de Bluetooth de la siguiente manera.

    • Aclaración de requisitos y recomendaciones para clientes de unidifusión HAP.

      Ver revisión

      Si las implementaciones de dispositivos devuelven true para la API BluetoothAdapter.isLeAudioSupported() , entonces:

      • [C-7-5] DEBE habilitar BAP /TENER SUERTE cliente unicast, coordinador de conjunto CSIP, servidor MCP,
      • [C-SR] Se RECOMIENDA ENCARECIDAMENTE habilitar el cliente de unidifusión HAP.

    • Actualización del umbral medio de BLE RSSI.

      Ver revisión

      Si las implementaciones de dispositivos son compatibles con Bluetooth LE y usan Bluetooth LE para el escaneo de ubicación para determinar la proximidad a otros dispositivos, ellos:

      • [C-10-3] DEBE incluir la calibración Rx para garantizar que el BLE RSSI medio sea -60dB -69dB a 1 m de distancia de un dispositivo de referencia que transmite en ADVERTISE_TX_POWER_HIGH .
      • [C-10-4] DEBE incluir la calibración Tx para garantizar que el BLE RSSI medio sea -60dB -69dB al escanear desde un dispositivo de referencia colocado a 1 m de distancia y transmitiendo en ADVERTISE_TX_POWER_HIGH .

9. Compatibilidad del modelo de seguridad

  • 9.11.2 Caja fuerte : revertir el requisito C-1-12 a una recomendación fuerte.

    Ver revisión

    • [C-1-12] DEBE [C-SR] Se RECOMIENDAN ENCARECIDAMENTE para proporcionar resistencia a ataques internos (IAR), lo que significa que una persona interna con acceso a claves de firma de firmware no puede producir firmware que haga que StrongBox filtre secretos, eluda los requisitos de seguridad funcional o permita el acceso a información confidencial. datos del usuario. La forma recomendada de implementar IAR es permitir actualizaciones de firmware solo cuando la contraseña de usuario principal se proporciona a través de IAuthSecret HAL. IAR se convertirá en un requisito IMPRESCINDIBLE en Android U (AOSP experimental).

14 de febrero de 2022

2. Tipos de dispositivos

  • 2.2.1 Hardware : cambios en los requisitos de hardware de la siguiente manera.

    • Latencia de audio:

      Ver revisión

      • [ 5.6 /H-1-1] DEBE tener una latencia media continua de ida y vuelta de 500 800 milisegundos o menos en 5 mediciones, con una desviación absoluta media inferior a 50 100 ms, a través de las siguientes rutas de datos: "altavoz a micrófono", adaptador de bucle invertido de 3,5 mm (si es compatible), bucle invertido USB (si es compatible). al menos una ruta admitida.

      • [ 5.6 /H-1-1] DEBE tener una latencia promedio de Tap-to-tone de 500 milisegundos o menos en al menos 5 mediciones en la ruta de datos del altavoz al micrófono.

    • Los dispositivos de entrada:

      Ver revisión

      Implementaciones de dispositivos portátiles:

      • [ 7.2 .3/H-0-5] DEBE llamar a OnBackInvokedCallback.onBackStarted() en la ventana enfocada actual cuando se inicia el gesto Atrás o se presiona el botón Atrás (KEYCODE_BACK).
      • [ 7.2 .3/H-0-6] DEBE llamar a OnBackInvokedCallback.onBackInvoked() cuando se confirma el gesto Atrás o se suelta el botón Atrás (ARRIBA).
      • [ 7.2 .3/H-0-7] DEBE llamar a OnBackInvokedCallback.onBackCancelled() cuando el gesto de retroceso no se confirma o el evento KEYCODE_BACK se cancela.

      Si la implementación del dispositivo afirma WifiRttManager.isAvailable() , entonces:

      Próximamente se agregará una guía de prueba.

    • Entradas hápticas:

      Ver revisión

      Si las implementaciones de dispositivos portátiles incluyen al menos un actuador háptico, estos:

      Si las implementaciones de dispositivos portátiles incluyen al menos un actuador resonante lineal, estos:

      • [ 7.10 /H]* DEBE mover el actuador háptico en el eje X (izquierda-derecha) de orientación vertical.

      • [ 7.10 /H]* DEBERÍA verificar y actualizar, si es necesario, la configuración alternativa para las primitivas no admitidas, como se describe en la guía de implementación para las constantes.

      • [7.10/H]* DEBERÍA proporcionar soporte alternativo para mitigar el riesgo de falla como se describe aquí .

  • 2.2.3 Software :

    • Notificaciones de MediaStyle:

      Ver revisión

      Si las implementaciones de dispositivos portátiles admiten notificaciones de MediaStyle :

      • DEBE proporcionar una posibilidad de usuario (el "conmutador de salida") en la interfaz de usuario del sistema que permita a los usuarios cambiar entre la salida de medios cuando una aplicación publica una notificación de MediaStyle con un token de MediaSession.
      • DEBE usar MediaRouter2Manager y las API de Bluetooth para mostrar (y permitir el cambio entre) las rutas de medios disponibles, que incluyen las rutas de Cast y Bluetooth.

    • Controles de dispositivos triviales de autenticación:

      Ver revisión

      • [ 3.8 .16/H-1-5] DEBE proporcionar al usuario la opción de excluirse de los controles de dispositivo de autenticación trivial designados por la aplicación de los controles registrados por las aplicaciones de terceros a través de ControlsProviderService y Control Control.isAuthRequired API.

  • 2.2.5 Modelo de seguridad : actualización de las rutas de acceso al micrófono.

    Ver revisión

    Si las implementaciones de dispositivos portátiles declaran android.hardware.microphone , ellos:

    • [ 9.8.2 /H-4-1] DEBE mostrar el indicador del micrófono cuando una aplicación accede a datos de audio desde el micrófono, pero no cuando solo HotwordDetectionService accede al micrófono. SOURCE_HOTWORD , ContentCaptureService o aplicaciones que tengan las funciones mencionadas en la sección 9.1 con el identificador CDD [C-4-X].

  • 2.2.7.1 Medios : Actualizaciones a la sección de medios de requisitos de dispositivos portátiles de la siguiente manera:

    • Actualizaciones de la clase de rendimiento multimedia:

      Ver revisión

      Si las implementaciones de dispositivos portátiles devuelven android.os.Build.VERSION_CODES.T para android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , entonces:

      • [5.1/H-1-1] DEBE anunciar la cantidad máxima de sesiones de decodificación de video de hardware que se pueden ejecutar simultáneamente en cualquier combinación de códec a través de los CodecCapabilities.getMaxSupportedInstances() y VideoCapabilities.getSupportedPerformancePoints() .
      • [5.1/H-1-2] DEBE admitir 6 instancias de sesiones de decodificador de video de hardware (AVC, HEVC, VP9, ​​AV1 o posterior) en cualquier combinación de códec que se ejecute simultáneamente a una resolución de 1080p a 30 fps.
      • [5.1/H-1-3] DEBE anunciar la cantidad máxima de sesiones de codificador de video de hardware que se pueden ejecutar simultáneamente en cualquier combinación de códec a través de los CodecCapabilities.getMaxSupportedInstances() y VideoCapabilities.getSupportedPerformancePoints() .
      • [5.1/H-1-4] DEBE admitir 6 instancias de sesiones de codificador de video de hardware (AVC, HEVC, VP9, ​​AV1 o posterior) en cualquier combinación de códec que se ejecute simultáneamente a una resolución de 1080p a 30 fps.
      • [5.1/H-1-5] DEBE anunciar la cantidad máxima de sesiones de codificador y decodificador de video de hardware que se pueden ejecutar simultáneamente en cualquier combinación de códec a través de los CodecCapabilities.getMaxSupportedInstances() y VideoCapabilities.getSupportedPerformancePoints() .
      • [5.1/H-1-6] DEBE admitir 6 instancias de decodificador de video de hardware y sesiones de codificador de video de hardware (AVC, HEVC, VP9, ​​AV1 o posterior) en cualquier combinación de códec que se ejecute simultáneamente a una resolución de 1080p a 30 fps.
      • [5.1/H-1-7] DEBE tener una latencia de inicialización del códec de 40 ms o menos para una sesión de codificación de video de 1080p o menor para todos los codificadores de video de hardware cuando están bajo carga. La carga aquí se define como una sesión de transcodificación concurrente de solo video de 1080p a 720p que usa códecs de video de hardware junto con la inicialización de grabación de audio y video de 1080p.
      • [5.1/H-1-8] DEBE tener una latencia de inicialización del códec de 30 ms o menos para una sesión de codificación de audio de 128 kbps o menos para todos los codificadores de audio cuando están bajo carga. La carga aquí se define como una sesión de transcodificación concurrente de solo video de 1080p a 720p que usa códecs de video de hardware junto con la inicialización de grabación de audio y video de 1080p.
      • [5.1/H-1-9] DEBE admitir 2 instancias de sesiones de decodificador de video de hardware seguro (AVC, HEVC, VP9, ​​AV1 o posterior) en cualquier combinación de códec que se ejecute simultáneamente a una resolución de 1080p a 30 fps.
      • [5.1/H-1-10] DEBE admitir 3 instancias de sesiones de decodificador de video de hardware no seguro junto con 1 instancia de sesión de decodificador de video de hardware seguro (4 instancias en total) (AVC, HEVC, VP9, ​​AV1 o posterior) en cualquier códec combinación que se ejecuta simultáneamente a una resolución de 1080p a 30 fps.
      • [5.1/ H-1-11] DEBE admitir un decodificador seguro para cada decodificador de video no seguro compatible (AVC, HEVC, VP9, ​​AV1 o posterior).
      • [5.1/H-1-12] DEBE tener una latencia de inicialización del decodificador de video de 40 ms o menos.
      • [5.1/H-1-13] DEBE tener una latencia de inicialización del decodificador de audio de 30 ms o menos.
      • [5.1/H-1-14] DEBE ser compatible con el decodificador de hardware AV1 Principal 10, Nivel 4.1, Grano de película.
      • [5.1/H-1-15] DEBE tener al menos 1 decodificador de video de hardware compatible con 4K60.
      • [5.1/H-1-16] DEBE tener al menos 1 codificador de video de hardware compatible con 4K60.
      • [5.3/H-1-1] NO DEBE perder más de 1 cuadro en 10 segundos (es decir, menos del 0,167 por ciento de caída de cuadro) para una sesión de video de 1080p 60 fps bajo carga. La carga se define como una sesión de transcodificación concurrente de solo video de 1080p a 720p que utiliza códecs de video de hardware, así como una reproducción de audio AAC de 128 kbps.
      • [5.3/H-1-2] NO DEBE perder más de 1 cuadro en 10 segundos durante un cambio de resolución de video en una sesión de video de 60 fps bajo carga. La carga se define como una sesión de transcodificación concurrente de solo video de 1080p a 720p que utiliza códecs de video de hardware, así como una reproducción de audio AAC de 128 kbps.
      • [5.6/H-1-1] DEBE tener una latencia de toque a tono de 80 milisegundos o menos utilizando la prueba de toque a tono de OboeTester o la prueba de toque a tono de CTS Verifier.
      • [5.6/H-1-2] DEBE tener una latencia de audio de ida y vuelta de 80 milisegundos o menos en al menos una ruta de datos admitida.
      • [5.6/H-1-3] DEBE admitir >= salida de audio de 24 bits a través de conectores de audio de 3,5 mm si están presentes y a través de audio USB si es compatible a través de toda la ruta de datos para configuraciones de baja latencia y transmisión. Para la configuración de baja latencia, se debe usar AAudio en el modo de devolución de llamada de baja latencia con AAUDIO_FORMAT_PCM_FLOAT . Para la configuración de transmisión, se debe utilizar una AudioTrack de Java con uno de los formatos de alta resolución, es decir, AUDIO_FORMAT_PCM_24_BIT , AUDIO_FORMAT_PCM_24_BIT_PACKED , AUDIO_FORMAT_PCM_32_BIT o AUDIO_FORMAT_PCM_FLOAT . Tanto en las configuraciones de baja latencia como de transmisión, el sumidero de salida HAL debe aceptar uno de esos formatos de alta resolución para su formato de salida de destino.
      • [5.6/H-1-4] DEBE ser compatible con dispositivos de audio USB de >=4 canales (esto lo utilizan los controladores de DJ para escuchar canciones).
      • [5.6/H-1-5] DEBE admitir dispositivos MIDI compatibles con la clase y declarar el indicador de función MIDI.
      • [5.7/ H-1-1] DEBE admitir Widevine L1 OEMCrypto Tier 3.
      • [5.7/H-1-2] DEBE admitir Widevine CDM versión 17.x
      • [5.7/H-1-3] DEBE admitir OEMCrypto versión 17.x
      • [5.7/H-1-4] DEBE admitir un decodificador seguro para cada decodificador de hardware HEVC, VP9 o AV1 en el dispositivo.

  • 2.2.7.2 Cámara : Actualizaciones a los requisitos de cámara de clase de rendimiento multimedia.

    Ver revisión

    Si las implementaciones de dispositivos portátiles devuelven android.os.Build.VERSION_CODES.T para android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , entonces:

    • [7.5/H-1-1] MUST have a primary rear facing camera with a resolution of at least 12 megapixels supporting video capture at 4k@30fps. The primary rear-facing camera is the rear-facing camera with the lowest camera ID.
    • [7.5/H-1-2] MUST have a primary front facing camera with a resolution of at least 5 megapixels and support video capture at 1080p@30fps. The primary front-facing camera is the front-facing camera with the lowest camera ID.
    • [7.5/H-1-3] MUST support android.info.supportedHardwareLevel property as FULL or better for both primary cameras.
    • [7.5/H-1-4] MUST support CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME for both primary cameras.
    • [7.5/H-1-5] MUST have camera2 JPEG capture latency < 1000 ms for 1080p resolution as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
    • [7.5/H-1-6] MUST have camera2 startup latency (open camera to first preview frame) < 500 ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
    • [7.5/H-1-8] MUST support CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW and android.graphics.ImageFormat.RAW_SENSOR for the primary back camera.
    • [7.5/H-1-9] MUST support Bokeh, NightMode Extensions.
    • [7.5/H-1-10] MUST have a rear facing camera supporting 720p or 1080p @ 240fps.
    • [7.5/H-1-11] MUST have min ZOOM_RATIO < 1.0 if there is an ultrawide camera.
    • [7.5/H-1-12] Must implement concurrent front-back streaming.
    • [7.5/H-1-13] MUST support CONTROL_VIDEO_STABILIZATION_MODE_ON_PREVIEW if CONTROL_VIDEO_STABILIZATION_MODE_ON is supported.
    • [7.5/H-1-14] MUST support LOGICAL_MULTI_CAMERA if there are greater than 1 RGB cameras per facing.
    • [7.5/H-1-15] MUST support 10 Bit HDR video recording.
    • [7.5/H-1-16] MUST support STREAM_USE_CASE capability.

  • 2.2.7.3 Hardware : Updates to the Media Performance Class requirements for Hardware.

    See revision

    If Handheld device implementations return android.os.Build.VERSION_CODES.T for android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , then they:

    • [7.1.1.1/H-2-1] MUST have screen resolution of at least 1080p.
    • [7.1.1.3/H-2-1] MUST have screen density of at least 400 dpi.
    • [7.6.1/H-2-1] MUST have at least 8 GB of physical memory.

  • 2.2.7.4 Performance : Updates to the Media Performance Class for Performance.

    See revision

    If Handheld device implementations return android.os.Build.VERSION_CODES.T for android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , then they:

    • [8.2/H-1-1] MUST ensure a sequential write performance of at least 125 MB/s.
    • [8.2/H-1-2] MUST ensure a random write performance of at least 10 MB/s.
    • [8.2/H-1-3] MUST ensure a sequential read performance of at least 250 MB/s.
    • [8.2/H-1-4] MUST ensure a random read performance of at least 40 MB/s.

  • 2.5.1 Hardware : Updates to the 3-axis accelerometer and 3-axis gyroscope requirements, as well as the exterior-view camera requirements.

    See revision

    Automotive device implementations:

    • [ 7.3 .1/A-0-4] MUST comply with the Android car sensor coordinate system .
    • [ 7.3 /A-SR] Are STRONGLY_RECOMMENDED to include a 3-axis accelerometer and 3-axis gyroscope.
    • [ 7.3 /A-SR] Are STRONGLY_RECOMMENDED to implement and report TYPE_HEADING sensor.

    If Automotive device implementations include an accelerometer, they:

    • [ 7.3 .1/A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.

    If device implementations include a 3-axis accelerometer, they:

    • [ 7.3 .1/A-SR] Are STRONGLY RECOMMENDED to implement the composite sensor for limited axes accelerometer.

    If Automotive device implementations include an accelerometer with less than 3 axes, they:

    • [ 7.3 .1/A-1-3] MUST implement and report TYPE_ACCELEROMETER_LIMITED_AXES sensor.
    • [ 7.3 .1/A-1-4] MUST implement and report TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensor.

    If Automotive device implementations include a gyroscope, they:

    • [ 7.3 .4/A-2-1] MUST be able to report events up to a frequency of at least 100 Hz.
    • [ 7.3 .4/A-2-3] MUST be capable of measuring orientation changes up to 250 degrees per second.
    • [ 7.3 .4/A-SR] Are STRONGLY RECOMMENDED to configure the gyroscope's measurement range to +/-250dps in order to maximize the resolution possible.

    If Automotive device implementations include a 3-axis gyroscope, they:

    • [ 7.3 .4/A-SR] Are STRONGLY RECOMMENDED to implement the composite sensor for limited axes gyroscope.

    If Automotive device implementations include a gyroscope with less than 3-axes, they:

    • [ 7.3 .4/A-4-1] MUST implement and report TYPE_GYROSCOPE_LIMITED_AXES sensor.
    • [ 7.3 .4/A-4-2] MUST implement and report TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensor.

    If automotive device implementations include a TYPE_HEADING sensor, they:

    • [ 7.3 .4/A-4-3] MUST be able to report events up to a frequency of at least 1 Hz.
    • [ 7.3 .4/A-SR] STRONGLY_RECOMMENDED to report events up to a frequency of at least 10 Hz.
    • SHOULD be in reference to true north.
    • SHOULD be available even when the vehicle is still.
    • SHOULD have a resolution of at least 1 degree.

    An exterior view camera is a camera that images scenes outside of the device implementation, like the rearview camera a dashcam .

    If Automotive device implementations include an exterior view camera, for such a camera, they:

    If automotive device implementations include one or more exterior view cameras, and load Exterior View System (EVS) service, then for such a camera, they:

    • [ 7.5 /A-2-1] MUST NOT rotate or horizontally mirror the camera preview.

  • 2.6.1 Tablet Requirements — Hardware : Update to tablet screen size requirements.

    See revision

    • Has a screen display size greater than 7” and less than 18", measured diagonally.

      Screen Size

    • [ 7.1 .1.1/Tab-0-1] MUST have a screen in the range of 7 to 18 inches.

3. Software

  • 3.2.2 Build Parameters : Updated ASCII characters in getSerial() .

    See revision

    • [C-0-1] To provide consistent, meaningful values across device implementations, the table below includes additional restrictions on the formats of these values to which device implementations MUST conform.
    Parameter Details
    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.5 Conditional Application Intents : Update to requirements for conditional application intents.

    See revision

    If device implementations include a large display (generally having display width and height of 600dp+) and supports split functionality , then they:

  • 3.5.1 Application Restriction : Updates to application restrictions.

    See revision

    If device implementations implement a proprietary mechanism to restrict apps (eg changing or restricting API behaviors that are described in the SDK) and that mechanism is more restrictive than the Restricted App Standby Bucket , they:

    • [C-1-2] MUST provide user affordance to turn on / off all of these restrictions on each app.

    Poor system health behavior is generally defined as:

    • For devices with isLowRamDevice = False :

      1. Drawing over 2% battery over last 24 hours when it's in background state
      2. Holding wakelocks over 1 hour over last 24 hours when it's in background state
      3. Total outgoing broadcasts/binding requests are more than 10,000 over last 24 hours when it's in background state
    • For devices with isLowRamDevice = True :

      1. Drawing over 4% battery over last 24 hours when it's in background state
      2. Holding wakelocks over 2 hour over last 24 hours when it's in background state
      3. Total outgoing broadcasts/binding requests are more than 5,000 over last 24 hours when it's in background state
      4. The aforementioned "background state" should conform to the definition of background work in Guide to background processing .

    MAY exempt user-installable apps from these restrictions. * [C-1-12] If they exempt user-installable apps from these restrictions, they MUST provide a public and clear document or website that describes how to request to be opted-in for such an exemption.This document or website MUST be linkable from the Android SDK documents.

    • [C-1-10] MUST NOT allow an app to be automatically placed in the RESTRICTED bucket within 4 hours of the most recent usage by a user, unless it's proven related to the app's significant impact on the system health .

    • [C-1-11] MUST obtain a user consent upon any restrictions being imposed for an app that is running foreground services. Conversely, MUST NOT impose any restrictions for an app that is running foreground services without a user consent.

  • 3.8.1 Launcher (Home Screen) : Updates to support for monochrome/adaptive-icon .

    See revision

    If device implementations support monochrome/adaptive-icon :

    • [C-6-1] these icons MUST be used only when a user explicitly enables them (eg via Settings or wallpaper picker menu).

  • 3.8.2 Widgets : Update to third-party app widget presence in the Launcher.

    See revision

    If device implementations support third-party app widgets, they:

    • [C-1-2] MUST include built-in support for AppWidgets and expose user interface affordances to add, configure, view, and remove AppWidgets directly within the Launcher.

  • 3.8.3.1 Presentation of Notifications : Changing strongly recommended requirements to necessary requirements and clarifying the definition of heads-up notifications.

    See revision

    • [C-SR] are STRONGLY RECOMMENDED
      [C-1-8] MUST provide an affordance for the user to control the notifications that are exposed to apps that have been granted the Notification Listener permission. The granularity MUST be so that the user can control for each such notification listener what notification types are bridged to this listener. The types MUST include "conversations", "alerting", "silent", and "important ongoing" notifications.
    • [C-SR] are STRONGLY RECOMMENDED
      [C-1-9] MUST provide an affordance for users to specify apps to exclude from notifying any specific notification listener.

    Heads up notifications are notifications that are presented to the user as they come in independently of the surface the user is on.

  • 3.8.3.3 DND (Do not Disturb) / Priority Mode : Update to include Priority Mode in DND (Do Not Disturb) requirements.

    See revision

    3.8.3.3. DND (Do not Disturb) / Priority Mode

    If device implementations support the DND feature (also called Priority Mode), they:

  • 3.8.6 Themes : New requirements for dynamic color tonal palettes.

    See revision

    If device implementations include a screen or video output, they:

    • [C-1-4] MUST generate dynamic color tonal palettes as specified in the AOSP documentation of Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES (see android.theme.customization.system_palette and android.theme.customization.theme_style ).

    • [C-1-5] MUST generate dynamic color tonal palettes using color theme styles enumerated in the Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES documentation (see android.theme.customization.theme_styles ), namely TONAL_SPOT , VIBRANT , EXPRESSIVE , SPRITZ , RAINBOW , FRUIT_SALAD .

      "Source color" used to generate dynamic color tonal palettes when sent with android.theme.customization.system_palette (as documented in Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES ).

    • [C-1-6] MUST have a CAM16 chroma value of 5 or larger.

      • SHOULD be derived from the wallpaper via com.android.systemui.monet.ColorScheme#getSeedColors , which provides multiple valid source colors to pick one from.

      • SHOULD use the value 0xFF1B6EF3 , if none of the provided colors meet the above source color requirement.

  • 3.8.7.1 Wallpaper Dimming : New requirements for wallpaper dimming.

    See revision

    3.8.7.1. Wallpaper Dimming

    If device implementations support the system API's WallpaperManager.setWallpaperDimAmount() and WallpaperManager.getWallpaperDimAmount() for wallpaper dimming, then they:

    • [C-1-1] MUST recompute and change the lock screen and the home screen text color to ensure that the text color and wallpaper has a minimum contrast ratio of 4.5:1 .
    • [C-1-2] MUST persist the settings for dimming after a new wallpaper is set and after restarting the device.

  • 3.8.17 Clipboard : Added new requirements section for content on the clipboard.

    See revision

    3.8.17. Clipboard

    If device implementations are not running in lock task mode , when content is copied to the clipboard they:

    • [C-1-1] MUST display a UI overlay that shows a user-visible confirmation of clipping (eg, a thumbnail) of the clipboard content and a button (or other affordance) that provides an action for the user to edit textual clipboard content (saving it back to the clipboard).
    • [C-SR] Are STRONGLY RECOMMENDED to provide a button on the displayed UI overlay that provides an affordance for the user to edit image-based clipboard content(saving it back to the clipboard).
    • [C-SR] Are STRONGLY RECOMMENDED to redact the user visible preview (if generated) for sensitive content like passwords.

    Device implementations:

    • [C-0-1] MUST NOT send clipboard data to any component, activity, service, or across any network connection, without explicit user action (eg, pressing a button on the overlay), except for services mentioned in 9.8.6 Content Capture and App Search .

    The AOSP reference implementation satisfies these clipboard requirements.

  • 3.8.18 Dark Theme : Added new requirements section for devices with dark theme support.

    See revision

    3.8.18.Dark Theme

    If device implementations support the System API's UiModeManager.setNightModeCustomType(@NightModeCustomType int nightModeCustomType) and UiModeManager.setNightModeActivatedForCustomMode(@NightModeCustomType int nightModeCustomType, boolean active) to provide support for dark theme, then they:

    • [C-1-1] MUST provide user affordance in the system settings allowing the user to tie the dark theme to a custom schedule.

  • 3.9.1.1 Device Owner Provisioning : Updates to device owner provisioning requirements.

    See revision

    If device implementations declare android.software.device_admin , they:

    • [C-1-1] MUST support enrolling a Device Policy Client (DPC) as a Device Owner app as described below:

      • When the device implementation has no users or user data configured yet, it:

        • [C-1-5] If the device declares Near-Field Communications (NFC) support via the feature flag android.hardware.nfc and receives an NFC message containing a record with MIME type MIME_TYPE_PROVISIONING_NFC , MUST conform to [C-1-8] and [C-1-9].
        • [C-1-5] MUST enroll the DPC application as the Device Owner app if the device declares Near-Field Communications (NFC) support via the feature flag android.hardware.nfc and receives an NFC message containing a record with MIME type MIME_TYPE_PROVISIONING_NFC .
        • [C-1-8] MUST send the ACTION_GET_PROVISIONING_MODE intent after device owner provisioning is triggered so that the DPC app can choose whether to become a Device Owner or a Profile Owner, depending on the values of android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES , unless it can be determined from context that there is only one valid option. (such as for NFC based provisioning where Profile Owner provisioning is not supported).
      • When the device implementation has users or user data, it:

        • [C-1-7] MUST not enroll any DPC application as the Device Owner App any more.
    • [C-1-2] MUST show appropriate disclosure notice (as referenced in AOSP) and require some affirmative action before provisioning or during the provisioning process to confirm consent to an app being set as Device Owner. Consent can be via user action or by some programmatic means but appropriate disclosure notice (as referenced in AOSP) MUST be shown before device owner provisioning is initiated. Also, the programmatic device owner consent mechanism used (by enterprises) for device owner provisioning MUST NOT interfere with the Out-Of-Box Experience for non-enterprise use.

    • [C-1-3] MUST NOT hard code the consent or prevent the use of other device owner apps.

    If device implementations declare android.software.device_admin , but also include a proprietary Device Owner device management solution and provide a mechanism to promote an application configured in their solution as a "Device Owner equivalent" to the standard "Device Owner" as recognized by the standard Android DevicePolicyManager APIs, they:

    • [C-2-3] MUST NOT hard code the consent or prevent the use of other device owner apps.
    • MAY have user data on the device prior to enrolling the DPC application as "Device Owner".

  • 3.9.4 Device Management Role Requirements : Added a section for Device Management Role Requirements.

    See revision

    3.9.4 Device Management Role Requirements

    If device implementations report android.software.device_admin or android.software.managed_users , then they:

    • [C-1-1] MUST support a device management role. The application that holds the device management role MAY be defined by setting config_deviceManager to the package name, followed by : and the signing certificate.

    If a device management role holder application is defined, an application that updates the device management role holder, then, it:

    • [C-2-1] MUST be preinstalled on the device.
    • MAY be defined with config_deviceManagerRoleHolderUpdaterPackageName .
    • [C-2-2] MUST define intent filters for the intent actions android.app.action.ROLE_HOLDER_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE , android.app.action.ROLE_HOLDER_PROVISION_MANAGED_PROFILE and android.app.action.ROLE_HOLDER_PROVISION_FINALIZATION . They MUST be protected by the android.permission.LAUNCH_DEVICE_MANAGER_SETUP permission, which MUST be held by the application that launches them.

    If a package name is not defined for the device management role, device implementations:

    • [C-3-1] MUST support provisioning without the device management role holder.

    If a device management role holder updater application is defined on the device then it:,

    • [C-4-1] MUST attempt to establish an internet connection during setup prior to provisioning. If internet connection could not be established, provisioning MUST fail unless android.app.extra.PROVISIONING_ALLOW_OFFLINE_PROVISIONING is explicitly set to true , in which case provisioning MUST continue without using the device management role holder.
    • [C-4-2] MUST have an intent filter which resolves android.app.action.UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER . That intent filter MUST be protected by the android.permission.LAUNCH_DEVICE_MANAGER_SETUP permission, which MUST be held by the application that launches it. The handler of that intent filter MUST handle the device management role holder application update and return an intent with a result set to either:
      • Activity#RESULT_OK if the update was successful.
      • DevicePolicyManager#RESULT_UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER_RECOVERABLE_ERROR if it encounters a problem that may be solved by relaunching it again (such as a temporary network issue).
      • DevicePolicyManager#RESULT_UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER_UNRECOVERABLE_ERROR if it encounters a problem that cannot be resolved by relaunching it.

    If a device management role holder application and a device management role holder updater application are defined, and an internet connection has been established, then device implementations:

    • [C-5-1] MUST update the device management role holder application prior to provisioning by launching the device management role holder updater application using the android.app.action.UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER intent.

    If devices report android.software.device_admin or android.software.managed_users and a device management role holder application is defined, and provisioning is initiated with one of the following intent actions, then the role holder must be invoked as follows:

    If provisioning is initiated with android.app.action.PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE , it:

    • [C-6-1] MUST start the device management role holder with an intent with action android.app.action.ROLE_HOLDER_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE and with the same intent extras that were passed to the provisioning intent.

    If provisioning is initiated with android.app.action.PROVISION_MANAGED_PROFILE , it:

    • [C-7-1] MUST start the device management role holder with an intent with action android.app.action.ROLE_HOLDER_PROVISION_MANAGED_PROFILE and with the same intent extras that were passed to the provisioning intent.

    If provisioning is initiated with android.app.action.PROVISION_FINALIZATION , it:

    • [C-8-1] MUST start the device management role holder with an intent with action android.app.action.ROLE_HOLDER_PROVISION_FINALIZATION .

    If provisioning is initiated with an intent action not defined above, then:

    • [C-9-1] provisioning MUST continue without using the device management role holder.

    When the device management role holder is installed on a given user, it:

    • [C-10-1] must be installed on all profiles for that user.

  • 3.18 Contacts : Adding information for new contacts.

    See revision

    Default account for new contacts: Contacts Provider provides APIs to manage the setting of the default account when creating a new contact.

    Device implementations:

    • [C-2-1] Preloaded Contacts app MUST handle the intent ContactsContract.Settings.ACTION_SET_DEFAULT_ACCOUNT to launch a UI for account selection and save the setting to Contacts Provider when an account is selected.

    • [C-2-2] MUST honor the default account setting in the application that handles Intent.ACTION_INSERT and Intent.ACTION_INSERT_OR_EDIT for the ContactsContracts.Contacts.CONTENT_TYPE and ContactsContract.RawContacts.CONTENT_TYPE by initially selecting the account.

4. Application Packaging Compatibility

5. Multimedia Compatibility

  • 5.1.2 Audio Decoding : Added new requirements for decoders capable of outputting mutli-channel audio.

    See revision

    If device implementations include support for decoders capable of outputting multi-channel audio (ie more than 2 channels) when fed compressed multi-channel content, then the following MUST be supported:

    • [C-7-1] MUST be able to be configured by the application using the decoding with the key KEY_MAX_OUTPUT_CHANNEL_COUNT to control whether the content is downmixed to stereo (when using a value of 2) or is output using the native number of channels (when using a value equal or greater to that number). For instance a value of 6 or greater would configure a decoder to output 6 channels when fed 5.1 content.
    • [C-7-2] When decoding, the decoder MUST advertise the channel mask being used on the output format with the KEY_CHANNEL_MASK key, using the android.media.AudioFormat constants (example: CHANNEL_OUT_5POINT1 ).

  • 5.4.1 Raw Audio Capture and Microphone Information : Updates to supported audio sources for audio input streams.

    See revision

    If device implementations declare android.hardware.microphone , they:

  • 5.4.2 Capture for Voice Recognition : Updated requirements for voice recognition audio stream.

    See revision

    If device implementations declare android.hardware.microphone , they:

    • SHOULD record the voice recognition audio stream with approximately flat amplitude versus frequency characteristics: specifically, ±3 dB, from 100 Hz to 4000 Hz.
    • SHOULD record the voice recognition audio stream with input sensitivity set such that a 90 dB sound power level (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.

    • SHOULD exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±3dB from 100 Hz to 4000 Hz for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the low frequency range: specifically from ±20 dB from 30 Hz to 100 Hz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 4000 Hz to 22 KHz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • SHOULD set audio input sensitivity such that a 1000 Hz sinusoidal tone source played at 90 dB Sound Pressure Level (SPL) (measured next to the microphone) yields an ideal response of RMS 2500 within a range of 1770 and 3530 for 16 bit-samples (or -22.35 db ±3dB Full Scale for floating point/double precision samples) for each and every microphone used to record the voice recognition audio source.

  • 5.4.6 Microphone Gain Levels : Removed requirements for Microphone Gain Levels.

    See revision

    5.4.6. Microphone Gain Levels

    If device implementations declare android.hardware.microphone , they:

    • SHOULD exhibit approximately flat amplitude-versus-frequency characteristics in the mid-frequency range: specifically ±3dB from 100 Hz to 4000 Hz for each and every microphone used to record the voice recognition audio source.
    • SHOULD set audio input sensitivity such that a 1000 Hz sinusoidal tone source played at 90 dB Sound Pressure Level (SPL) yields a response with RMS of 2500 for 16 bit-samples (or -22.35 dB Full Scale for floating point/double precision samples) for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the low frequency range: specifically from ±20 dB from 5 Hz to 100 Hz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.
    • [C-SR] are STRONGLY RECOMMENDED to exhibit amplitude levels in the high frequency range: specifically from ±30 dB from 4000 Hz to 22 KHz compared to the mid-frequency range for each and every microphone used to record the voice recognition audio source.

  • 5.5.4 Audio Offload : Updates to the audio offload playback requirements.

    See revision

    If device implementations support audio offload playback , they:

    • [C-1-1] MUST trim the played gapless audio content for MP3 and AAC when specified by the AudioTrack gapless API and the media container for MediaPlayer.
    • [C-SR] Are STRONGLY RECOMMENDED to trim the played gapless audio content for all supported compressed audio formats when specified by the AudioTrack gapless API and the media container for MediaPlayer.

  • 5.6 Audio Latency : Updates to the audio latency requirements.

    See revision

    For the purposes of this section, use the following definitions:

    • cold output jitter . The variability among separate measurements of cold output latency values.
    • cold input jitter . The variability among separate measurements of cold input latency values.

    If device implementations declare android.hardware.audio.output they MUST meet or exceed the following requirements:

    • [C-1-2] Mean cold output latency of 500 milliseconds or less over 5 measurements, with a Mean Absolute Deviation less than 100 msec.

    • [C-1-3] Opening an output stream using AAudioStreamBuilder_openStream() MUST take less than 1000 milliseconds.

    If device implementations declare android.hardware.audio.output they are STRONGLY RECOMMENDED to meet or exceed the following requirements:

    • [C-SR] Cold output latency of 100 milliseconds or less over the speaker data path. Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release, we will require Cold output latency of 200 ms or less as a MUST.

    • [C-SR] Minimize the cold output jitter.

    If device implementations include android.hardware.microphone , they MUST meet these input audio requirements:

    • [C-3-2] Mean cold input latency of 500 milliseconds or less over 5 measurements, with a Mean Absolute Deviation less than 100 msec.

    • [C-3-3] Opening an input stream using AAudioStreamBuilder_openStream() MUST take less than 1000 milliseconds.

    If device implementations include android.hardware.microphone , they are STRONGLY RECOMMENDED to meet these input audio requirements:

    • [C-SR] Cold input latency of 100 milliseconds or less over the microphone data path. Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release we will require Cold input latency of 200 ms or less as a MUST.

    • [C-SR] Continuous input latency of 30 milliseconds or less.
    • [C-SR] Minimize the cold input jitter.

  • 5.10 Professional Audio : Updates to audio latency requirements for professional audio support.

    See revision

    If device implementations report support for feature android.hardware.audio.pro via the android.content.pm.PackageManager class, they:

    • [C-1-2] MUST have the continuous round-trip audio latency, as defined in section 5.6 Audio Latency of 250 milliseconds or less and SHOULD be 10 milliseconds or less over at least one supported path.
    • [C-1-5] MUST meet latencies and USB audio requirements using the AAudio native audio API and AAUDIO_PERFORMANCE_MODE_LOW_LATENCY .
    • [C-1-8] MUST have an average Tap-to-tone latency of 80 milliseconds or less over at least 5 measurements over the speaker to microphone data path.
    • [C-SR] Are STRONGLY RECOMMENDED to provide a consistent level of CPU performance while audio is active and CPU load is varying. This should be tested using the Android app SynthMark . SynthMark uses a software synthesizer running on a simulated audio framework that measures system performance. See the SynthMark documentation for an explanation of the benchmarks. The SynthMark app needs to be run using the “Automated Test” option and achieve the following results: * voicemark.90 >= 32 voices * latencymark.fixed.little <= 15 msec * latencymark.dynamic.little <= 50 msec
    • SHOULD have a latency from touch input to audio output of less than or equal to 40 ms.

    If device implementations include a 4 conductor 3.5mm audio jack, they:

    • [C-2-1] MUST have a mean Continuous Round-trip Audio Latency, as defined in section 5.6 Audio Latency , of 20 milliseconds or less, over 5 measurements with a Mean Absolute Deviation less than 5 milliseconds over the audio jack path using an Audio Loopback Dongle .

6. Developer Tools and Options Compatibility

  • 6.1 Developer Tools : Updates to connectivity and GPU Kernel requirements.

    See revision

    If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , they:

    • [C-4-1] MUST have the AdbManager#isAdbWifiSupported() method return true .

    If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , and includes at least one camera, they:

    • [C-5-1] MUST have the AdbManager#isAdbWifiQrSupported() method return true .

    • GPU Kernel Tracepoint If device implementations support the power/gpu_work_period kernel tracepoint API, they:
      • [C-6-1] MUST implement the shell command gpu -gpuwork and display the GpuPerUidFrequencyTime information returned by the tracepoint.

7. Hardware Compatibility

  • 7.1.4.1 OpenGL ES : Update to recommended extensions.

    See revision

    If device implementations support any of the OpenGL ES versions, they:

    • SHOULD support the EGL_IMG_context_priority and EGL_EXT_protected_content extensions.

  • 7.1.4.2 Vulkan : Updates to version supported for Vulkan.

    See revision

    If device implementations support OpenGL ES 3.1, they:

    • [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 . Vulkan 1.1
    • MUST NOT support a Vulkan Variant version (ie the variant part of the Vulkan core version MUST be zero).

    If device implementations include a screen or video output, they:

    • [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 . Vulkan 1.1

    If device implementations include support for Vulkan 1.0 or higher, they:

    • SHOULD support VkPhysicalDeviceProtectedMemoryFeatures and VK_EXT_global_priority .
    • [C-1-12] MUST NOT enumerate support for the VK_KHR_performance_query extension.
    • [C-SR] Are STRONGLY RECOMMENDED to satisfy the requirements specified by the Android Baseline 2021 profile.

  • 7.2.3 Navigation Keys :

    See revision

    Device implementations:

    • [C-SR] Are STRONGLY RECOMMENDED to provide all navigation functions as cancellable. 'Cancellable' is defined as the user's ability to prevent the navigation function from executing (eg going home, going back, etc.) if the swipe is not released past a certain threshold.

    If the back navigation function is provided and the user cancels the Back gesture, then:

    • [C-8-1] OnBackInvokedCallback.onBackCancelled() MUST be called.
    • [C-8-2] OnBackInvokedCallback.onBackInvoked() MUST NOT be called.
    • [C-8-3] KEYCODE_BACK event MUST NOT be dispatched.

    If the back navigation function is provided but the foreground application does NOT have an OnBackInvokedCallback registered, then:

    • The system SHOULD provide an animation for the foreground application that suggests that the user is going back, as provided in AOSP.

    If device implementations provide support for the system API calls setNavBarModeOverride to override the navigation bar, then they:

    • [C-9-1] MUST provide support for kid friendly icons or button-based navigation.

  • 7.3.1 Accelerometer : Updates to sensor requirements for accelerometers.

    See revision

    If device implementations include a 3-axis accelerometer, they:

    • [C-2-1] MUST implement and report TYPE_ACCELEROMETER sensor.
    • [C-SR] Are STRONGLY RECOMMENDED to implement the TYPE_SIGNIFICANT_MOTION composite sensor.
    • [C-SR] Are STRONGLY RECOMMENDED to implement and report TYPE_ACCELEROMETER_UNCALIBRATED sensor. Android devices are STRONGLY RECOMMENDED to meet this requirement so they will be able to upgrade to the future platform release where this might become REQUIRED.
    • SHOULD implement the TYPE_SIGNIFICANT_MOTION , TYPE_TILT_DETECTOR , TYPE_STEP_DETECTOR , TYPE_STEP_COUNTER composite sensors as described in the Android SDK document.

    If device implementations include an accelerometer with less than 3 axes, they:

    • [C-3-1] MUST implement and report TYPE_ACCELEROMETER_LIMITED_AXES sensor.
    • [C-SR] Are STRONGLY_RECOMMENDED to implement and report TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED sensor.

    If device implementations include a 3-axis accelerometer and any of the TYPE_SIGNIFICANT_MOTION , TYPE_TILT_DETECTOR , TYPE_STEP_DETECTOR , TYPE_STEP_COUNTER composite sensors are implemented:

    • [C-4-1] The sum of their power consumption MUST always be less than 4 mW.

    If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:

    • [C-5-1] MUST implement the TYPE_GRAVITY and TYPE_LINEAR_ACCELERATION composite sensors.

    If device implementations include a 3-axis accelerometer, a 3-axis gyroscope sensor, and a magnetometer sensor, they:

    • [C-6-1] MUST implement a TYPE_ROTATION_VECTOR composite sensor.

  • 7.3.4 Gyroscopes : Updates to sensor requirements for gyroscopes.

    See revision

    If device implementations include a gyroscope, they:

    • [C-1-1] MUST be able to report events up to a frequency of at least 50 Hz.
    • [C-1-4] MUST have a resolution of 12-bits or more.
    • [C-1-5] MUST be temperature compensated.
    • [C-1-6] MUST be calibrated and compensated while in use, and preserve the compensation parameters between device reboots.
    • [C-1-7] MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz, or rad^2 / s). The variance is allowed to vary with the sampling rate, but MUST be constrained by this value. In other words, if you measure the variance of the gyro at 1 Hz sampling rate it SHOULD be no greater than 1e-7 rad^2/s^2.
    • [C-SR] Calibration error is STRONGLY RECOMMENDED to be less than 0.01 rad/s when device is stationary at room temperature.
    • [C-SR] Are STRONGLY RECOMMENDED to have a resolution of 16-bits or more.
    • SHOULD report events up to at least 200 Hz.

    If device implementations include a 3-axis gyroscope, they:

    • [C-2-1] MUST implement the TYPE_GYROSCOPE sensor.

    If device implementations include a gyroscope with less than 3 axes, they:

    • [C-3-1] MUST implement and report TYPE_GYROSCOPE_LIMITED_AXES sensor.
    • [C-SR] Are STRONGLY_RECOMMENDED to implement and report TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED sensor.

    If device implementations include a 3-axis gyroscope, an accelerometer sensor and a magnetometer sensor, they:

    • [C-4-1] MUST implement a TYPE_ROTATION_VECTOR composite sensor.

    If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:

    • [C-5-1] MUST implement the TYPE_GRAVITY and TYPE_LINEAR_ACCELERATION composite sensors.

  • 7.3.10 Biometric Sensors : Updates to sensor requirements for biometric sensors.

    See revision

    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 wish to treat a biometric sensor as Class 1 (formerly Convenience ), they:

    • [C-1-11] MUST have a spoof and imposter acceptance rate not higher than 30%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 30%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 40%, as measured by the Android Biometrics Test Protocols.

    If device implementations wish to treat a biometric sensor as Class 2 (formerly Weak ), they:

    • [C-2-2] MUST have a spoof and imposter acceptance rate not higher than 20%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 20%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 30%, as measured by the Android Biometrics Test Protocols .

    If device implementations wish to treat a biometric sensor as Class 3 (formerly Strong ), they:

    • [C-3-3] MUST have a spoof and imposter acceptance rate not higher than 7%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 7%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 20%, as measured by the Android Biometrics Test Protocols .

  • 7.3.13 IEEE 802.1.15.4 (UWB) : Added a new requirements section for UWB.

    See revision

    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:

    • [C-1-1] MUST implement the corresponding Android API in android.uwb.
    • [C-1-2] MUST report the hardware feature flag android.hardware.uwb.
    • [C-1-3] MUST support all the relevant UWB profiles defined in Android implementation.
    • [C-1-4] MUST provide a user affordance to allow the user to toggle the UWB radio on/off state.
    • [C-1-5] MUST enforce that apps using UWB radio hold UWB_RANGING permission (under NEARBY_DEVICES permission group).
    • [C-1-6] Are STRONGLY RECOMMENDED to pass the relevant conformance and certification tests defined by standard organizations, including FIRA , CCC and CSA .

  • 7.4.1 Telephony : Updates to telephony requirements for GSM and CDMA telephony, and cellular usage settings.

    See revision

    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 include GSM or CDMA telephony, then:

    If the device device implementations include GSM or CDMA telephony and provides a system status bar, then they:

    • [C-SR] it is STRONGLY RECOMMENDED that the representative subscription is chosen to be the active data subscription unless the device is in a voice call, during which it is STRONGLY RECOMMENDED that the representative subscription is the active voice subscription.

    If device implementations include GSM or CDMA telephony, then:

    • [C-6-8] MUST be capable of opening and concurrently utilizing the maximum number of logical channels (20 in total) for each UICC per ETSI TS 102 221.
    • [C-6-9] MUST declare the android.hardware.telephony feature flag and other sub-feature flags according to the technology and features to be supported. The sub-feature flags include android.hardware.telephony.radio.access, android.hardware.telephony.subscription, android.hardware.telephony.cdma, android.hardware.telephony.gsm, android.hardware.telephony.calling, android.hardware.telephony.data, android.hardware.telephony.messaging. The standard set of telephony features for GSM phone, CDMA phone, data-only devices, etc. can be found from the config files under platform/frameworks/native/data/etc/.

    If the 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:

    • [C-7-1] MUST automatically disable all remaining active opportunistic subscriptions in the same group.

    If device implementations include GSM telephony but not CDMA telephony, they:

    If device implementations report FEATURE_TELEPHONY_IMS and supports cellular usage setting configuration, then they:

    • [C-9-1] MUST set CarrierConfigManager#KEY_CELLULAR_USAGE_SETTING_INT to value SubscriptionManager#USAGE_SETTING_VOICE_CENTRIC .

    If device implementations report FEATURE_TELEPHONY_DATA and supports cellular usage setting configuration, then they:

    • [C-10-1] MUST set CarrierConfigManager#KEY_CELLULAR_USAGE_SETTING_INT to value SubscriptionManager#USAGE_SETTING_DATA_CENTRIC .

    If the device implementations support eUICCs with multiple ports and profiles, they:

    • [C-11-1] MUST declare the android.hardware.telephony.euicc feature flag.

  • 7.4.1.1 Number Blocking Compatibility : Updates to the number blocking requirements.

    See revision

    If device implementations report the android.hardware.telephony feature , they:

    • [C-1-4] MUST write to the platform call log provider for a blocked call and MUST filter calls with BLOCKED_TYPE out of the default call log view in the pre-installed dialer app.
    • SHOULD provide a user affordance to show blocked calls in the pre-installed dialer app.

  • 7.4.2.5 Wi-Fi Location (Wi-Fi Round Trip Time - RTT) : Updates to Wi-Fi location accuracy.

    See revision

    If device implementations include support for Wi-Fi Location and expose the functionality to third-party apps, then they:

    • [C-1-4] MUST be accurate to within 2 meters [C-SR] Are STRONGLY RECOMMENDED to report it accurately to within 1.5 meters at 80 MHz bandwidth at the 68th percentile (as calculated with the Cumulative Distribution Function).

  • 7.4.2.6 Wi-Fi / Cellular NAT-T Keepalive Offload : Updated to add cellular keepalive offload requirements.

    See revision

    Device implementations:

    • SHOULD include support for Wi-Fi keepalive offload and Cellular keepalive offload.

    If device implementations include support for Wi-Fi keepalive offload or Cellular keepalive offload and expose the functionality to third-party apps,they:

    • [C-1-1] MUST support the SocketKeepAlive API.
    • [C-1-2] MUST support at least three concurrent keepalive slots over Wi-Fi and at least one keepalive slot over cellular.

    If device implementations do not include support for Wi-Fi keepalive offload or cellular keepalive offload , they:

  • 7.4.2.9 Trust On First Use (TOFU) : Added Trust on First Use requirements section.

    See revision

    7.4.2.9 Trust On First Use (TOFU)

    If device implementations support Trust on first usage (TOFU), then they:

    • [C-4-1] MUST NOT provide the user an option to manually add a TLS-based Enterprise Wi-Fi network if the Wi-Fi server certificate is not configured or the Wi-Fi server domain name is not set.
    • [C-4-2] MUST provide the user an option to select to use TOFU.

  • 7.4.3 Bluetooth : Update to Bluetooth requirements.

    See revision

    If device implementations support Bluetooth Audio profile, they:

    • SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs (eg LDAC) with A2DP.

    If device implementations return true for the BluetoothAdapter.isLeAudioSupported() API, then they:

    • [C-7-1] MUST support unicast client.
    • [C-7-2] MUST support 2M PHY.
    • [C-7-3] MUST support LE Extended advertising.
    • [C-7-4] MUST support at least 2 CIS connections in a CIG.
    • [C-7-5] MUST enable BAP/HAP unicast client, CSIP set coordinator, MCP server, VCP controller, CCP server simultaneously.

    If device implementations return true for the BluetoothAdapter.isLeAudioBroadcastSourceSupported() API, then they:

    • [C-8-1] MUST support at least 2 BIS links in a BIG.
    • [C-8-2] MUST enable BAP broadcast source, BAP broadcast assistant simultaneously.
    • [C-8-3] MUST support LE Periodic advertising.

    If device implementations return true for the BluetoothAdapter.isLeAudioBroadcastAssistantSupported() API, then they:

    • [C-9-1] MUST support PAST (Periodic Advertising Sync Transfer).
    • [C-9-2] MUST support LE Periodic advertising.

    If device implementations support Bluetooth LE and use Bluetooth LE for location scanning to determine nearness to other devices, they:

    • [C-10-1] MUST have variance of RSSI measurements be within +/-6dB at 95% confidence level at 1m distance from a reference device transmitting at ADVERTISE_TX_POWER_HIGH .
    • [C-10-2] MUST include Rx calibration to reduce per-channel deviations so that the measurements on each of the 3 channels, on each of the antennas (if multiple are used), are within +-2db of one another.
    • [C-10-3] MUST include Rx calibration to ensure the median BLE RSSI is -69dB at 1m distance from a reference device transmitting at ADVERTISE_TX_POWER_HIGH .
    • [C-10-4] MUST include Tx calibration to ensure the median BLE RSSI is -69dB when scanning from a reference device positioned at 1m distance and transmitting at ADVERTISE_TX_POWER_HIGH .

  • 7.4.9 UWB : Added a requirements section for UWB hardware.

    See revision

    7.4.9. UWB

    If device implementations include UWB hardware, then they:

    • [C-1-1] MUST ensure the variance of distance measurements is under +/-10cm, and the variance of angle of arrival measurements is under +/-5 degrees.
    • [C-1-2] MUST apply corrections so that the median of the measurements at 10cm from the reference device is equal to 10cm.
    • [C-1-3 ]MUST have measurements fit a trend line with bias of 0 and slope of 1 for the 1m, 3m, and 5m points.

  • 7.5 Cameras : Updates to the requirements for HDR 10-bit output capability.

    See revision

    If device implementations support HDR 10-bit output capability, then they:

    • [C-2-1] MUST support the same set of HDR profiles for the primary rear-facing and primary front-facing cameras.
    • [C-2-2] MUST support the same HDR profiles for all BACKWARD_COMPATIBLE-capable physical sub-cameras of a logical camera, and the logical camera itself.
    • [C-2-3] MUST support the overall image quality based on the application-requested capture settings and the application-specified usecase of the output and NOT on the destination of that output.

    For Logical camera devices which support 10-bit HDR that implement the android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO API, they:

    • [C-3-1] MUST support switching between all the backwards-compatible physical cameras via the CONTROL_ZOOM_RATIO control on the logical camera.

  • 7.7.2 USB Host Mode : Revisions for dual role ports.

    See revision

    If device implementations include a USB port supporting host mode and USB Type-C, they:

    • [C-4-1] MUST implement Dual Role Port functionality as defined by the USB Type-C specification (section 4.5.1.3.3). For Dual Role Ports, On devices that include a 3.5mm audio jack, the USB sink detection (host mode) MAY be off by default but it MUST be possible for the user to enable it.

  • 7.11 Media Performance Class : Updated to include Android T.

    See revision

    If device implementations return non-zero value for android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS , they:

    • [C-1-3] MUST meet all requirements for "Media Performance Class" described in section 2.2.7 .

    In other words, media performance class in Android T is only defined for handheld devices at version T, S or R.

    See section 2.2.7 for device-specific requirements.

8. Performance and Power

  • 8.5 Consistent Performance : Update to user-facing requirements for foreground service management.

    See revision

    Device implementations:

    • [C-0-2] MUST provide a user affordance in the Settings menu with the ability to stop an active foreground service as described in a forthcoming document and display all apps that have active foreground services along with the number of services per app and the duration of each of these services since it started.
      • Foreground services from apps that fulfill predefined roles that are listed in a forthcoming document MAY not be displayed in this area.

9. Security Model Compatibility

  • 9.1 Permissions : Extend accepted paths for permissions allowlists for preinstalled apps to APEX files.

    See revision

    • [C-0-2] Permissions with a protectionLevel of PROTECTION_FLAG_PRIVILEGED MUST only be granted to apps preinstalled in the privileged path(s) of the system image (as well as APEX files ) and be within the subset of the explicitly allowlisted permissions for each app. The AOSP implementation meets this requirement by reading and honoring the allowlisted permissions for each app from the files in the etc/permissions/ path and using the system/priv-app path as the privileged path.

  • 9.7 Security Features : Updates to initialization requirements to maintain kernel integrity.

    See revision

    Kernel integrity and self-protection features are integral to Android security. Device implementations:

    • [C-0-14] MUST enable stack initialization in the kernel to prevent uses of uninitialized local variables ( CONFIG_INIT_STACK_ALL or CONFIG_INIT_STACK_ALL_ZERO ). Also, device implementations MUST NOT assume the value used by the compiler to initialize the locals.

  • 9.8.7 Privacy — Clipboard Access : Automatically clear clipboard data after 60 minutes following a cut/copy/paste activity to protect user privacy.

    See revision

    • [C-0-2] MUST clear clipboard data at most 60 minutes after it has last been placed in a clipboard or read from a clipboard.

  • 9.11 Keys and Credentials : Updates to the secure lock screen requirements, including the addition of ECDH and 3DES to crypto algorithms and attestation key provisioning.

    See revision

    When the device implementation supports a secure lock screen, it:

    • [C-1-2] MUST have implementations of RSA, AES, ECDSA, ECDH, 3DES, and HMAC cryptographic algorithms and MD5, SHA1, and SHA-2 family hash functions to properly support the Android Keystore system's supported algorithms in an area that is securely isolated from the code running on the kernel and above. Secure isolation MUST block all potential mechanisms by which kernel or userspace code might access the internal state of the isolated environment, including DMA. The upstream Android Open Source Project (AOSP) meets this requirement by using the Trusty implementation, but another ARM TrustZone-based solution or a third-party reviewed secure implementation of a proper hypervisor-based isolation are alternative options.
    • [C-1-4] MUST support key attestation where the attestation signing key is protected by secure hardware and signing is performed in secure hardware. The attestation keys MUST be generated on device, in the isolated environment, and attestation key certificates MUST be remotely provisioned to the device after the device authenticates with a device-unique authentication key. The attestation signing keys MUST be shared across large enough number of devices to prevent the keys from being used as device identifiers. One way of meeting this requirement is to share the same attestation key unless at least 100,000 units of a given SKU are produced. If more than 100,000 units of an SKU are produced, a different key MAY be used for each 100,000 units.

    • [C-SR] is STRONGLY RECOMMENDED that the device have an attestation key provisioned by the vendor factory for use in the event there is a problem with remotely-provisioned keys. The factory-provisioned attestation signing keys MUST be shared across large enough number of devices to prevent the keys from being used as device identifiers. One way of meeting this requirement is to share the same attestation key unless at least 100,000 units of a given SKU are produced. If more than 100,000 units of an SKU are produced, a different key MAY be used for each 100,000 units.

    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 android.hardware.fingerprint feature which requires a keystore backed by an isolated execution environment. If a device implementation is already launched on an earlier Android version, such a device is also exempted from the requirement to remotely provision attestation keys.

  • 9.11.1 Secure Lock Screen, Authentication, and Virtual Devices : Added requirements section for virtual devices and authentication transfers.

    See revision

    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:

    • [C-6-3] The user MUST be challenged for one of the recommended primary authentication methods (egPIN, pattern, password) at least once every 4 hours or less. When a physical token meets the requirements for TrustAgent implementations in CX, timeout restrictions defined in C-9-5 apply instead.

    If device implementations allow applications to create secondary virtual displays and do not support associated input events, such as via VirtualDeviceManager , they:

    • [C-9-1] MUST lock these secondary virtual display(s) when the device's default display is locked, and unlock these secondary virtual display(s) when the device's default display is unlocked.

    If device implementations allow applications to create secondary virtual displays and support associated input events, such as via VirtualDeviceManager [will be linked to API at developer.android.com API], they:

    • [C-10-1] MUST support separate lock states per virtual device
    • [C-10-2] MUST disconnect all virtual devices upon idle timeout
    • [C-10-3] MUST have an idle timeout
    • [C-10-4] MUST lock all displays when the user initiates a lockdown , including via the lockdown user affordance required for handheld devices (see Section 2.2.5[9.11/H-1-2] )
    • [C-10-5] MUST have separate virtual device instances per user
    • [C-10-6] MUST disable the creation of associated input events via VirtualDeviceManager when indicated by DevicePolicyManager.setNearbyAppStreamingPolicy
    • [C-10-7] MUST use a separate clipboard solely for each virtual device (or disable the clipboard for virtual devices)
    • [C-10-8] MUST block activities with the attribute android:canDisplayOnRemoteDevices or the meta-data android.activity.can_display_on_remote_devices set to true from being started on the virtual device.
    • [C-10-9] MUST block activities which do not explicitly enable streaming and which indicate they show sensitive content, including via SurfaceView#setSecure , FLAG_SECURE , or SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS , from being started on the virtual device.
    • [C-10-10] MUST disable installation of apps initiated from virtual devices
    • [C-10-11] MUST disable authentication UI on virtual devices, including knowledge factor entry and biometric prompt
    • [C-10-12] MUST restrict intents initiated from a virtual device to display only on the same virtual device
    • [C-10-13] MUST not use a virtual device lock state as user authentication authorization with the Android Keystore System. See KeyGenParameterSpec.Builder.setUserAuthentication* .

    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:

    • [C-11-1] MUST encrypt the knowledge-factor with protection guarantees similar to those described in this security whitepaper when transferring the knowledge-factor from the source device to the target device such that the knowledge-factor cannot be remotely decrypted or used to remotely unlock either device.
    • [C-11-2] MUST, on the source device , ask the user to confirm the knowledge-factor of the source device before transferring the knowledge-factor to the target device.
    • [C-11-3] MUST, on a target device lacking any set primary authentication knowledge-factor, ask the user to confirm a transferred knowledge-factor on the target device before setting that knowledge-factor as the primary authentication knowledge-factor for the target device and before making available any data transferred from a source device.

    If device implementations have a secure lock screen and include one or more trust agents, which call the TrustAgentService.grantTrust() System API with the FLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE flag they:

    • [C-12-1] MUST only call grantTrust() with the flag when connected to a proximate physical device with a lockscreen of its own, and when the user has authenticated their identity against that lockscreen. Proximate devices can use on-wrist or on-body detection mechanisms after a one-time user unlock to satisfy the user authentication requirement.
    • [C-12-2] MUST put the device implementation into the TrustState.TRUSTABLE state when the screen is turned off (such as via a button press or display time out) and the TrustAgent has not revoked trust. The AOSP satisfies this requirement.
    • [C-12-3] MUST only move the device from TrustState.TRUSTABLE to the TrustState.TRUSTED state if the TrustAgent is still granting trust based on the requirements in C-12-1.
    • [C-12-4] MUST call TrustManagerService.revokeTrust() after a maximum of 24 hours from granting trust, an 8 hour idle window, or when the underlying connection to the proximate physical device is lost.

  • 9.11.2 Strongbox : Making insider attack resistance (IAR) a necessary requirement.

    See revision

    • [C-SR] are STRONGLY RECOMMENDED [C-1-12] MUST provide insider attack resistance (IAR), which means that an insider with access to firmware signing keys cannot produce firmware that causes the StrongBox to leak secrets, to bypass functional security requirements or otherwise enable access to sensitive user data. The recommended way to implement IAR is to allow firmware updates only when the primary user password is provided via the IAuthSecret HAL. IAR will likely become a requirement in a future release.

  • 9.11.3 Identity Credential : Added information about the Identity Credential system reference implementation.

    See revision

    The Identity Credential System is defined and achieved by implementing all APIs in the android.security.identity.* package. These APIs allows app developers to store and retrieve user identity documents. Device implementations:

    • [C-0-5] 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 Attestation : Added a section for ID attestation requirement.

    See revision

    9.11.4. ID Attestation

    Device implementations MUST support ID attestation .

  • 9.17 Android Virtualization Framework : Added a requirements section for Android Virtualization Framework.

    See revision

    9.17. Android Virtualization Framework

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), the Android host:

    • [C-1-1] MUST support all the APIs defined by the android.system.virtualmachine.* package.
    • [C-1-2] MUST NOT modify the Android SELinux and permission model for the management of Protected Virtual Machines.
    • [C-1-3] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy provided in the upstream Android Open Source Project (AOSP) and the policy MUST compile with all neverallow rules present.
    • [C-1-4] MUST NOT allow untrusted code (eg 3p apps) to create and run a Protected Virtual Machine. Note: This might change in future Android releases.
    • [C-1-5] MUST NOT allow a Protected Virtual Machine to execute code that is not part of the factory image or their updates. Anything that is not covered by Android Verified Boot (eg files downloaded from the Internet or sideloaded) MUST NOT be allowed to be run in a Protected Virtual Machine.

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), then any Protected Virtual Machine instance:

    • [C-2-1] MUST be able to run all operating systems available in the virtualization APEX in a Protected Virtual Machine.
    • [C-2-2] MUST NOT allow a Protected Virtual Machine to run an operating system that is not signed by the device implementor or OS vendor.
    • [C-2-3] MUST NOT allow a Protected Virtual Machine to execute data as code (eg SELinux neverallow execmem).
    • [C-2-4] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy/microdroid provided in the upstream Android Open Source Project (AOSP).
    • [C-2-5] MUST implement Protected Virtual Machine defense-in-depth mechanisms (eg SELinux for pVMs) even for non-Microdroid operating systems.
    • [C-2-6] MUST ensure that the pVM firmware refuses to boot if it cannot verify the initial image.
    • [C-2-7] MUST ensure that the pVM firmware refuses to boot if the integrity of the instance.img is compromised.

    If the device implements support for the Android Virtualization Framework APIs ( android.system.virtualmachine.* ), then the hypervisor:

    • [C-3-1] MUST NOT allow any pVM to have access to a page belonging to another entity (ie other pVM or hypervisor), unless explicitly shared by the page owner. This includes the host VM. This applies to both CPU and DMA accesses.
    • [C-3-2] MUST wipe a page after it is used by a VM and before it is returned to the host (eg the pVM is destroyed).
    • [C-3-3] MUST ensure that the pVM firmware is loaded and executed prior to any code in a pVM.
    • [C-3-4] MUST ensure that BCC and CDIs provided to a pVM instance can only be derived by that particular instance.

    If the device implements support for the Android Virtualization Framework APIs, then across all areas:

    • [C-4-1] MUST NOT provide functionality to a pVM that allows bypassing the Android Security Model.

    If the device implements support for the Android Virtualization Framework APIs, then:

    • [C-5-1] MUST support Isolated Compilation of an ART runtime update.

    If the device implements support for the Android Virtualization Framework APIs, then for Key Management:

    • [C-6-1] MUST root DICE chain at a point that the user cannot modify, even on unlocked devices. (To ensure it cannot be spoofed).
    • [C-6-2] MUST do DICE properly ie provide the correct values. But it might not have to go to that level of detail.

Back to top