Clase de rendimiento

La clase de rendimiento es un estándar que se introdujo por primera vez en Android 12. Una clase de rendimiento define un conjunto de capacidades del dispositivo que va más allá de los requisitos del modelo de referencia de Android.

Cada versión de Android tiene su propia clase de rendimiento correspondiente, que se define en el documento de definición de compatibilidad de Android (CDD) de la versión. El Conjunto de pruebas de compatibilidad (CTS) de Android verifica los requisitos del CDD.

Cada dispositivo Android declara la clase de rendimiento que admite. Los desarrolladores pueden descubrir la clase de rendimiento del dispositivo en el tiempo de ejecución y ofrecer experiencias mejoradas que aprovechen al máximo las capacidades del dispositivo.

Para descubrir el nivel de clase de rendimiento de un dispositivo, usa la biblioteca de Core Performance de Jetpack. Esta biblioteca informa la clase de rendimiento del contenido multimedia del dispositivo como se declara en la información de la versión de compilación o se basa en los datos de los Servicios de Google Play.

Comienza por agregar una dependencia para los módulos relevantes en tu archivo de Gradle:

// Kotlin implementation of Jetpack Core library
implementation("androidx.core:core-ktx:1.10.1")
// Enable APIs to query for device-reported Performance Class
implementation("androidx.core:core-performance:1.0.0-alpha03")
// Enable APIs to query Google Play Services for Performance Class
implementation("androidx.core:core-performance-play-services:1.0.0-alpha03")

Luego, crea una instancia de una implementación de DevicePerformance, como PlayServicesDevicePerformance, en el evento de ciclo de vida onCreate() de tu Activity o Fragment:

Kotlin

var devicePerformance = PlayServicesDevicePerformance(context)

Java

DevicePerformance devicePerformance = new PlayServicesDevicePerformance(context);

Luego, puedes recuperar la propiedad mediaPerformanceClass para adaptar la experiencia de tu app en función de las capacidades del dispositivo:

Kotlin

when {
  devicePerformance.mediaPerformanceClass >= Build.VERSION_CODES.T -> {
    // Performance class level 13 and above
    // Provide the most premium experience for highest performing devices
  }
  devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.S -> {
    // Performance class level 12
    // Provide a high quality experience
  }
  else -> {
    // Performance class level 11 or undefined
    // Remove extras to keep experience functional
  }
}

Java

if (devicePerformance.getMediaPerformanceClass() >= Build.VERSION_CODES.T) {
  // Performance class level 13 and above
  // Provide the most premium experience for highest performing devices
} else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.S) {
  // Performance class level 12
  // Provide a high quality experience
} else {
  // Performance class level 11 or undefined
  // Remove extras to keep experience functional
}

Las clases de rendimiento son compatibles con versiones futuras. Un dispositivo puede actualizarse a una versión más reciente de la plataforma sin cambiar su clase de rendimiento. Por ejemplo, un dispositivo que, en un principio, admite la clase 12 de rendimiento puede actualizarse a Android 13 y continuar informando que es compatible con la clase 12 si no cumple con los requisitos de la clase 13. Es decir, una clase de rendimiento brinda una manera de agrupar dispositivos sin depender de una versión particular de Android.

Clase 13 de rendimiento

La clase 13 de rendimiento se basa en los requisitos ingresados en la clase 12 de rendimiento. Los requisitos específicos de la clase de rendimiento se publican en el CDD de Android. Además de los requisitos adicionales para los elementos de la clase de rendimiento 12, el CDD especifica requisitos nuevos en las siguientes áreas:

Contenido multimedia

  • Decodificador de hardware de AV1
  • Decodificadores de hardware seguros
  • Latencia de inicialización del decodificador
  • Latencia de audio de ida y vuelta
  • Auriculares con cable y dispositivos de audio USB
  • Dispositivos MIDI
  • Entorno de ejecución confiable respaldado por hardware

Cámara

  • Estabilización de versión preliminar
  • Grabación en cámara lenta
  • Relación de zoom mínima para cámaras con ultra gran angular
  • Cámara simultánea
  • Multicámara lógica
  • Caso práctico de transmisión

Clase 12 de rendimiento

La clase 12 de rendimiento se enfoca en casos prácticos de contenido multimedia. Los requisitos específicos de la clase de rendimiento se publican en el CDD de Android. El CDD especifica los requisitos en las siguientes áreas:

Contenido multimedia

  • Sesiones simultáneas de códecs de video
  • Latencia de inicialización del codificador
  • Pérdida de fotogramas del decodificador
  • Calidad de codificación

Cámara

  • Resolución y velocidad de fotogramas
  • Latencias de inicio y captura
  • FULL o un nivel de hardware superior
  • La fuente de la marca de tiempo es en tiempo real
  • Función RAW

Genérico

  • Memoria
  • Rendimiento de lectura y escritura
  • Resolución de pantalla
  • Densidad de pantalla

Clase 11 de rendimiento

La clase 11 de rendimiento incluye un subconjunto de requisitos de la clase 12, lo que permite a los desarrolladores proporcionar una experiencia personalizada en dispositivos más antiguos pero que mantienen una capacidad alta. Los requisitos específicos de la clase de rendimiento se publican en el CDD de Android.