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 encontrar 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 encontrar 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.12.0") // Enable APIs to query for device-reported performance class. implementation("androidx.core:core-performance:1.0.0") // Enable APIs to query Google Play Services for performance class. implementation("androidx.core:core-performance-play-services:1.0.0")
Groovy
// Implementation of Jetpack Core library. implementation 'androidx.core:core-ktx:1.12.0' // Enable APIs to query for device-reported performance class. implementation 'androidx.core:core-performance:1.0.0' // Enable APIs to query Google Play Services for performance class. implementation 'androidx.core:core-performance-play-services:1.0.0'
Then, create an instance of a
DevicePerformance
implementation, such as
PlayServicesDevicePerformance
,
in the onCreate()
lifecycle event of your Application
. This should only be
done once in your app.
Kotlin
import androidx.core.performance.play.services.PlayServicesDevicePerformance class MyApplication : Application() { lateinit var devicePerformance: DevicePerformance override fun onCreate() { // Use a class derived from the DevicePerformance interface devicePerformance = PlayServicesDevicePerformance(applicationContext) } }
Java
import androidx.core.performance.play.services.PlayServicesDevicePerformance; class MyApplication extends Application { DevicePerformance devicePerformance; @Override public void onCreate() { // Use a class derived from the DevicePerformance interface devicePerformance = new PlayServicesDevicePerformance(applicationContext); } }
Luego, puedes recuperar la propiedad mediaPerformanceClass
para adaptar la experiencia de tu app en función de las capacidades del dispositivo:
Kotlin
class MyActivity : Activity() { private lateinit var devicePerformance: DevicePerformance override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Note: Good app architecture is to use a dependency framework. See // https://developer.android.com/training/dependency-injection for more // information. devicePerformance = (application as MyApplication).devicePerformance } override fun onResume() { super.onResume() when { devicePerformance.mediaPerformanceClass >= Build.VERSION_CODES.TIRAMISU -> { // Performance class level 13 and later. // Provide the most premium experience for the 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
class MyActivity extends Activity { private DevicePerformance devicePerformance; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Note: Good app architecture is to use a dependency framework. See // https://developer.android.com/training/dependency-injection for more // information. devicePerformance = ((MyApplication) getApplication()).devicePerformance; } @Override public void onResume() { super.onResume(); if (devicePerformance.getMediaPerformanceClass() >= Build.VERSION_CODES.TIRAMISU) { // Performance class level 13 and later. // Provide the most premium experience for the 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 14 de rendimiento
La clase 14 de rendimiento se basa en los requisitos ingresados en la clase 13 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 13, el CDD especifica requisitos en las siguientes áreas:
Contenido multimedia
- Compatibilidad con el efecto de grano de película en decodificadores de hardware de AV1
- Perfil de Baseline de AVIF
- Rendimiento del codificador AV1
- Códecs de video HDR
- Formato de color RGBA_1010102
- Muestreo de texturas YUV
- Calidad de codificación de video
- Mezcla de audio multicanal
Cámara
- Extensión Modo nocturno
- Cámara principal compatible con HDR
- Modo panorámico de detección de rostro
Genérico
- Superposiciones de hardware
- Pantalla HDR
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 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 de uso 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.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Tiempo de inicio de la app