性能类别是 Android 12 中首次引入的标准。性能类别定义了一组设备功能,这些功能超出了 Android 的基本要求。
Android 的每个版本都有其对应的性能类别,该类别在该版本的 Android 兼容性定义文档 (CDD) 中定义。 Android 兼容性测试套件 (CTS) 验证 CDD 要求。
每个搭载 Android 系统的设备都会声明其支持的性能类别。开发者可以在运行时找到设备的性能类别,并提供充分利用设备功能的升级体验。
要查找设备的性能类别级别,请使用 Jetpack Core Performance 库。该库报告设备的媒体性能类别,如 构建版本信息 中声明的,或基于 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")
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.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,如果它不符合类别 13 的要求,则可以继续报告它支持类别 12。这意味着性能类别提供了一种将设备分组在一起的方法,而不依赖于特定的 Android 版本。
性能等级 14
性能等级 14 基于性能等级 13 中引入的要求。具体的性能等级要求在 Android CDD 中发布。除了对性能等级 13 中项目的要求增加之外,CDD 还规定了以下方面的要求
媒体
- AV1 硬件解码器中的胶片颗粒效果支持
- AVIF 基线配置文件
- AV1 编码器性能
- HDR 视频编解码器
- RGBA_1010102 颜色格式
- YUV 纹理采样
- 视频编码质量
- 多声道音频混合
相机
- 夜间模式扩展
- 支持 HDR 的主摄像头
- 人脸检测场景模式
通用
- 硬件叠加层
- HDR 显示器
性能等级 13
性能等级 13 基于性能等级 12 中引入的要求。具体的性能等级要求在 Android CDD 中发布。除了对性能等级 12 中项目的要求增加之外,CDD 还规定了以下方面的要求
媒体
- AV1 硬件解码器
- 安全硬件解码器
- 解码器初始化延迟
- 音频往返延迟
- 有线耳机和 USB 音频设备
- MIDI 设备
- 硬件支持的可信执行环境
相机
- 预览稳定
- 慢动作录制
- 超广角相机的最小变焦比
- 并发摄像头
- 逻辑多摄像头
- 流用例
性能等级 12
性能等级 12 专注于媒体用例。具体的性能等级要求在 Android CDD 中发布。CDD 指定了以下方面的要求
媒体
- 并发视频编解码器会话
- 编码器初始化延迟
- 解码器帧丢失
- 编码质量
相机
- 分辨率和帧率
- 启动和捕获延迟
FULL
或更高硬件级别- 时间戳来源为实时
- RAW 功能
通用
- 内存
- 读写性能
- 屏幕分辨率
- 屏幕密度
性能等级 11
性能等级 11 包含性能等级 12 的一部分要求,让开发者可以在更早但仍然功能强大的设备上提供定制体验。具体的性能等级要求在 Android CDD 中发布。
推荐给你
- 注意:当 JavaScript 关闭时,将显示链接文本
- 应用启动时间