La classe di prestazioni è uno standard introdotto per la prima volta in Android 12. Una classe di prestazioni definisce un insieme di funzionalità del dispositivo che vanno oltre i requisiti di base di Android.
Ogni versione di Android ha la propria classe di prestazioni corrispondente, che è definita nel Compatibility Definition Document (CDD) di quella versione. La suite di test di compatibilità Android (CTS) verifica i requisiti del CDD.
Ogni dispositivo Android dichiara la classe di prestazioni supportata. Gli sviluppatori possono trovare la classe di prestazioni del dispositivo in fase di esecuzione e offrire esperienze di upgrade che sfruttano al meglio le funzionalità del dispositivo.
Per trovare il livello della classe di prestazioni di un dispositivo, utilizza la libreria Core Performance di Jetpack. Questa libreria riporta il livello della classe di prestazioni multimediali (MPC) del dispositivo come dichiarato nelle informazioni sulla versione della build o in base ai dati di Google Play Services.
Inizia aggiungendo una dipendenza per i moduli pertinenti nel file 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'
Poi, crea un'istanza di un'implementazione di DevicePerformance
, ad esempio PlayServicesDevicePerformance
, nell'evento del ciclo di vita onCreate()
di Application
. Questa operazione deve essere eseguita solo una volta nella tua 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); } }
Puoi quindi recuperare la proprietà mediaPerformanceClass
per personalizzare l'esperienza della tua app in base alle funzionalità 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. } } }
I livelli della classe di rendimento sono compatibili con le versioni future. Un dispositivo può eseguire l'upgrade a una versione della piattaforma più recente senza aggiornare la classe di prestazioni. Ad esempio, un dispositivo che supporta inizialmente la classe di prestazioni 33 può eseguire l'upgrade ad Android 14 e continuare a segnalare il supporto della classe di prestazioni 33 se non soddisfa i requisiti della classe di prestazioni 34. In questo modo è possibile raggruppare i dispositivi senza dover fare affidamento su una determinata versione di Android.
Classe di rendimento media 35
MPC 35 è stato introdotto in Android 15 e si basa sui requisiti introdotti in MPC 34. I requisiti specifici di MPC 35 sono pubblicati nel CDD di Android 15. Oltre all'aumento dei requisiti per gli articoli dell'MPC 34, il CDD specifica i requisiti nelle seguenti aree:
Contenuti multimediali
- Perdite di frame durante la decodifica
- Modifica HDR
- Aspetti del colore dinamico
- Proporzioni verticali
Fotocamera
- JPEG_R
- Stabilizzazione dell'anteprima
Grafica
- Estensioni EGL
- Strutture Vulkan
Classe di rendimento dei media 34
MPC 34 è stato introdotto in Android 14 e si basa sui requisiti introdotti in MPC 33. I requisiti specifici di MPC 34 sono pubblicati nel CDD di Android 14. Oltre all'aumento dei requisiti per gli articoli dell'MPC 33, il CDD specifica i requisiti nelle seguenti aree:
Contenuti multimediali
- Supporto dell'effetto grana nei decodificatori hardware AV1
- Profilo di riferimento AVIF
- Prestazioni dell'encoder AV1
- Codec video HDR
- Formato colore RGBA_1010102
- Campionamento delle texture YUV
- Qualità della codifica video
- Mixaggio audio multicanale
Fotocamera
- Estensione della modalità notturna
- Fotocamera principale compatibile con HDR
- Modalità Scena con rilevamento dei volti
Generali
- Overlay hardware
- Display HDR
Classe di rendimento dei media 33
MPC 33 è stato introdotto in Android 13 e si basa sui requisiti introdotti in MPC 31. I requisiti specifici di MPC 33 sono pubblicati nel CDD di Android 13. Oltre all'aumento dei requisiti per gli articoli dell'MPC 31, il CDD specifica i requisiti nelle seguenti aree:
Contenuti multimediali
- Decodificatore hardware AV1
- Decodificatori hardware sicuri
- Latenza di inizializzazione del decodificatore
- Latenza audio di andata e ritorno
- Cuffie con cavo e dispositivi audio USB
- Dispositivi MIDI
- Trusted Execution Environment basato sull'hardware
Fotocamera
- Stabilizzazione dell'anteprima
- Registrazione in slow motion
- Rapporto di zoom minimo per le fotocamere ultrawide
- Videocamera simultanea
- Multicamera logica
- Caso d'uso di Stream
Classe di rendimento dei media 31
MPC 31 è stato introdotto in Android 12. I requisiti specifici di MPC 31 sono pubblicati nel CDD di Android 12. Il CDD specifica i requisiti nelle seguenti aree:
Contenuti multimediali
- Sessioni di codec video simultanee
- Latenza di inizializzazione del codificatore
- Perdite di frame del decodificatore
- Qualità di codifica
Fotocamera
- Risoluzione e frequenza fotogrammi
- Latenze di avvio e acquisizione
FULL
o un livello hardware migliore- L'origine del timestamp è in tempo reale
- Supporto RAW
Generali
- Memoria
- Prestazioni di lettura e scrittura
- Risoluzione dello schermo
- Densità schermo
Classe di rendimento dei media 30
MPC 30 include un sottoinsieme dei requisiti per MPC 31, consentendo agli sviluppatori di offrire un'esperienza personalizzata su dispositivi precedenti, ma ancora molto capaci. I requisiti specifici della classe di prestazioni sono pubblicati nel CDD di Android 11.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Tempi di avvio dell'app