Class performa

Class performa adalah standar pertama yang diperkenalkan di Android 12. Class performa menentukan serangkaian kemampuan perangkat yang tidak sekadar memenuhi persyaratan dasar Android.

Setiap versi Android memiliki class performanya masing-masing yang ditentukan dalam Compatibility Definition Document (CDD) Android versi tersebut. Compatibility Test Suite (CTS) Android memverifikasi persyaratan CDD.

Setiap perangkat yang didukung Android mendeklarasikan class performa yang didukungnya. Developer dapat menemukan class performa perangkat saat runtime dan memberikan upgrade pengalaman guna memanfaatkan kemampuan perangkat secara penuh.

Untuk menemukan level class performa perangkat, gunakan library Jetpack Core Performance. Library ini melaporkan level class performa media (MPC) perangkat seperti yang dideklarasikan dalam informasi versi build atau berdasarkan data dari layanan Google Play.

Mulailah dengan menambahkan dependensi untuk modul yang relevan dalam file gradle Anda:

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' 

Kemudian, buat instance implementasi DevicePerformance, seperti PlayServicesDevicePerformance, dalam peristiwa siklus proses onCreate() dari Application. Hal ini hanya boleh dilakukan sekali di aplikasi Anda.

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);   } }

Selanjutnya, Anda dapat mengambil properti mediaPerformanceClass untuk menyesuaikan pengalaman aplikasi berdasarkan kemampuan perangkat:

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.     }   } }

Tingkat class performa kompatibel dengan versi yang lebih baru. Perangkat dapat melakukan upgrade ke versi platform yang lebih baru tanpa mengupdate class performanya. Misalnya, perangkat yang awalnya mendukung class performa 33 dapat meng-upgrade versi ke Android 14 dan terus melaporkannya untuk mendukung class performa 33 jika tidak memenuhi persyaratan class performa 34. Hal ini memungkinkan pengelompokan perangkat tanpa bergantung pada versi Android tertentu.

Gambar 1. Perangkat dapat mengupgrade versi Android dan terus melaporkan bahwa perangkat tersebut mendukung class yang awalnya didukung.

Class Performa Media 35

MPC 35 diperkenalkan di Android 15 dan dibuat berdasarkan persyaratan yang diperkenalkan di MPC 34. Persyaratan MPC 35 tertentu dipublikasikan di CDD Android 15. Selain meningkatkan persyaratan untuk item dari MPC 34, CDD ini akan menentukan persyaratan baru dalam area berikut:

Media

  • Penurunan frame decoding
  • Pengeditan HDR
  • Aspek warna dinamis
  • Rasio aspek potret

Kamera

  • JPEG_R
  • Stabilisasi pratinjau

Grafik

  • Ekstensi EGL
  • Struktur Vulkan

Class Performa Media 34

MPC 34 diperkenalkan di Android 14 dan dibuat berdasarkan persyaratan yang diperkenalkan di MPC 33. Persyaratan MPC 34 tertentu dipublikasikan di CDD Android 14. Selain meningkatkan persyaratan untuk item dari MPC 33, CDD ini akan menentukan persyaratan baru dalam area berikut:

Media

  • Dukungan efek film grain dalam decoder hardware AV1
  • Profil Dasar Pengukuran AVIF
  • Performa encoder AV1
  • Codec video HDR
  • Format warna RGBA_1010102
  • Pengambilan sampel tekstur YUV
  • Kualitas encoding video
  • Mixing audio multisaluran

Kamera

  • Ekstensi mode malam
  • Kamera utama berkemampuan HDR
  • Mode adegan deteksi wajah

Umum

  • Overlay hardware
  • Layar HDR

Class Performa Media 33

MPC 33 diperkenalkan di Android 13 dan dibuat berdasarkan persyaratan yang diperkenalkan di MPC 31. Persyaratan MPC 33 tertentu dipublikasikan di CDD Android 13. Selain meningkatkan persyaratan untuk item dari MPC 31, CDD ini akan menentukan persyaratan dalam area berikut:

Media

  • Decoder hardware AV1
  • Decoder hardware aman
  • Latensi inisialisasi decoder
  • Latensi audio bolak-balik
  • Headset berkabel dan perangkat audio USB
  • Perangkat MIDI
  • Trusted execution environment yang didukung hardware

Kamera

  • Stabilisasi pratinjau
  • Perekaman gerakan lambat
  • Rasio zoom minimum untuk kamera ultrawide
  • Kamera serentak
  • Multi-kamera logis
  • Kasus penggunaan streaming

Class Performa Media 31

MPC 31 diperkenalkan di Android 12. Persyaratan MPC 31 tertentu dipublikasikan di CDD Android 12. CDD menentukan persyaratan di area berikut:

Media

  • Sesi codec video serentak
  • Latensi inisialisasi encoder
  • Penurunan frame decoder
  • Kualitas encoding

Kamera

  • Resolusi dan kecepatan frame
  • Latensi startup dan pengambilan gambar
  • FULL atau level hardware yang lebih baik
  • Sumber stempel waktu bersifat realtime
  • Kemampuan RAW

Umum

  • Memori
  • Performa operasi baca dan tulis
  • Resolusi layar
  • Kepadatan layar

Class Performa Media 30

MPC 30 menyertakan subset persyaratan untuk MPC 31, sehingga developer dapat memberikan pengalaman yang disesuaikan di perangkat yang lebih awal tetapi masih memiliki kemampuan tinggi. Persyaratan class performa tertentu dipublikasikan di CDD Android 11.