La classe de performance est un standard introduit dans Android 12. Elle définit un ensemble de fonctionnalités de l'appareil qui va au-delà des exigences de base d'Android.
Chaque version d'Android dispose de sa propre classe de performance, qui est définie dans le document de définition de compatibilité (CDD) Android. L'outil Compatibility Test Suite (CTS) Android vérifie les exigences liées au CDD.
Chaque appareil Android déclare la classe de performance prise en charge. Les développeurs peuvent découvrir la classe de performance de l'appareil au moment de l'exécution et proposer des expériences améliorées qui exploitent pleinement ses fonctionnalités.
Pour découvrir le niveau de performance d'un appareil, utilisez la bibliothèque Jetpack Core Performance. Cette bibliothèque indique le niveau de la classe de performance multimédia (MPC) de l'appareil tel qu'indiqué dans les informations sur la version de build ou en fonction des données des services Google Play.
Commencez par ajouter une dépendance pour les modules pertinents dans votre fichier 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'
Ensuite, créez une instance d'une implémentation DevicePerformance
, telle que PlayServicesDevicePerformance
, dans l'événement de cycle de vie onCreate()
de votre Application
: Cette opération ne doit être effectuée qu'une seule fois dans votre application.
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); } }
Vous pouvez ensuite récupérer la propriété mediaPerformanceClass
pour personnaliser l'expérience de votre application selon les fonctionnalités de l'appareil :
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. } } }
Les niveaux de classe de performances sont rétrocompatibles. Un appareil peut passer à une version plus récente sans mettre à jour sa classe de performance. Par exemple, un appareil qui est initialement compatible avec la classe de performance 33 peut passer à Android 14 et continuer à signaler qu'il accepte la classe de performance 33 s'il ne répond pas aux exigences de la classe de performance 34. Cela permet de regrouper des appareils sans dépendre d'une version spécifique d'Android.
Classe de performances multimédias 35
MPC 35 a été introduit dans Android 15 et s'appuie sur les exigences introduites dans MPC 34. Les exigences spécifiques de la MPC 35 sont publiées dans le CDD Android 15. En plus des exigences accrues liées aux éléments de la MPC 34, le CDD spécifie de nouvelles exigences dans les domaines suivants:
Contenus multimédias
- Pertes de trames de décodage
- Retouche HDR
- Aspects de couleur dynamiques
- Format portrait
Appareil photo
- JPEG_R
- Stabilisation de l'aperçu
Graphiques
- Extensions EGL
- Structures Vulkan
Classe de performances multimédias 34
Le MPC 34 a été introduit dans Android 14 et s'appuie sur les exigences introduites dans le MPC 33. Les exigences spécifiques de la MPC 34 sont publiées dans le CDD Android 14. En plus des exigences accrues liées aux éléments de la MPC 33, le CDD spécifie de nouvelles exigences dans les domaines suivants:
Contenus multimédias
- Prise en charge de l'effet film grain dans les décodeurs matériels AV1
- Profil de référence AVIF
- Performances de l'encodeur AV1
- Codecs vidéo HDR
- Format de couleurs RGBA_1010102
- Échantillonnage de texture YUV
- Qualité d'encodage vidéo
- Mélangeur audio multicanal
Appareil photo
- Extension mode Nuit
- Appareil photo principal compatible HDR
- Mode Scène avec détection des visages
Général
- Superpositions matérielles
- Écran HDR
Classe de performances multimédias 33
MPC 33 a été introduit dans Android 13 et s'appuie sur les exigences introduites dans MPC 31. Les exigences spécifiques de la MPC 33 sont publiées dans le CDD Android 13. En plus des exigences accrues liées aux éléments de la MPC 31, le CDD spécifie de nouvelles exigences dans les domaines suivants:
Contenus multimédias
- Décodeur matériel AV1
- Décodeurs matériels sécurisés
- Latence d'initialisation du décodeur
- Latence audio aller-retour
- Casques filaires et périphériques audio USB
- Appareils MIDI
- Environnement d'exécution sécurisé basé sur le matériel
Appareil photo
- Stabilisation de l'aperçu
- Enregistrement au ralenti
- Taux de zoom minimal pour les caméras ultra grand angle
- Caméra simultanée
- Multicaméra logique
- Cas d'utilisation des flux
Classe de performances multimédias 31
MPC 31 a été introduit dans Android 12. Les exigences spécifiques de MPC 31 sont publiées dans le CDD Android 12. Le CDD spécifie les exigences dans les domaines suivants :
Multimédia
- Sessions simultanées de codec vidéo
- Latence d'initialisation de l'encodeur
- Abandons de trame du décodeur
- Qualité d'encodage
Appareil photo
- Résolution et fréquence d'images
- Latences de démarrage et de capture
FULL
ou niveau de matériel supérieur- Source d'horodatage en temps réel
- Capacité RAW
Général
- Mémoire
- Performances de lecture et d'écriture
- Résolution d'écran
- Densité d'écran
Classe de performances multimédias 30
MPC 30 comprend un sous-ensemble des exigences de MPC 31 et permet aux développeurs d'offrir une expérience personnalisée sur des appareils anciens, mais toujours hautement performants. Les exigences spécifiques de la classe de performance sont publiées dans le CDD Android 11.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé.
- Temps de démarrage de l'appli