Performance-Klasse

Die Performance-Klasse ist ein Standard, der erstmals mit Android 12 eingeführt wurde. Eine Leistungsklasse definiert eine Reihe von Gerätefunktionen, die über die Grundanforderungen von Android hinausgehen.

Jede Android-Version hat eine eigene Leistungsklasse, die im Android Compatibility Definition Document (CDD) 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 finden und aktualisierte Funktionen anbieten, die die Funktionen des Geräts optimal nutzen.

Die Leistungsklassenebene eines Geräts finden Sie in der Jetpack-Bibliothek Core Performance. Diese Bibliothek meldet die Medienleistungsklasse des Geräts, wie in den Build-Versionsinformationen angegeben oder basierend auf Daten aus Google Play-Diensten.

Fügen Sie der Gradle-Datei zuerst eine Abhängigkeit für die relevanten Module 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-beta02")
// Enable APIs to query Google Play Services for performance class.
implementation("androidx.core:core-performance-play-services:1.0.0-beta02")

Groovig

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

Anschließend können Sie das Attribut mediaPerformanceClass abrufen, um Ihre 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.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.
    }
  }
}

Leistungsklassen sind aufwärtskompatibel. Ein Gerät kann auf eine neuere Plattformversion aktualisiert werden, ohne seine Leistungsklasse zu aktualisieren. Beispielsweise kann ein Gerät, das anfangs die Leistungsklasse 12 unterstützt, auf Android 13 aktualisiert und weiterhin gemeldet werden, dass es Klasse 12 unterstützt, wenn es die Anforderungen der Klasse 13 nicht erfüllt. Das bedeutet, dass eine Leistungsklasse eine Möglichkeit bietet, Geräte zu gruppieren, ohne auf eine bestimmte Android-Version angewiesen zu sein.

Abbildung 1: Geräte können ein Upgrade von Android-Versionen durchführen und weiterhin melden, dass sie die Klasse unterstützen, die sie ursprünglich unterstützen.

Performance-Kurs 14

Die Leistungsklasse 14 baut auf den Anforderungen der Leistungsklasse 13 auf. Die spezifischen Anforderungen an Leistungsklassen sind im Android CDD (in englischer Sprache) veröffentlicht. Zusätzlich zu den höheren Anforderungen an Elemente aus der Leistungsklasse 13 gibt die CDD Anforderungen in folgenden Bereichen an:

Medien

  • Unterstützung des Filmkörnungseffekts in AV1-Hardware-Decodern
  • AVIF-Basisprofil
  • Leistung des AV1-Encoders
  • HDR-Video-Codecs
  • Farbformat RGBA_1010102
  • YUV-Texturproben
  • Qualität der Videocodierung
  • Mehrkanal-Audiomixing

Kamera

  • Nachtmodus-Erweiterung
  • HDR-fähige primäre Kamera
  • Szenenmodus für Gesichtserkennung

Allgemeines

  • Hardware-Overlays
  • HDR-Display

Leistungsklasse 13

Die Leistungsklasse 13 baut auf den Anforderungen der Leistungsklasse 12 auf. Die spezifischen Anforderungen an Leistungsklassen sind im Android CDD (in englischer Sprache) veröffentlicht. Zusätzlich zu den höheren Anforderungen an Elemente aus der Leistungsklasse 12 gibt die CDD Anforderungen in folgenden Bereichen an:

Medien

  • AV1-Hardwaredecoder
  • Sichere Hardwaredecoder
  • Latenz der Decoder-Initialisierung
  • Umlauf-Audiolatenz
  • Kabelgebundene Headsets und USB-Audiogeräte
  • MIDI-Geräte
  • Hardwaregestützte, vertrauenswürdige Ausführungsumgebung

Kamera

  • Vorschaustabilisierung
  • Zeitlupenaufnahmen
  • Minimales Zoomverhältnis für Ultraweitwinkelkameras
  • Gleichzeitige Kamera
  • Logische Mehrfachkameras
  • Anwendungsfall: Stream

Leistungsklasse 12

Die Leistungsklasse 12 konzentriert sich auf Anwendungsfälle im Bereich Medien. Die spezifischen Anforderungen an die Leistungsklasse sind in der Android CDD (in englischer Sprache) aufgeführt. Im CDD sind Anforderungen in den folgenden Bereichen festgelegt:

Medien

  • Gleichzeitige Video-Codec-Sitzungen
  • Latenz der Encoder-Initialisierung
  • Decoder-Frames fallen
  • Codierungsqualität

Kamera

  • Auflösung und Framerate
  • Starten und Latenzen erfassen
  • FULL oder eine bessere Hardwarestufe
  • Zeitstempelquelle ist „Echtzeit“
  • RAW-Fähigkeit

Allgemeines

  • Informationen merken
  • Lese- und Schreibleistung
  • Displayauflösung
  • Bildschirmdichte

Leistungsklasse 11

Die Leistungsklasse 11 umfasst einen Teil der Anforderungen für die Leistungsklasse 12, sodass Entwickler ein maßgeschneidertes Erlebnis auf früheren, aber dennoch leistungsstarken Geräten bieten können. Die spezifischen Anforderungen an Leistungsklassen sind im Android CDD (in englischer Sprache) aufgeführt.

  • Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
  • App-Startzeit