רמת ביצועים

סיווג ביצועים הוא תקן סטנדרטי שהושק לראשונה ב-Android 12. ביצוע מגדיר קבוצה של יכולות מכשיר שחורגות מהגדרות הבסיס של Android בדרישות שלנו.

לכל גרסה של Android יש סיווג ביצועים תואם משלה, כלומר שהוגדרה במסמך הגדרת התאימות ל-Android של הגרסה הרלוונטית (CDD). הכלי תאימות ל-Android Test Suite (CTS) מאמת את דרישות לגבי CDD.

כל מכשיר Android כולל הצהרה על סיווג הביצועים שבו הוא תומך. המפתחים יכולים למצוא את רמת הביצועים של המכשיר בזמן הריצה ולספק שמפיקות חוויות משתמש משודרגות שמנצלות את מלוא יכולות המכשיר.

כדי לברר את רמת הביצועים של מכשיר, אפשר להשתמש ב-Jetpack ליבה ביצועים לספרייה. הספרייה הזו מדווחת על סיווג ביצועי המדיה של המכשיר כמוצהר. בגרסת ה-build מידע או על סמך נתונים מ-Google Play Services.

בתור התחלה, מוסיפים תלות למודולים הרלוונטיים בקובץ 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")

מגניב

// 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'

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

לאחר מכן אפשר לאחזר את המאפיין mediaPerformanceClass כדי להתאים אישית את בהתאם ליכולות של המכשיר:

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

סיווגי הביצועים תואמים להעברות. ניתן לשדרג מכשיר לגרסה חדשה יותר בגרסת הפלטפורמה מבלי לעדכן את סיווג הביצועים שלה. לדוגמה, מכשיר שתומך בהתחלה בסיווג ביצועים 12, יכול לשדרג ל-Android 13 ימשיכו לדווח שהוא תומך בכיתת 12 אם הוא לא עונה על כיתה 13 בדרישות שלנו. כלומר, שיעור ביצועים מאפשר לקבץ מכשירים ביחד, בלי להסתמך על גרסת Android מסוימת.

איור 1. מכשירים יכולים לשדרג גרסאות Android וגם להמשיך לדווח שהם תומכים בכיתה שבה הם השתמשו תמיכה.

רמת ביצועים 14

סיווג ביצועים 14 מסתמך על הדרישות שהוצגו בכיתה ביצועים 13. הדרישות הספציפיות לסיווג הביצועים מתפרסמות בכלי Android CDD. בנוסף לדרישות המוגברות לגבי פריטים מסיווג ביצועים 13, CDD מפרט את הדרישות בתחומים הבאים:

מדיה

  • תמיכה באפקט גרעיניות סרט במפענחי חומרה מסוג AV1
  • פרופיל הבסיס של AVIF
  • הביצועים של מקודד AV1
  • קודק וידאו HDR
  • פורמט צבע RGBA_1010102
  • דגימת טקסטורה של YUV
  • איכות קידוד הווידאו
  • מיקס אודיו בכמה ערוצים

מצלמה

  • תוסף מצב לילה
  • מצלמה ראשית עם תמיכה ב-HDR
  • מצב סצנה של זיהוי פנים

Generic

  • שכבות-על של חומרה
  • מסך HDR

רמת ביצועים 13

סיווג ביצועים 13 מסתמך על הדרישות שהוצגו בכיתה ביצועים 12. הדרישות הספציפיות לסיווג הביצועים מתפרסמות בכלי Android CDD. בנוסף לדרישות המוגברות לגבי פריטים מסיווג ביצועים 12, CDD מפרט את הדרישות בתחומים הבאים:

מדיה

  • מפענח חומרה AV1
  • מפענחי חומרה מאובטחים
  • זמן אחזור של אתחול המפענח
  • זמן אחזור של אודיו הלוך ושוב
  • אוזניות חוטיות והתקני אודיו בחיבור USB
  • מכשירי MIDI
  • סביבת ביצוע מהימנה שמגובת באמצעות חומרה

מצלמה

  • התצוגה המקדימה מיוצבת
  • צילום בהילוך איטי
  • יחס זום מינימלי למצלמות Ultrawide
  • מצלמה בו-זמנית
  • מספר מצלמות לוגיות
  • תרחיש לדוגמה של סטרימינג

רמת ביצועים 12

שיעור ביצועים 12 מתמקד בתרחישים לדוגמה במדיה. סיווג הביצועים הספציפי מפורסמות בגרסת Android, CDD. חוק ה-CDD מפרט את הדרישות בתחומים הבאים:

מדיה

  • סשנים של קודק וידאו בו-זמנית
  • זמן אחזור של אתחול המקודד
  • טיפות פריים של המפענח
  • איכות הקידוד

מצלמה

  • רזולוציה וקצב פריימים
  • הפעלה ותיעוד של זמני אחזור
  • FULL או רמת חומרה גבוהה יותר
  • מקור חותמת הזמן הוא בזמן אמת
  • יכולת RAW

Generic

  • זיכרון
  • קריאה וכתיבה של נתוני ביצועים
  • רזולוציית המסך
  • דחיסות מסך

רמת ביצועים 11

סיווג ביצועים 11 כולל קבוצת משנה של הדרישות לגבי סיווג הביצועים 12, מאפשרים למפתחים לספק חוויה מותאמת אישית בשלבים הקודמים, אבל עדיין של מכשירים שמותאמים במיוחד ל-AI. הדרישות הספציפיות לסיווג הביצועים מתפרסמות ב- מכשיר Android CDD.