Die Leistungsklasse ist ein Standard, der erstmals in Android 12 eingeführt wurde. Eine Leistungsklasse definiert eine Reihe von Gerätefunktionen, die über die Mindestanforderungen von Android hinausgehen.
Jede Android-Version hat eine eigene Leistungsklasse, die im Android Compatibility Definition Document (CDD) dieser Version definiert ist. Die Android Compatibility Test Suite (CTS) prüft die CDD-Anforderungen.
Jedes Android-Gerät deklariert die von ihm unterstützte Leistungsklasse. Entwickler können die Leistungsklasse des Geräts zur Laufzeit ermitteln und optimierte Funktionen bereitstellen, die die Möglichkeiten des Geräts voll ausschöpfen.
Verwenden Sie die Core Performance-Bibliothek von Jetpack, um die Leistungsklasse eines Geräts zu ermitteln. Diese Bibliothek gibt die MPC-Ebene (Media Performance Class) des Geräts an, wie in den Informationen zur Buildversion angegeben oder basierend auf Daten aus den Google Play-Diensten.
Fügen Sie zuerst eine Abhängigkeit für die relevanten Module in Ihrer Gradle-Datei hinzu:
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'
Erstellen Sie dann eine Instanz einer DevicePerformance
-Implementierung, z. B. PlayServicesDevicePerformance
, im Lebenszyklusereignis onCreate()
Ihrer Application
. Dies sollte nur einmal in Ihrer App geschehen.
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); } }
Sie können dann die mediaPerformanceClass
-Property abrufen, um die App an die Funktionen des Geräts anzupassen:
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. } } }
Leistungsklassen sind zukunftssicher. Ein Gerät kann auf eine neuere Plattformversion umgestellt werden, ohne dass die Leistungsklasse aktualisiert wird. Ein Gerät, das ursprünglich die Leistungsklasse 33 unterstützt, kann beispielsweise auf Android 14 umgestellt werden und weiterhin melden, dass es die Leistungsklasse 33 unterstützt, wenn es die Anforderungen der Leistungsklasse 34 nicht erfüllt. So können Sie Geräte gruppieren, ohne sich auf eine bestimmte Android-Version verlassen zu müssen.
Leistungsklasse für Medien – 35
MPC 35 wurde in Android 15 eingeführt und basiert auf den Anforderungen von MPC 34. Die spezifischen MPC 35-Anforderungen sind im CDD für Android 15 veröffentlicht. Neben den erhöhten Anforderungen für Artikel aus MPC 34 werden in der CDD Anforderungen in den folgenden Bereichen festgelegt:
Medien
- Decoding-Frame-Ausfälle
- HDR-Bearbeitung
- Dynamische Farbaspekte
- Seitenverhältnis für Hochformat
Kamera
- JPEG_R
- Stabilisierung der Vorschau
Grafik
- EGL-Erweiterungen
- Vulkanische Strukturen
Leistungsklasse für Medien – 34
MPC 34 wurde in Android 14 eingeführt und baut auf den Anforderungen von MPC 33 auf. Die spezifischen MPC 34-Anforderungen sind im CDD für Android 14 veröffentlicht. Neben den erhöhten Anforderungen für Artikel aus MPC 33 werden in der CDD Anforderungen in den folgenden Bereichen festgelegt:
Medien
- Unterstützung des Filmkorneffekts in AV1-Hardwaredekodern
- AVIF-Baseline-Profil
- Leistung des AV1-Encoders
- HDR-Video-Codecs
- Farbformat RGBA_1010102
- YUV-Texturstichproben
- Qualität der Videocodierung
- Mehrkanal-Audiomix
Kamera
- Nachtmoduserweiterung
- HDR-fähige Hauptkamera
- Motivmodus „Gesichtserkennung“
Allgemein
- Hardware-Overlays
- HDR-Display
Leistungsklasse für Medien – 33
MPC 33 wurde in Android 13 eingeführt und baut auf den Anforderungen auf, die in MPC 31 eingeführt wurden. Die spezifischen MPC 33-Anforderungen sind im CDD für Android 13 veröffentlicht. Zusätzlich zu den erhöhten Anforderungen für Artikel aus MPC 31 werden in der CDD Anforderungen in den folgenden Bereichen festgelegt:
Medien
- AV1-Hardware-Decoder
- Sichere Hardware-Decoder
- Latenz bei der Decoderinitialisierung
- Audio-Umlauflatenz
- Kabelgebundene Headsets und USB-Audiogeräte
- MIDI-Geräte
- Hardwaregestützte vertrauenswürdige Ausführungsumgebung
Kamera
- Stabilisierung der Vorschau
- Zeitlupenaufnahme
- Minimales Zoomverhältnis für Ultraweitwinkelkameras
- Gleichzeitige Kamera
- Logische Mehrfachkamera
- Anwendungsfall für Streams
Media Performance Class 31
MPC 31 wurde in Android 12 eingeführt. Die spezifischen MPC 31-Anforderungen sind im Android 12-CDD veröffentlicht. Die CDD legt Anforderungen in den folgenden Bereichen fest:
Medien
- Gleichzeitige Videocodec-Sitzungen
- Latenz bei der Encoder-Initialisierung
- Decoder-Frame-Ausfälle
- Codierungsqualität
Kamera
- Auflösung und Framerate
- Start- und Erfassungslatenz
FULL
oder höher- Zeitstempelquelle ist „Echtzeit“
- RAW-Unterstützung
Allgemein
- Arbeitsspeicher
- Lese- und Schreibleistung
- Displayauflösung
- Bildschirmdichte
Media Performance Class 30
MPC 30 umfasst einen Teil der Anforderungen für MPC 31. So können Entwickler eine individuelle Nutzung auf älteren, aber dennoch leistungsfähigen Geräten ermöglichen. Die spezifischen Anforderungen für die Leistungsklasse sind im CDD für Android 11 veröffentlicht.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- App-Startzeit