Performans sınıfı

Performans sınıfı, ilk olarak Android 12'de kullanıma sunulan bir standarttır. Performans sınıfı, Android'in temel şartlarından daha fazlasını karşılayan bir dizi cihaz özelliğini tanımlar.

Android'in her sürümünün, ilgili sürümün Android Uyumluluk Tanımlama Belgesi'nde (CDD) tanımlanan kendi performans sınıfı vardır. Android Uyumluluk Test Paketi (CTS), CDD şartlarını doğrular.

Android işletim sistemli her cihaz, desteklediği performans sınıfını belirtir. Geliştiriciler, cihazın performans sınıfını çalışma zamanında bulabilir ve cihazın özelliklerinden tam olarak yararlanan gelişmiş deneyimler sunabilir.

Bir cihazın performans sınıfı düzeyini bulmak için Jetpack Core Performance kitaplığını kullanın. Bu kitaplık, cihazın medya performans sınıfını (MPC) derleme sürümü bilgilerinde belirtildiği şekilde veya Google Play Hizmetleri'nden alınan verilere göre raporlar.

Gradle dosyanıza ilgili modüller için bir bağımlılık ekleyerek başlayın:

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'

Ardından, Application öğenizin onCreate() yaşam döngüsü etkinliğinde PlayServicesDevicePerformance gibi bir DevicePerformance uygulama örneği oluşturun. Bu işlem, uygulamanızda yalnızca bir kez yapılmalıdır.

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

Ardından, uygulamanızın deneyimini cihazın özelliklerine göre uyarlamak için mediaPerformanceClass mülkünü alabilirsiniz:

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

Performans sınıfı seviyeleri ileriye dönük uyumludur. Cihazlar, performans sınıfını güncellemeden daha yeni bir platform sürümüne yükseltilebilir. Örneğin, başlangıçta performans sınıfı 33'ü destekleyen bir cihaz, Android 14'e yükseltilebilir ve performans sınıfı 34 şartlarını karşılamıyorsa performans sınıfı 33'ü desteklediğini bildirmeye devam edebilir. Bu sayede, belirli bir Android sürümüne bağlı kalmadan cihazları gruplandırabilirsiniz.

Şekil 1. Cihazlar Android sürümlerini yükseltebilir ve başlangıçta destekledikleri sınıfı desteklediklerini bildirmeye devam edebilir.

Medya Performansı Sınıfı 35

Android 15'te kullanıma sunulan MPC 35, MPC 34'te sunulan şartları temel alır. MPC 35 ile ilgili belirli şartlar Android 15 CDD'de yayınlanmıştır. CDD, MPC 34'teki öğelerle ilgili artan şartlara ek olarak aşağıdaki alanlarda da şartlar belirtir:

Medya

  • Atlanan karelerin kodunu çözme
  • HDR düzenleme
  • Dinamik renk özellikleri
  • Dikey en boy oranı

Kamera

  • JPEG_R
  • Sabitlemeyi önizleme

Grafik

  • EGL uzantıları
  • Vulkan yapıları

Medya Performansı Sınıfı 34

Android 14'te kullanıma sunulan MPC 34, MPC 33'te sunulan şartları temel alır. MPC 34'e özgü şartlar Android 14 CDD'de yayınlanmıştır. CDD, MPC 33'teki öğeler için artan şartlara ek olarak aşağıdaki alanlarda da şartlar belirtir:

Medya

  • AV1 donanım kod çözücülerinde film tanecik etkisi desteği
  • AVIF taban profili
  • AV1 kodlayıcı performansı
  • HDR video codec'leri
  • RGBA_1010102 renk biçimi
  • YUV doku örnekleme
  • Video kodlama kalitesi
  • Çok kanallı ses karıştırma

Kamera

  • Gece modu uzantısı
  • HDR özellikli birincil kamera
  • Yüz algılama sahne modu

Genel

  • Donanım yer paylaşımları
  • HDR ekran

Medya Performansı Sınıfı 33

MPC 33, Android 13'te kullanıma sunulmuştur ve MPC 31'de kullanıma sunulan şartları temel alır. MPC 33'e özgü şartlar Android 13 CDD'de yayınlanmıştır. CDD, MPC 31'deki öğeler için artan şartlara ek olarak aşağıdaki alanlarda da şartlar belirtir:

Medya

  • AV1 donanım kod çözücü
  • Güvenli donanım kod çözücüler
  • Kod çözücü başlatma gecikmesi
  • Giden ve gelen ses gecikmesi
  • Kablolu mikrofonlu kulaklıklar ve USB ses cihazları
  • MIDI cihazları
  • Donanım destekli güvenilir yürütme ortamı

Kamera

  • Sabitlemeyi önizleme
  • Ağır çekim kayıt
  • Ultra geniş kameralar için minimum yakınlaştırma oranı
  • Eşzamanlı kamera
  • Mantıksal çoklu kamera
  • Akış kullanım alanı

Medya Performansı Sınıfı 31

MPC 31, Android 12'de kullanıma sunulmuştur. MPC 31 ile ilgili şartlar Android 12 CDD'de yayınlanmıştır. CDD, aşağıdaki alanlarda koşulları belirtir:

Medya

  • Eşzamanlı video codec'i oturumları
  • Kodlayıcı başlatma gecikmesi
  • Kod çözücü kare atlamaları
  • Kodlama kalitesi

Kamera

  • Çözünürlük ve kare hızı
  • Başlatma ve yakalama gecikmeleri
  • FULL veya daha iyi donanım düzeyi
  • Zaman damgası kaynağı gerçek zamanlı
  • RAW işlevi

Genel

  • Bellek
  • Okuma ve yazma performansı
  • Ekran çözünürlüğü
  • Ekran yoğunluğu

Medya Performansı Sınıfı 30

MPC 30, MPC 31'e yönelik gereksinimlerin bir alt kümesini içerir. Bu sayede geliştiriciler, eski ancak yine de yüksek kapasiteli cihazlarda özelleştirilmiş bir deneyim sunabilir. Belirli performans sınıfı koşulları Android 11 CDD'de yayınlanmıştır.