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 el nivel de la clase de rendimiento del contenido multimedia (MPC) 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'
Luego, crea una instancia de una implementación de DevicePerformance
, como PlayServicesDevicePerformance
, en el evento de ciclo de vida onCreate()
de tu Application
. Esto solo debe hacerse una vez en tu 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.VANILLA_ICE_CREAM -> { // MPC level 35 and later. // Provide the most premium experience for the highest performing devices. } devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> { // MPC level 34. // Provide a high quality experience. } else -> { // MPC level 33, 31, 30, 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.VANILLA_ICE_CREAM) { // MPC level 35 and later. // Provide the most premium experience for the highest performing devices. } else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // MPC level 34. // Provide a high quality experience. } else { // MPC level 33, 31, 30, or undefined. // Remove extras to keep experience functional. } } }
Los niveles de 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 33 de rendimiento puede actualizarse a Android 14 y continuar informando que es compatible con la clase 33 si no cumple con los requisitos de la clase 34. Esto permite agrupar dispositivos sin depender de una versión particular de Android.
Clase 35 de rendimiento de los medios
MPC 35 se introdujo en Android 15 y se basa en los requisitos que se introdujeron en MPC 34. Los requisitos específicos de MPC 35 se publican en el CDD de Android 15. Además de los requisitos adicionales para los elementos del MPC 34, el CDD especifica requisitos en las siguientes áreas:
Contenido multimedia
- Pérdida de fotogramas de decodificación
- Edición HDR
- Aspectos de color dinámico
- Relación de aspecto vertical
Cámara
- JPEG_R
- Estabilización de versión preliminar
Gráficos
- Extensiones de EGL
- Estructuras de Vulkan
Clase 34 de rendimiento de los medios
MPC 34 se introdujo en Android 14 y se basa en los requisitos que se introdujeron en MPC 33. Los requisitos específicos de MPC 34 se publican en el CDD de Android 14. Además de los requisitos adicionales para los elementos del MPC 33, 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
General
- Superposiciones de hardware
- Pantalla HDR
Clase 33 de rendimiento de los medios
MPC 33 se introdujo en Android 13 y se basa en los requisitos que se introdujeron en MPC 31. Los requisitos específicos de MPC 33 se publican en el CDD de Android 13. Además de los requisitos adicionales para los elementos del MPC 31, 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 31 de rendimiento de los medios
MPC 31 se introdujo en Android 12. Los requisitos específicos de MPC 31 se publican en el CDD de Android 12. 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
General
- Memoria
- Rendimiento de lectura y escritura
- Resolución de pantalla
- Densidad de pantalla
Clase 30 de rendimiento de los medios
MPC 30 incluye un subconjunto de los requisitos de MPC 31, 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 11.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Tiempo de inicio de la app