「效能類別」是 Android 12 首次引進的標準,可定義一系列超出 Android 基準要求的裝置功能。
每個 Android 版本都有自己對應的效能類別,定義位於該版本的 Android 相容性定義說明文件 (CDD) 內。Android Compatibility Test Suite (CTS) 可驗證 CDD 要求。
由於每部 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'
然後在 Application
的 onCreate()
生命週期事件內建立 DevicePerformance
實作項目的例項,例如 PlayServicesDevicePerformance
:這項動作在應用程式中只需執行一次。
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
Android 15 推出了 MPC 35,並以 MPC 34 所推出的規定為基礎。如需瞭解具體的 MPC 35 要求,請參閱 Android 15 CDD。除了對 MPC 34 的項目要求增加之外,CDD 還針對下列項目指定若干要求:
媒體
- 解碼影格遺失
- HDR 編輯
- 動態色彩層面
- 直向顯示比例
相機
- JPEG_R
- 預覽防震功能
圖形
- EGL 擴充功能
- Vulkan 結構
媒體成效類別 34
在 Android 14 中推出的 MPC 34 是以 MPC 33 中導入的要求為基礎。如需瞭解具體的 MPC 34 要求,請參閱 Android 14 CDD。除了對 MPC 33 的項目要求增加之外,CDD 還針對下列項目指定若干要求:
媒體
- AV1 硬體解碼器中的膠片顆粒效果支援
- AVIF 基準設定檔
- AV1 編碼器效能
- HDR 視訊轉碼器
- RGBA_1010102 色彩格式
- YUV 紋理取樣
- 影片編碼品質
- 多聲道混音
鏡頭
- 夜間模式擴充功能
- 支援 HDR 的主鏡頭
- 臉部偵測場景模式
一般
- 硬體重疊圖層
- HDR 螢幕
媒體成效類別 33
MPC 33 是在 Android 13 中推出,並以 MPC 31 中推出的規定為基礎。如需瞭解具體的 MPC 33 要求,請參閱 Android 13 CDD。除了對 MPC 31 的項目要求增加之外,CDD 還針對下列項目指定若干要求:
媒體
- AV1 硬體解碼器
- 安全的硬體解碼器
- 解碼器初始化延遲時間
- 往返音訊延遲時間
- 有線耳機和 USB 音訊裝置
- MIDI 裝置
- 硬體支援的受信任執行環境
鏡頭
- 預覽防震功能
- 慢動作錄影功能
- 超廣角鏡頭的最小縮放比例
- 並行鏡頭
- 邏輯多鏡頭
- 串流用途
媒體成效類別 31
Android 12 中導入了 MPC 31。如需瞭解具體的 MPC 31 要求,請參閱 Android 12 CDD。CDD 會明定以下各領域的要求:
媒體
- 並行影片轉碼器工作階段
- 編碼器初始化延遲時間
- 解碼器影格遺失
- 編碼品質
鏡頭
- 解析度和畫面更新率
- 啟動及擷取延遲時間
FULL
或更高硬體級別- 時間戳記來源為即時資料
- RAW 功能
一般
- 記憶體
- 讀取及寫入效能
- 螢幕解析度
- 螢幕密度
媒體成效類別 30
MPC 30 內含 MPC 31 的部分要求,可讓開發人員在仍可正常使用的舊版裝置上提供專屬體驗。如需瞭解具體的效能類別要求,請參閱 Android 11 CDD。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 應用程式啟動時間