Класс производительности — это стандарт, впервые представленный в Android 12. Класс производительности определяет набор возможностей устройства, выходящий за рамки базовых требований Android.
Каждой версии Android соответствует свой собственный класс производительности, который определен в документе определения совместимости Android (CDD) этой версии. Набор тестов совместимости Android (CTS) проверяет требования CDD.
Каждое устройство под управлением Android указывает класс производительности, который оно поддерживает. Разработчики могут узнать класс производительности устройства во время выполнения и предоставить обновленные возможности, позволяющие в полной мере использовать возможности устройства.
Чтобы узнать уровень класса производительности устройства, используйте библиотеку Jetpack Core Performance . Эта библиотека сообщает уровень класса мультимедийной производительности (MPC) устройства, указанный в информации о версии сборки или на основе данных сервисов Google Play.
Начните с добавления зависимости для соответствующих модулей в ваш файл gradle:
Котлин
// 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
. Это следует сделать только один раз в вашем приложении.
Котлин
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) } }
Ява
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
, чтобы адаптировать работу вашего приложения в зависимости от возможностей устройства:
Котлин
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. } } } }
Ява
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 и продолжать сообщать, что поддерживает класс производительности 33, если оно не соответствует требованиям класса производительности 34. Это позволяет группировать устройства вместе, не полагаясь на конкретную версию Android.
Класс медиапроизводительности 35
MPC 35 был представлен в Android 15 и основан на требованиях, представленных в MPC 34 . Конкретные требования MPC 35 опубликованы в CDD Android 15 . Помимо повышенных требований к позициям из MPC 34, CDD определяет требования в следующих областях:
СМИ
- Декодирование выпадения кадров
- HDR-редактирование
- Динамические цветовые аспекты
- Соотношение сторон портретной ориентации
Камера
- JPEG_R
- Предварительный просмотр стабилизации
Графика
- Расширения EGL
- Вулканские структуры
Класс медиапроизводительности 34
MPC 34 был представлен в Android 14 и основан на требованиях, представленных в MPC 33 . Конкретные требования MPC 34 опубликованы в CDD Android 14 . Помимо повышенных требований к позициям из MPC 33, CDD определяет требования в следующих областях:
СМИ
- Поддержка эффекта зернистости пленки в аппаратных декодерах AV1
- Базовый профиль AVIF
- Производительность кодера AV1
- HDR-видеокодеки
- Цветовой формат RGBA_1010102
- Выборка текстур YUV
- Качество кодирования видео
- Многоканальное микширование звука
Камера
- Расширение ночного режима
- Основная камера с поддержкой HDR
- Сюжетный режим обнаружения лиц
Общий
- Аппаратные накладки
- HDR-дисплей
Класс медиапроизводительности 33
MPC 33 был представлен в Android 13 и основан на требованиях, представленных в MPC 31 . Конкретные требования MPC 33 опубликованы в CDD Android 13 . Помимо повышенных требований к позициям из MPC 31, CDD определяет требования в следующих областях:
СМИ
- Аппаратный декодер AV1
- Безопасные аппаратные декодеры
- Задержка инициализации декодера
- Задержка звука в обе стороны
- Проводные гарнитуры и аудиоустройства USB
- MIDI-устройства
- Доверенная среда выполнения с аппаратной поддержкой
Камера
- Предварительный просмотр стабилизации
- Замедленная запись
- Минимальный коэффициент масштабирования для сверхширокоугольных камер
- Параллельная камера
- Логическая многокамерная камера
- Вариант использования потока
Класс медиапроизводительности 31
MPC 31 был представлен в Android 12. Конкретные требования MPC 31 опубликованы в Android 12 CDD . CDD определяет требования в следующих областях:
СМИ
- Параллельные сеансы видеокодека
- Задержка инициализации кодировщика
- Пропадает кадр декодера
- Качество кодирования
Камера
- Разрешение и частота кадров
- Задержки при запуске и захвате
-
FULL
или более высокий аппаратный уровень - Источник временной метки — в реальном времени.
- Возможности RAW
Общий
- Память
- Чтение и запись производительности
- Разрешение экрана
- Плотность экрана
Класс медиапроизводительности 30
MPC 30 включает в себя подмножество требований MPC 31, что позволяет разработчикам обеспечить индивидуальный подход к более ранним, но все еще высокофункциональным устройствам. Требования к конкретному классу производительности опубликованы в CDD Android 11 .
{% дословно %}Рекомендуется для вас
- Примечание. Текст ссылки отображается, когда JavaScript отключен.
- Время запуска приложения