リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートを目的としたリファクタリングが必要になったりすることがあります。このような場合、Android は古くなった API のサポートを正式に終了し、代わりに新しい API を使用するようデベロッパーに案内します。
サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。このページでは、Android の今回のリリースでサポートが終了した API をいくつか紹介します。その他のサポートの終了については、API の差分レポートをご覧ください。
RenderScript
Android 12 以降、RenderScript API のサポートは終了しています。この API は引き続き機能しますが、デバイスとコンポーネント メーカーによるハードウェア アクセラレーションのサポートはいずれ終了することが予測されます。GPU アクセラレーションを最大限に活用できるよう、RenderScript からの移行をおすすめします。
Android プレイリスト
Android プレイリストのサポートが終了しました。API はサポートされなくなりましたが、現在の機能は 互換性を確保するために残っています。
プレイリストは m3u ファイルとして読み込みおよび保存を行うことをおすすめします。
Display API のサポート終了
Android デバイスは、大画面、タブレット、折りたたみ式など、さまざまなフォーム ファクタで利用されています。各デバイスでコンテンツを適切にレンダリングするには、アプリで画面またはディスプレイのサイズを判断する必要があります。Android では、この情報を取得するためのさまざまな API が提供されてきました。Android 11 では WindowMetrics
API が導入され、以下のメソッドが非推奨となりました。
Android 12 では引き続き WindowMetrics
の使用を推奨し、以下のメソッドが非推奨となっています。
アプリは、WindowMetrics
API を使用してウィンドウの境界をクエリするか、Configuration.densityDpi
を使用して現在の密度をクエリする必要があります。
Jetpack WindowManager
ライブラリには、Android 4.0.1(API レベル 14)以降をサポートする WindowMetrics
クラスが含まれています。
例
WindowMetrics
の使用例をいくつか示します。
まず、アプリのアクティビティが完全にサイズ変更可能であることを確認します。
アクティビティは、UI 関連の処理(特に WindowManager.getCurrentWindowMetrics()
)では、アクティビティ コンテキストの WindowMetrics
に依存する必要があります。
アプリで MediaProjection
を作成する場合は、プロジェクションがディスプレイをキャプチャするため、境界を正しいサイズにする必要があります。アプリが完全にサイズ変更可能な場合、アクティビティ コンテキストは正しい境界を返します。
Kotlin
val projectionMetrics = activityContext .getSystemService(WindowManager::class.java).maximumWindowMetrics
Java
WindowMetrics projectionMetrics = activityContext .getSystemService(WindowManager.class).getMaximumWindowMetrics();
アプリが完全にサイズ変更可能ではない場合は、WindowContext
インスタンスから境界をクエリし、WindowManager.getMaximumWindowMetrics()
を使用してアプリで利用可能な最大表示領域の WindowMetrics を取得する必要があります。
Kotlin
val windowContext = context.createWindowContext(mContext.display!!, WindowManager.LayoutParams.TYPE_APPLICATION, null) val projectionMetrics = windowContext.getSystemService(WindowManager::class.java) .maximumWindowMetrics
Java
Context windowContext = mContext.createWindowContext(mContext.getDisplay(), WindowManager.LayoutParams.TYPE_APPLICATION, null; WindowMetrics projectionMetrics = windowContext.getWindowManager() .getMaximumWindowMetrics();