Klasa wydajności to standard wprowadzony po raz pierwszy w Androidzie 12. Klasa wydajności określa zestaw funkcji urządzenia, który wykracza poza podstawowe wymagania Androida.
Każda wersja Androida ma swoją klasę wydajności, która jest zdefiniowana w dokumentacji zdefiniowanej zgodności Androida (CDD). Kompatybilność z Androidem – testy CTS weryfikuje zgodność z CDD.
Każde urządzenie z Androidem deklaruje klasę wydajności, którą obsługuje. Deweloperzy mogą w czasie działania aplikacji określić klasę wydajności urządzenia i zapewnić ulepszone wrażenia, które w pełni wykorzystują możliwości urządzenia.
Aby znaleźć poziom klasy wydajności urządzenia, użyj biblioteki Jetpacka Core Performance. Ta biblioteka raportuje poziom klasy wydajności multimediów (MPC) urządzenia zgodnie z deklaracją w informacjach o wersji kompilacji lub na podstawie danych z usług Google Play.
Zacznij od dodania zależności dla odpowiednich modułów w pliku 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'
Następnie utwórz instancję implementacji DevicePerformance
, np. PlayServicesDevicePerformance
, w zdarzeniu cyklu życia Application
onCreate()
. Wystarczy skonfigurować to raz w aplikacji.
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); } }
Następnie możesz pobrać usługę mediaPerformanceClass
, aby dostosować działanie aplikacji do możliwości urządzenia:
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. } } }
Poziomy klasy wydajności są zgodne wstecz. Urządzenie może przejść na nowszą wersję platformy bez aktualizacji klasy wydajności. Na przykład urządzenie, które początkowo obsługuje klasę wydajności 33, może zostać uaktualnione do Androida 14 i nadal zgłaszać, że obsługuje klasę wydajności 33, jeśli nie spełnia wymagań klasy wydajności 34. Umożliwia to grupowanie urządzeń bez konieczności korzystania z konkretnej wersji Androida.
Klasa skuteczności mediów 35
MPC 35 zostało wprowadzone w Androidzie 15 i rozwija wymagania wprowadzone w MPC 34. Wymagania MPC 35 są publikowane w specyfikacji CDD Androida 15. Oprócz zwiększonych wymagań dotyczących elementów z MPC 34 dokument CDD zawiera wymagania dotyczące tych obszarów:
Multimedia
- Pominięte klatki podczas dekodowania
- Edytowanie HDR
- Dynamiczne aspekty kolorów
- Format obrazu w pionie
Aparat
- JPEG_R
- Stabilizacja podglądu
Grafika
- Rozszerzenia EGL
- Struktury Vulkan
Klasa skuteczności kampanii w mediach 34
MPC 34 zostało wprowadzone w Androidzie 14 i rozwija wymagania wprowadzone w MPC 33. Wymagania MPC 34 są publikowane w dokumentacji CDD Androida 14. Oprócz zwiększonych wymagań dotyczących elementów z MPC 33 dokument CDD zawiera wymagania dotyczące tych obszarów:
Multimedia
- Obsługa efektu ziarna filmu w dekoderach sprzętowych AV1
- Profil podstawowy AVIF
- Wydajność kodera AV1
- Kodek wideo HDR
- Format kolorów RGBA_1010102
- Próbkowanie tekstury YUV
- Jakość kodowania filmu
- Miksowanie dźwięku wielokanałowego
Aparat
- Rozszerzenie trybu nocnego
- Główny aparat obsługujący HDR
- Tryb wykrywania twarzy
Ogólne
- Nakładki sprzętowe
- Wyświetlacz HDR
Klasa skuteczności kampanii w mediach 33
MPC 33 zostało wprowadzone w Androidzie 13 i opiera się na wymaganiach wprowadzonych w MPC 31. Wymagania MPC 33 są publikowane w dokumentacji CDD Androida 13. Oprócz zwiększonych wymagań dotyczących elementów z MPC 31 dokument CDD określa wymagania w tych obszarach:
Multimedia
- dekoder sprzętowy AV1,
- Bezpieczne dekodery sprzętowe
- Opóźnienie inicjalizacji dekodera
- Opóźnienie dźwięku w obie strony
- Słuchawki przewodowe i urządzenia audio USB
- Urządzenia MIDI
- Zaufane środowisko wykonawcze obsługiwane przez sprzęt
Aparat
- Stabilizacja podglądu
- Nagrywanie w zwolnionym tempie
- Minimalny współczynnik powiększenia w przypadku ultraszerokokątnych aparatów
- Jednoczestnie używana kamera
- Logiczna wielokamera
- Przypadek użycia strumieniowego
Klasa Media Performance 31
MPC 31 zostało wprowadzone w Androidzie 12. Wymagania dotyczące MPC 31 są opublikowane w dokumentacji CDD Androida 12. Dokument CDD określa wymagania w tych obszarach:
Multimedia
- Równoczesne sesje kodeka wideo
- Opóźnienie inicjalizacji kodera
- Pominięte klatki dekodera
- Jakość kodowania
Aparat
- Rozdzielczość i liczba klatek
- Czasy uruchamiania i przechwytywania
FULL
lub wyższy poziom sprzętowy- Źródło sygnatury czasowej to „Czas rzeczywisty”
- Funkcja RAW
Ogólne
- Pamięć
- Wydajność odczytu i zapisu
- Rozdzielczość ekranu
- Gęstość ekranu
Klasa skuteczności mediów 30
MPC 30 zawiera podzbiór wymagań MPC 31, co pozwala deweloperom na dostosowanie aplikacji na starszych, ale nadal bardzo wydajnych urządzeniach. Wymagania dotyczące konkretnej klasy wydajności są publikowane w dokumentacji CDD Androida 11.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Czas uruchomienia aplikacji