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 gereksinimlerinin ötesine geçen bir dizi cihaz özelliğini tanımlar.

Android'in her sürümüne karşılık gelen kendi performans sınıfı bulunur. Bu sınıf, ilgili sürümün Android Uyumluluk Tanımı Belgesi (CDD) bölümünde tanımlanmıştır. Android Uyumluluğu Test Paketi (CTS) CidD gereksinimlerini doğrular.

Android destekli 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 daha yüksek deneyimler sunabilir.

Bir cihazın performans sınıfı düzeyini bulmak için Jetpack Temel Performans kitaplığını kullanın. Bu kitaplık, cihazın medya performansı sınıfını derleme sürümü bilgilerinde belirtilen veya Google Play hizmetlerindeki verilere dayalı olarak bildirir.

Gradle dosyanızdaki 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-beta02")
// Enable APIs to query Google Play Services for performance class.
implementation("androidx.core:core-performance-play-services:1.0.0-beta02")

Modern

// 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-beta02'
// Enable APIs to query Google Play Services for performance class.
implementation 'androidx.core:core-performance-play-services:1.0.0-beta02'

Then, create an instance of a DevicePerformance implementation, such as PlayServicesDevicePerformance, in the onCreate() lifecycle event of your Application. This should only be done once in your 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);
  }
}

Daha sonra, uygulama deneyiminizi cihazın özelliklerine göre özelleştirmek için mediaPerformanceClass özelliğini 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.TIRAMISU -> {
        // Performance class level 13 and later.
        // Provide the most premium experience for the highest performing devices.
      }
      devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.S -> {
        // Performance class level 12.
        // Provide a high quality experience.
      }
      else -> {
        // Performance class level 11 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.TIRAMISU) {
      // Performance class level 13 and later.
      // Provide the most premium experience for the highest performing devices.
    } else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.S) {
      // Performance class level 12.
      // Provide a high quality experience.
    } else {
      // Performance class level 11 or undefined.
      // Remove extras to keep experience functional.
    }
  }
}

Performans sınıfları ileriye dönük uyumludur. Cihazlar, performans sınıfını güncellemeden daha yeni bir platform sürümüne geçebilir. Örneğin, başlangıçta performans sınıfı 12'yi destekleyen bir cihaz Android 13'e yükseltilebilir ve 13. sınıf gereksinimlerini karşılamıyorsa cihazın 12. sınıf gereksinimlerini karşılamadığını bildirmeye devam edebilir. Bu, performans sınıfının belirli bir Android sürümüne bağlı kalmadan cihazları gruplandırmak için bir yol sağladığı anlamına gelir.

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

Performans sınıfı 14

14. performans sınıfı, 13. performans sınıfında belirtilen koşulları temel alır. Belirli performans sınıfı gereksinimleri Android CDD'de yayınlanır. CDD, performans sınıfı 13'teki öğeler için artan gereksinimlere ek olarak aşağıdaki alanlarda gereklilikler belirtir:

Medya

  • AV1 donanım kod çözücülerinde film greni efekti desteği
  • AVIF Temel Profili
  • AV1 kodlayıcı performansı
  • HDR video codec'leri
  • RGBA_1010102 renk biçimi
  • YUV doku örneklemesi
  • Video kodlama kalitesi
  • Çok kanallı ses miksleme

Kamera

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

Genel

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

Performans sınıfı 13

13. performans sınıfı, 12. performans sınıfında belirtilen koşulları temel alır. Belirli performans sınıfı gereksinimleri Android CDD'de yayınlanır. CDD, performans sınıfı 12'deki öğeler için artan gereksinimlere ek olarak aşağıdaki alanlarda gereklilikler belirtir:

Medya

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

Kamera

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

Performans sınıfı 12

12. performans sınıfı, medya kullanım alanlarına odaklanır. Belirli performans sınıfı gereksinimleri Android CDD'de yayınlanır. CDD, aşağıdaki alanlara yönelik gereksinimleri belirtir:

Medya

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

Kamera

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

Genel

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

Performans sınıfı 11

11. performans sınıfı, 12 performans sınıfı gereksinimlerinin bir alt kümesini içerir ve geliştiricilerin daha eski ancak yüksek özellikli cihazlarda özel bir deneyim sunmasını sağlar. Belirli performans sınıfı gereksinimleri Android CDD'de yayınlanır.