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 la classe de performance multimédia de l'appareil telle qu'indiquée 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'
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); } }
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.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. } } }
Les classes 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 12 peut passer à Android 13 et continuer à signaler qu'il accepte la classe 12 s'il ne répond pas aux exigences de la classe 13. Une classe de performance permet donc de regrouper des appareils sans dépendre d'une version spécifique d'Android.
Classe de performance 14
La classe de performance 14 s'appuie sur les exigences de la classe de performance 13. Les exigences spécifiques de la classe de performance sont publiées dans le CDD Android. En plus des exigences accrues liées aux éléments de la classe de performance 13, le CDD spécifie de nouvelles exigences dans les domaines suivants :
Multimédia
- 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érique
- Superpositions matérielles
- Écran HDR
Classe de performance 13
La classe de performance 13 s'appuie sur les exigences de la classe de performance 12. Les exigences spécifiques de la classe de performance sont publiées dans le CDD Android. En plus des exigences accrues liées aux éléments de la classe de performance 12, le CDD spécifie de nouvelles exigences dans les domaines suivants :
Multimédia
- 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 performance 12
La classe de performance 12 est axée sur les cas d'utilisation multimédia. Les exigences spécifiques de la classe de performance sont publiées dans le CDD Android. 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érique
- Mémoire
- Performances de lecture et d'écriture
- Résolution d'écran
- Densité d'écran
Classe de performance 11
La classe de performance 11 comprend un sous-ensemble des exigences de la classe de performance 12 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.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé.
- Temps de démarrage de l'appli