Класс производительности – это стандарт, впервые представленный в Android 12. Класс производительности определяет набор возможностей устройства, выходящих за рамки базовых требований Android.
Каждой версии Android соответствует свой класс производительности, который определяется в документе определения совместимости (CDD) для этой версии. Android Compatibility Test Suite (CTS) проверяет соответствие требованиям CDD.
Каждое устройство Android заявляет о поддерживаемом классе производительности. Разработчики могут определять класс производительности устройства во время выполнения и предлагать улучшенные возможности, которые позволяют в полной мере использовать потенциал устройства.
Чтобы узнать класс производительности устройства, используйте библиотеку Jetpack Core Performance. Эта библиотека сообщает о классе производительности мультимедиа (MPC) устройства, который указан в информации о версии сборки или получен на основе данных из сервисов Google Play.
Сначала добавьте зависимость для нужных модулей в файл 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'
Затем создайте экземпляр реализации DevicePerformance, например PlayServicesDevicePerformance, в событии жизненного цикла onCreate() объекта Application. Это нужно сделать только один раз.
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.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. } } }
Классы производительности совместимы с будущими версиями. Устройство может обновиться до более новой версии платформы без обновления класса производительности. Например, устройство, которое изначально поддерживает класс производительности 33, можно обновить до Android 14. Если оно не соответствует требованиям класса производительности 34, то продолжит сообщать о поддержке класса производительности 33. Это позволяет группировать устройства независимо от версии Android.
Эффективность медиа 35
Класс MPC 35 был представлен в Android 15 и основан на требованиях, введенных в MPC 34. Требования к MPC 35 опубликованы в документе по совместимости Android 15. Помимо повышенных требований к устройствам с MPC 34, в CDD указаны требования в следующих областях:
Мультимедиа
- Пропущенные кадры при декодировании
- Редактирование HDR-изображений
- Аспекты динамической цветовой темы
- Вертикальное соотношение сторон
Камера
- JPEG_R
- Стабилизация при предпросмотре
Графика
- Расширения EGL
- Структуры Vulkan
Эффективность медиа: занятие 34
Класс MPC 34 был представлен в Android 14 и основан на требованиях, введенных в MPC 33. Требования к MPC 34 опубликованы в документе определения совместимости Android 14. Помимо повышенных требований к устройствам с MPC 33, в CDD указаны требования в следующих областях:
Мультимедиа
- Поддержка эффекта зернистости пленки в аппаратных декодерах AV1
- Базовый профиль AVIF
- Производительность кодировщика AV1
- Видеокодеки HDR
- Цветовой формат RGBA_1010102
- Выборка текстур YUV
- Качество кодирования видео
- Микширование многоканального аудио
Камера
- Расширение "Ночной режим"
- Основная камера с поддержкой HDR
- Сюжетный режим «Распознавание лиц»
Общие
- Аппаратное наложение
- HDR-дисплей
Эффективность медиарекламы: занятие 33
MPC 33 был представлен в Android 13 и основан на требованиях, введенных в MPC 31. Требования MPC 33 опубликованы в документе определения совместимости Android 13. Помимо повышенных требований к элементам из MPC 31, в CDD указаны требования в следующих областях:
Мультимедиа
- Аппаратный декодер AV1
- Защищенные аппаратные декодеры
- Задержка инициализации декодера
- Задержка аудио туда и обратно
- Проводные гарнитуры и аудиоустройства USB
- MIDI-устройства
- Доверенная среда выполнения на базе аппаратного обеспечения
Камера
- Стабилизация при предпросмотре
- Замедленная съемка
- Минимальный коэффициент масштабирования для сверхширокоугольных камер
- Одновременная съемка
- Логическая мульти-камера
- Пример использования Stream
Эффективность медиа, класс 31
Класс MPC 31 был представлен в Android 12. Требования к MPC 31 опубликованы в документе определения совместимости Android 12. В CDD указаны требования в следующих областях:
Мультимедиа
- Параллельные сеансы видеокодека
- Задержка инициализации видеокодера
- Пропущенные кадры декодера
- Качество кодировки
Камера
- Разрешение и частота кадров
- Задержки при запуске и записи
FULLили более высокий уровень оборудования- Источник временной метки – в реальном времени
- Поддержка RAW
Общие
- Память
- Производительность чтения и записи
- Разрешение экрана
- Разрешение экрана
Эффективность медиа, класс 30
MPC 30 включает подмножество требований MPC 31, что позволяет разработчикам предоставлять адаптированные возможности на более ранних, но все ещё высокопроизводительных устройствах. Требования к классам производительности опубликованы в документе определения совместимости Android 11.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Время запуска приложения