각 Android 지원 기기는 지원하는 성능 등급을 선언합니다.
개발자는 런타임에 기기의 성능 등급을 확인하고 기기의 기능을 최대한 활용하는 업그레이드된 환경을 제공할 수 있습니다.
기기의 성능 등급 수준을 알아보려면 Jetpack Core Performance 라이브러리를 사용하세요. 이 라이브러리는 빌드 버전 정보에 선언된 대로 또는 Google Play 서비스의 데이터를 기반으로 기기의 미디어 성능 등급 (MPC) 수준을 보고합니다.
먼저 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")
Groovy
// 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'
importandroidx.core.performance.play.services.PlayServicesDevicePerformanceclassMyApplication:Application(){lateinitvardevicePerformance:DevicePerformanceoverridefunonCreate(){// Use a class derived from the DevicePerformance interfacedevicePerformance=PlayServicesDevicePerformance(applicationContext)}}
자바
importandroidx.core.performance.play.services.PlayServicesDevicePerformance;classMyApplicationextendsApplication{DevicePerformancedevicePerformance;@OverridepublicvoidonCreate(){// Use a class derived from the DevicePerformance interfacedevicePerformance=newPlayServicesDevicePerformance(applicationContext);}}
그런 다음 mediaPerformanceClass 속성을 가져와서 기기의 기능에 따라 앱 경험을 맞춤설정할 수 있습니다.
Kotlin
classMyActivity:Activity(){privatelateinitvardevicePerformance:DevicePerformanceoverridefunonCreate(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=(applicationasMyApplication).devicePerformance}overridefunonResume(){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.}}}}
자바
classMyActivityextendsActivity{privateDevicePerformancedevicePerformance;@OverridepublicvoidonCreate(BundlesavedInstanceState){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;}@OverridepublicvoidonResume(){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.}elseif(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 버전에 의존하지 않고 기기를 그룹화할 수 있습니다.
그림 1. 기기는 Android 버전을 업그레이드하고 원래 지원하는 클래스를 지원한다고 계속 보고할 수 있습니다.
미디어 성능 등급 35
MPC 35는 Android 15에서 도입되었으며 MPC 34에서 도입된 요구사항을 기반으로 합니다. 구체적인 MPC 35 요구사항은 Android 15 CDD에 게시됩니다.
CDD는 MPC 34의 항목 요구사항이 늘어나는 것 외에 다음 영역에서 요구사항을 지정합니다.
미디어
디코딩 프레임 드롭
HDR 편집
동적 색상 측면
세로 모드 가로세로 비율
카메라
JPEG_R
미리보기 손떨림 보정
그래픽
EGL 확장 프로그램
Vulkan 구조
미디어 성능 등급 34
MPC 34는 Android 14에서 도입되었으며 MPC 33에서 도입된 요구사항을 기반으로 합니다. 구체적인 MPC 34 요구사항은 Android 14 CDD에 게시됩니다.
CDD는 MPC 33의 항목 요구사항이 늘어나는 것 외에 다음 영역에서 요구사항을 지정합니다.
미디어
AV1 하드웨어 디코더에서 필름 입자 효과 지원
AVIF 기준 프로필
AV1 인코더 성능
HDR 동영상 코덱
RGBA_1010102 색상 형식
YUV 텍스처 샘플링
동영상 인코딩 품질
멀티채널 오디오 믹싱
카메라
야간 모드 확장 프로그램
HDR 지원 기본 카메라
얼굴 인식 장면 모드
일반
하드웨어 오버레이
HDR 디스플레이
미디어 성능 등급 33
MPC 33은 Android 13에서 도입되었으며 MPC 31에서 도입된 요구사항을 기반으로 합니다. 구체적인 MPC 33 요구사항은 Android 13 CDD에 게시됩니다.
CDD는 MPC 31의 항목 요구사항이 늘어나는 것 외에 다음 영역에서 요구사항을 지정합니다.
미디어
AV1 하드웨어 디코더
보안 하드웨어 디코더
디코더 초기화 지연 시간
왕복 오디오 지연 시간
유선 헤드셋 및 USB 오디오 기기
MIDI 기기
하드웨어가 지원되는 신뢰할 수 있는 실행 환경
카메라
미리보기 손떨림 보정
슬로우 모션 녹화
울트라와이드 카메라의 최소 확대/축소 비율
동시 카메라
논리 다중 카메라
스트림 사용 사례
미디어 성능 등급 31
MPC 31은 Android 12에서 도입되었습니다. 구체적인 MPC 31 요구사항은 Android 12 CDD에 게시됩니다.
CDD는 다음 영역에서 요구사항을 지정합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Performance class\n\n*Performance class* is a standard first introduced in Android 12. A performance\nclass defines a set of device capabilities that goes beyond Android's baseline\nrequirements.\n\nEach version of Android has its own corresponding performance class, which is\ndefined in that version's [Android Compatibility Definition Document\n(CDD)](https://source.android.com/compatibility/cdd). The [Android Compatibility\nTest Suite (CTS)](https://source.android.com/compatibility/cts) verifies the\nCDD requirements.\n\nEach Android-powered device declares the performance class that it supports.\nDevelopers can find the device's performance class at runtime and provide\nupgraded experiences that take full advantage of the device's capabilities.\n\nTo find a device's performance class level, use the Jetpack [Core\nPerformance](/jetpack/androidx/releases/core#core_performance_version_10_2)\nlibrary. This library reports the device's media performance class (MPC) level\nas declared in the\n[build version information](/reference/android/os/Build.VERSION#MEDIA_PERFORMANCE_CLASS)\nor based on data from Google Play services.\n\nStart by adding a dependency for the relevant modules in your gradle file: \n\n### Kotlin\n\n```kotlin\n// Implementation of Jetpack Core library.\nimplementation(\"androidx.core:core-ktx:1.12.0\")\n// Enable APIs to query for device-reported performance class.\nimplementation(\"androidx.core:core-performance:1.0.0\")\n// Enable APIs to query Google Play services for performance class.\nimplementation(\"androidx.core:core-performance-play-services:1.0.0\")\n```\n\n### Groovy\n\n```groovy\n// Implementation of Jetpack Core library.\nimplementation 'androidx.core:core-ktx:1.12.0'\n// Enable APIs to query for device-reported performance class.\nimplementation 'androidx.core:core-performance:1.0.0'\n// Enable APIs to query Google Play services for performance class.\nimplementation 'androidx.core:core-performance-play-services:1.0.0'\n```\n\nThen, create an instance of a\n[`DevicePerformance`](/reference/androidx/core/performance/DevicePerformance)\nimplementation, such as\n[`PlayServicesDevicePerformance`](/reference/androidx/core/performance/play/services/PlayServicesDevicePerformance),\nin the `onCreate()` lifecycle event of your `Application`. This should only be\ndone once in your app. \n\n### Kotlin\n\n```kotlin\nimport androidx.core.performance.play.services.PlayServicesDevicePerformance\n\nclass MyApplication : Application() {\n lateinit var devicePerformance: DevicePerformance\n\n override fun onCreate() {\n // Use a class derived from the DevicePerformance interface\n devicePerformance = PlayServicesDevicePerformance(applicationContext)\n }\n}\n```\n\n### Java\n\n```java\nimport androidx.core.performance.play.services.PlayServicesDevicePerformance;\n\nclass MyApplication extends Application {\n DevicePerformance devicePerformance;\n\n @Override\n public void onCreate() {\n // Use a class derived from the DevicePerformance interface\n devicePerformance = new PlayServicesDevicePerformance(applicationContext);\n }\n}\n```\n\nYou can then retrieve the `mediaPerformanceClass` property to tailor your app's\nexperience based on the device's capabilities: \n\n### Kotlin\n\n```kotlin\nclass MyActivity : Activity() {\n private lateinit var devicePerformance: DevicePerformance\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n // Note: Good app architecture is to use a dependency framework. See\n // https://developer.android.com/training/dependency-injection for more\n // information.\n devicePerformance = (application as MyApplication).devicePerformance\n }\n\n override fun onResume() {\n super.onResume()\n when {\n devicePerformance.mediaPerformanceClass \u003e= Build.VERSION_CODES.VANILLA_ICE_CREAM -\u003e {\n // MPC level 35 and later.\n // Provide the most premium experience for the highest performing devices.\n }\n devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.UPSIDE_DOWN_CAKE -\u003e {\n // MPC level 34.\n // Provide a high quality experience.\n }\n else -\u003e {\n // MPC level 33, 31, 30, or undefined.\n // Remove extras to keep experience functional.\n }\n }\n }\n}\n```\n\n### Java\n\n```java\nclass MyActivity extends Activity {\n private DevicePerformance devicePerformance;\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n // Note: Good app architecture is to use a dependency framework. See\n // https://developer.android.com/training/dependency-injection for more\n // information.\n devicePerformance = ((MyApplication) getApplication()).devicePerformance;\n }\n\n @Override\n public void onResume() {\n super.onResume();\n if (devicePerformance.getMediaPerformanceClass() \u003e= Build.VERSION_CODES.VANILLA_ICE_CREAM) {\n // MPC level 35 and later.\n // Provide the most premium experience for the highest performing devices.\n } else if (devicePerformance.getMediaPerformanceClass() == Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {\n // MPC level 34.\n // Provide a high quality experience.\n } else {\n // MPC level 33, 31, 30, or undefined.\n // Remove extras to keep experience functional.\n }\n }\n}\n```\n\nPerformance class levels are forward-compatible. A device can upgrade to a newer\nplatform version without updating its performance class. For example, a device\nthat initially supports performance class 33 can upgrade to Android 14 and\ncontinue to report it supports performance class 33 if it doesn't meet the\nperformance class 34 requirements. This allows grouping devices together without\nrelying on a particular Android version.\n\n\n**Figure 1.** Devices can upgrade Android versions and continue reporting that they support the class they originally support.\n\n\u003cbr /\u003e\n\nMedia Performance Class 35\n--------------------------\n\nMPC 35 was introduced in Android 15 and builds on the requirements\nintroduced in [MPC 34](#class-34). The specific MPC 35 requirements are\npublished in the\n[Android 15 CDD](https://source.android.com/docs/compatibility/15/android-15-cdd#227_handheld_media_performance_class).\nIn addition to increased requirements for items from MPC 34, the CDD specifies\nrequirements in the following areas:\n\n### Media\n\n- Decoding frame drops\n- HDR editing\n- Dynamic color aspects\n- Portrait aspect ratio\n\n### Camera\n\n- JPEG_R\n- Preview stabilization\n\n### Graphics\n\n- EGL extensions\n- Vulkan structures\n\nMedia Performance Class 34\n--------------------------\n\nMPC 34 was introduced in Android 14 and builds on the requirements\nintroduced in [MPC 33](#class-33). The specific MPC 34 requirements are\npublished in the\n[Android 14 CDD](https://source.android.com/docs/compatibility/14/android-14-cdd#227_handheld_media_performance_class).\nIn addition to increased requirements for items from MPC 33, the CDD specifies\nrequirements in the following areas:\n\n### Media\n\n- Film grain effect support in AV1 hardware decoders\n- AVIF Baseline Profile\n- AV1 encoder performance\n- HDR video codecs\n- RGBA_1010102 color format\n- YUV texture sampling\n- Video encoding quality\n- Multichannel audio mixing\n\n### Camera\n\n- Night mode extension\n- HDR-capable primary camera\n- Face detection scene mode\n\n### General\n\n- Hardware overlays\n- HDR display\n\nMedia Performance Class 33\n--------------------------\n\nMPC 33 was introduced in Android 13 and builds on the requirements\nintroduced in [MPC 31](#class-31). The specific MPC 33 requirements are\npublished in the\n[Android 13 CDD](https://source.android.com/docs/compatibility/13/android-13-cdd#227_handheld_media_performance_class).\nIn addition to increased requirements for items from MPC 31, the CDD specifies\nrequirements in the following areas:\n\n### Media\n\n- AV1 hardware decoder\n- Secure hardware decoders\n- Decoder initialization latency\n- Round-trip audio latency\n- Wired headsets and USB audio devices\n- MIDI devices\n- Hardware-backed trusted execution environment\n\n### Camera\n\n- Preview stabilization\n- Slow-mo recording\n- Minimum zoom ratio for ultrawide cameras\n- Concurrent camera\n- Logical multi-camera\n- Stream use case\n\n| **Note:** There is no MPC level 32 definition.\n\nMedia Performance Class 31\n--------------------------\n\nMPC 31 was introduced in Android 12. The specific MPC 31 requirements are\npublished in the\n[Android 12 CDD](https://source.android.com/docs/compatibility/12/android-12-cdd#227_handheld_media_performance_class).\nThe CDD specifies requirements in the following areas:\n\n### Media\n\n- Concurrent video codec sessions\n- Encoder initialization latency\n- Decoder frame drops\n- Encoding quality\n\n### Camera\n\n- Resolution and frame rate\n- Startup and capture latencies\n- [`FULL`](/reference/android/hardware/camera2/CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL) or better hardware level\n- Timestamp source is realtime\n- RAW capability\n\n### General\n\n- Memory\n- Read and write performance\n- Screen resolution\n- Screen density\n\nMedia Performance Class 30\n--------------------------\n\nMPC 30 includes a subset of the requirements for MPC 31, letting developers\nprovide a tailored experience on earlier but still highly capable devices. The\nspecific performance class requirements are published in the\n[Android 11 CDD](https://source.android.com/docs/compatibility/11/android-11-cdd#227_handheld_media_performance_class).\n| **Note:** There are no MPC level definitions prior to MPC 30. An MPC level of 0 indicates that the MPC level is undefined for the current device and build.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [App startup time](/topic/performance/vitals/launch-time)"]]