パフォーマンス クラスは、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'
Then, create an instance of a
DevicePerformance
implementation, such as
PlayServicesDevicePerformance
,
in the onCreate()
lifecycle event of your Application
. This should only be
done once in your app.
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 がオフになっている場合はリンクテキストが表示されます
- アプリのスタートアップ時間