機能と API の概要

Android 15 では、デベロッパー向けに優れた新しい機能と API が導入されています。以下のセクションでは、関連する API の使用を開始するにあたって役立つ機能の概要を示します。

新しい API、変更した API、削除された API の詳細なリストについては、API 差分レポートをご覧ください。新しい API について詳しくは、Android API リファレンスをご覧ください。新しい API は、見つけやすいようにハイライト表示されています。また、プラットフォームの変更がアプリに影響する領域については、Android 15 の Android 15 をターゲットとするアプリに影響する動作変更と、targetSdkVersion に関係なくすべてのアプリに影響する動作変更をご確認ください。

カメラとメディア

Android 15 には、カメラとメディアのエクスペリエンスを向上させるさまざまな機能が搭載されています。これにより、クリエイターが Android でビジョンを具現化できるよう、ツールやハードウェアにアクセスできるようになります。

ローライト ブースト

Android 15 では、新しい自動露出モードであるローライト ブーストが導入され、カメラ 2夜間モードのカメラ拡張機能の両方で使用できます。ローライト ブーストは、暗い場所でプレビュー ストリームの露出を調整します。これは、夜間モードのカメラ拡張機能が静止画像を作成する方法とは異なります。夜間モードでは、大量の写真を組み合わせて 1 つの補正された画像を作成するためです。夜間モードは静止画像の作成には適していますが、フレームの連続ストリームを作成することはできませんが、ローライト ブーストは作成できます。そのため、ローライト ブーストにより、次のような新しいカメラ機能が有効になります。

  • 強化された画像プレビューを提供することで、ユーザーが暗い場所での写真をより適切にフレームに収められるようにする
  • 暗い場所での QR コードのスキャン

ローライト ブーストを有効にすると、光量が不足すると自動的にオンになり、光量が増加するとオフになります。

アプリは、暗い場所でプレビュー ストリームから録画して、明るい動画を保存できます。

詳しくは、ローライト ブーストをご覧ください。

アプリ内カメラ コントロール

Android 15 添加了一个新扩展,用于在支持的设备上更好地控制相机硬件及其算法:

  • 高级闪光灯强度调整,可让您在拍摄照片时精确控制 SINGLETORCH 模式下的闪光强度。

HDR ヘッドルーム コントロール

Android 15 会选择适合底层设备功能和面板的位深的 HDR 余量。对于包含大量 SDR 内容的页面(例如显示单个 HDR 缩略图的即时通讯应用),此行为最终可能会对 SDR 内容的感知亮度产生不利影响。Android 15 允许您使用 setDesiredHdrHeadroom 控制 HDR 余量,以在 SDR 和 HDR 内容之间取得平衡。

左侧屏幕上 SDR 界面元素的亮度似乎比右侧屏幕的亮度更均匀,这模拟了混合 HDR 和 SDR 内容时可能出现的余量问题。通过调整 HDR 余量,您可以在 SDR 和 HDR 内容之间更好地平衡。

ラウドネス コントロール

Android 15 引入了对 CTA-2075 音量标准的支持,以帮助您避免音频音量不一致,并确保用户在切换内容时无需不断调整音量。系统利用输出设备(耳机和扬声器)的已知特征以及 AAC 音频内容中提供的音量元数据来智能地调整音频音量和动态范围压缩级别。

如需启用此功能,您需要确保 AAC 内容中有音量元数据,并在您的应用中启用平台功能。为此,您可以使用关联的 AudioTrack 中的音频会话 ID 调用其 create 工厂方法,从而实例化此对象;此方法会自动开始应用音频更新。LoudnessCodecController您可以传递 OnLoudnessCodecUpdateListener 以在将音量参数应用于 MediaCodec 之前修改或过滤这些参数。

// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
                                .setSessionId(sessionId)
                                .build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
   val lcController = LoudnessCodecController.create(mSessionId)
   // Starts applying audio updates for each added MediaCodec

AndroidX media3 ExoPlayer 即将更新,以便利用 LoudnessCodecController API 实现无缝应用集成。

仮想 MIDI 2.0 デバイス

Android 13 では、Universal MIDI Packets(UMP)を使用して通信する USB を使用して MIDI 2.0 デバイスに接続するためのサポートが追加されました。Android 15 では、UMP のサポートが仮想 MIDI アプリに拡張されています。これにより、合成アプリは USB MIDI 2.0 デバイスの場合と同様に、シンセサイザー アプリを仮想 MIDI 2.0 デバイスとして制御できます。

接続性

Android 15 ではプラットフォームが更新され、最新の通信機能をアプリが利用できるようになります。

衛星のサポート

Android 15 では、引き続き衛星接続のプラットフォーム サポートを拡張しており、衛星接続の状況全体で一貫したユーザー エクスペリエンスを実現するため、いくつかの UI 要素が含まれています。

アプリは ServiceState.isUsingNonTerrestrialNetwork() を使用して、デバイスが衛星に接続されていることを検出できます。これにより、完全なネットワーク サービスが利用できない理由について、より認識しやすくなります。また、Android 15 では、SMS アプリと MMS アプリ、プリロードされた RCS アプリで、衛星接続を使用してメッセージを送受信できます。

デバイスが衛星に接続すると通知が表示されます。

NFC 操作がよりスムーズに

Android 15 では、Android の堅牢な NFC アプリ エコシステムを引き続きサポートしながら、タッチ決済のエクスペリエンスをよりシームレスで信頼性の高いものにするよう努めています。サポートされているデバイスでは、アプリは NfcAdapter に対して、監視モードに入るようリクエストできます。このモードでは、デバイスはリッスンするが NFC リーダーには応答せず、アプリの NFC サービスの PollingFrame オブジェクトを送信して処理します。PollingFrame オブジェクトを使用すると、NFC リーダーへの最初の通信に先立って認証を行うことができます。これにより、多くの場合、ワンタップのトランザクションが可能になります。

さらに、サポート対象のデバイスでアプリの指紋を登録して、ポーリング ループ アクティビティを通知できるようになりました。これにより、複数の NFC 対応アプリでのスムーズな操作が可能になります。

ウォレットの役割

Android 15 では、ユーザーが使用するウォレット アプリとより緊密に統合できるウォレットの新しいロールが導入されています。このロールは、NFC のデフォルトの非接触型決済の設定に代わるものです。ウォレットのロールを保持するユーザーは、[設定] > [アプリ] > [デフォルト アプリ] に移動して管理できます。

ウォレットのロールは、支払いカテゴリに登録されている AID に NFC タップをルーティングする場合に使用します。同じ AID に登録されている別のアプリがフォアグラウンドで実行されている場合を除き、タップは常にウォレットのロール所有者に移動します。

このロールは、ウォレットのクイックアクセス タイルが有効な場合にどこに配置するかを決定するためにも使用されます。ロールが「なし」に設定されている場合、QuickAccess タイルは使用できず、支払いカテゴリの NFC タップはフォアグラウンド アプリにのみ配信されます。

デベロッパーの生産性とツール

生産性を向上させるための Google の取り組みのほとんどは Android StudioJetpack ComposeAndroid Jetpack ライブラリなどのツールを中心に据えていますが、Google はビジョンの実現を容易にする方法を常に模索しています。

PDF の改善

Android 15 开发者预览版 2 包含对 PdfRenderer API 重大改进的早期预览版。应用可以整合各种高级功能,例如渲染受密码保护的文件、注解、表单编辑搜索和通过文案进行选择。支持线性 PDF 优化,以加快本地 PDF 的查看速度并减少资源使用量。

针对 PDF 渲染功能的最新更新包括搜索嵌入式 PDF 文件等功能。

PdfRenderer 已移至一个模块,此模块可使用与平台版本无关的 Google Play 系统更新来进行更新,并且我们将通过创建兼容的 API Surface 低于 Android 15 的版本(称为 PdfRendererPreV)来支持在 Android 11(API 级别 30)中更新这些变更。

我们非常重视您对 PdfRenderer API 接口的增强功能的反馈,我们计划通过即将推出的 Android Jetpack 库,让开发者能更轻松地将这些 API 整合到您的应用中。

言語の自動切り替えの改良

Android 14 增加了设备端音频中的多语言识别功能,可在语言之间自动切换,但这可能会导致单词丢失,尤其是在语言切换时,两种话语之间的停顿较少时。Android 15 添加了额外的控件,可帮助应用根据其用例调整此切换。EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS 会将自动切换限制为仅在音频会话开始时进行,而 EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES 则会在指定次数的切换后停用语言切换。如果您希望自动检测到会话期间只讲一种语言,这些选项特别有用。

細かな改行コントロール

从 Android 15 开始,TextView 和底层换行符可以将文本的给定部分保留在同一行中,以提高可读性。您可以通过在字符串资源或 createNoBreakSpan 中使用 <nobreak> 标记来利用此换行符自定义功能。同样,您可以使用 <nohyphen> 标记或 createNoHyphenationSpan 避免断字的情况。

例如,以下字符串资源不包含换行符,而是在不希望的位置显示文本“Pixel 8 Pro”进行渲染:

<resources>
    <string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>

相比之下,此字符串资源包含 <nobreak> 标记,该标记会封装短语“Pixel 8 Pro.”并防止换行符:

<resources>
    <string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>

这些字符串的呈现方式差异如下图所示:

用于设置一行文本的布局,其中词组“Pixel 8 Pro”未使用 <nobreak> 标记进行换行。
同一行文本的布局,其中词组“Pixel 8 Pro”用 <nobreak> 标记封装。

OpenJDK 17 の更新

Android 15 では、最新の OpenJDK LTS リリースの機能に合わせて Android のコアライブラリを更新する取り組みが引き続き行われています。

主な機能と改善点は次のとおりです。

これらの API は、Google Play システム アップデートを通じて Android 12(API レベル 31)以降を搭載した 10 億台を超えるデバイスで更新されるため、最新のプログラミング機能をターゲットにできます。

アプリのアーカイブ

Android と Google Play は昨年、アプリのアーカイブのサポートを発表しました。これにより、Google Play で Android App Bundle を使用して公開された、使用頻度の低いアプリをデバイスから部分的に削除して、空き容量を増やすことができます。Android 15 では、アプリのアーカイブとアーカイブ解除の OS レベルのサポートが追加され、すべてのアプリストアでより簡単に実装できるようになりました。

REQUEST_DELETE_PACKAGES 権限を持つアプリは、PackageInstaller requestArchive メソッドを呼び出して、インストール済みのアプリ パッケージのアーカイブをリクエストできます。これにより、APK とキャッシュに保存されたファイルが削除されますが、ユーザーデータは保持されます。アーカイブされたアプリは、LauncherApps API を通じて表示可能なアプリとして返されます。ユーザーには、それらのアプリがアーカイブされていることを示す UI 処理が表示されます。ユーザーがアーカイブされたアプリをタップすると、担当インストーラがそのアプリのアーカイブ解除リクエストを受け取ります。復元プロセスは、ACTION_PACKAGE_ADDED ブロードキャストによってモニタリングできます。

ユーザー補助

Android 15 には、ユーザーのユーザー補助機能を向上させる機能が追加されています。

点字の改善

Android 15 では、USB とセキュアな Bluetooth の両方で HID 標準を使用する点字ディスプレイを TalkBack でサポートできるようになりました。

マウスやキーボードで使用されている標準規格と同様に、Android は今後、より幅広い種類の点字ディスプレイをサポートするようになります。

大画面とフォーム ファクタ

Android 15 は、大画面、フリップ式、折りたたみ式デバイスなど、Android のフォーム ファクタを最大限に活用するためのサポートをアプリに提供します。

カバー画面のサポート

アプリは、サポートされているフリップ式デバイスの小さなカバー画面に Application または Activity を表示できるように、Android 15 で使用されるプロパティを宣言できます。これらの画面は小さすぎるため、Android アプリの実行可能なターゲットとして見なされませんが、アプリでサポートをオプトインすることで、より多くの場所でアプリを利用できるようになります。

パフォーマンスとバッテリー

Android は、引き続きアプリのパフォーマンスと品質の改善のサポートに重点を置いています。Android 15 では、アプリ内のタスクの実行、アプリのパフォーマンスの最適化、アプリに関する分析情報の収集に役立つ新しい API が導入されています。

ApplicationStartInfo API

以前のバージョンの Android では、アプリの起動が少し謎でした。アプリ内で、コールド状態、ウォーム状態、ホット状態のうちどれで開始されたのかを判断するのが困難でした。また、プロセスのフォーク、onCreate の呼び出し、最初のフレームの描画など、さまざまなリリース フェーズにアプリが費やした時間を把握するのも困難でした。Application クラスがインスタンス化された時点では、アプリがブロードキャスト、コンテンツ プロバイダ、ジョブ、バックアップ、起動完了、アラーム、Activity のどれから開始されたかを知る方法がありませんでした。

Android 15 の ApplicationStartInfo API は、これらすべてを提供します。独自のタイムスタンプをフローに追加して、タイミング データを 1 か所に収集することもできます。ApplicationStartInfo を使用すると、指標を収集するだけでなく、アプリの起動を直接最適化することもできます。たとえば、ブロードキャストによってアプリが起動したときに、Application クラス内で UI 関連ライブラリのインスタンス化のコストがかからなくなります。

アプリサイズの詳細情報

Android 8.0(API レベル 26)以降、アプリのインストール サイズを 1 つのバイト数として要約する StorageStats.getAppBytes API が追加されました。これは、APK サイズ、APK から抽出されたファイルのサイズ、デバイス上で生成されたファイル(AOT コンパイル済みコードなど)の合計です。この数値は、アプリがストレージをどのように使用しているかという点から見て、あまり意味がありません。

Android 15 では、StorageStats.getAppBytesByDataType([type]) API が追加されています。これにより、APK ファイルの分割、AOT と高速化に関連するコード、dex メタデータ、ライブラリ、ガイド付きプロファイルなど、アプリがその容量をどのように使用しているかに関する分析情報を取得できます。

アプリ管理プロファイリング

Android 15 には、アプリ内からプロファイリング情報を収集できる新しい ProfilingManager クラスが含まれています。プロファイリング リクエストの作成を簡素化する Android Jetpack API でこれをラップする予定ですが、コア API ではヒープダンプ、ヒープ プロファイル、スタック サンプリングなどの収集が可能になります。出力ファイルを識別するタグで指定されたコールバックをアプリに提供します。出力ファイルは、アプリのファイル ディレクトリに配信されます。パフォーマンスへの影響を最小限に抑えるために、API はレート制限を行います。

SQLite データベースの改善

Android 15 では、基盤となる SQLite エンジンの高度な機能を公開する新しい SQLite API が導入されています。これらの API は、アプリに現れる特定のパフォーマンス問題を対象としています。

デベロッパーは、特に大規模なデータベースを扱う場合や、レイテンシの影響を受けやすいクエリを実行する場合は、SQLite のパフォーマンスに関するベスト プラクティスを参照して SQLite データベースを最大限に活用する必要があります。

  • 読み取り専用の遅延トランザクション: 読み取り専用のトランザクション(書き込みステートメントを含まない)を発行する場合は、beginTransactionReadOnly()beginTransactionWithListenerReadOnly(SQLiteTransactionListener) を使用して読み取り専用の DEFERRED トランザクションを発行します。このようなトランザクションは相互に同時に実行でき、データベースが WAL モードの場合、IMMEDIATE または EXCLUSIVE トランザクションと同時に実行できます。
  • 行数と ID: 追加のクエリを発行せずに、変更された行の数または最後に挿入された行 ID を取得できる新しい API が追加されました。getLastChangedRowCount() は、現在のトランザクション内の最新の SQL ステートメントによって挿入、更新、削除された行数を返します。getTotalChangedRowCount() は現在の接続の数を返します。getLastInsertRowId() は、現在の接続に挿入される最後の行の rowid を返します。
  • 未加工ステートメント: 未処理の SQlite ステートメントを発行し、コンビニエンス ラッパーや追加の処理オーバーヘッドをバイパスします。

Android Dynamic Performance Framework のアップデート

Android 15 继续投资开发 Android 动态性能框架 (ADPF),这是一组 API,可让游戏和性能密集型应用更直接地与 Android 设备的电源和散热系统进行互动。在受支持的设备上,Android 15 将添加新的 ADPF 功能:

  • 适用于提示会话的节能模式,用于指明其关联的线程应该优先考虑节能而非性能,非常适合长时间运行的后台工作负载。
  • 可以在提示会话中报告 GPU 和 CPU 的运行时长,从而使系统能够同时调整 CPU 和 GPU 频率,以便更好地满足工作负载需求。
  • 热余量阈值,用于根据余量预测来解释可能的热节流状态。

如需详细了解如何在应用和游戏中使用 ADPF,请参阅相关文档

プライバシー

Android 15 には、アプリ デベロッパーがユーザーのプライバシーを保護するために役立つさまざまな機能が用意されています。

画面録画の検出

Android 15 增加了对应用检测功能的支持,以检测其是否被录制。每当应用在屏幕录制中处于可见或不可见状态之间转换时,系统都会调用回调。如果系统正在记录注册进程的 UID 拥有的 activity,则应用会被视为可见。这样,如果您的应用正在执行敏感操作,您就可以告知用户系统正在记录这些操作。

val mCallback = Consumer<Int> { state ->
  if (state == SCREEN_RECORDING_STATE_VISIBLE) {
    // We're being recorded
  } else {
    // We're not being recorded
  }
}

override fun onStart() {
   super.onStart()
   val initialState =
      windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
   mCallback.accept(initialState)
}

override fun onStop() {
    super.onStop()
    windowManager.removeScreenRecordingCallback(mCallback)
}

IntentFilter 機能の拡張

Android 15 では、UriRelativeFilterGroup を通じて、より正確な Intent 解決をサポートしています。これには、URL クエリ パラメータ、URL フラグメント、ブロックルールまたは除外ルールなど、それぞれ満たす必要がある Intent 一致ルールのセットを形成する一連の UriRelativeFilter オブジェクトが含まれています。

これらのルールは、AndroidManifest XML ファイルで新しい <uri-relative-filter-group> タグを使用して定義できます。このタグには必要に応じて android:allow タグを含めることができます。これらのタグには、既存のデータタグ属性を使用する <data> タグと、新しい android:query 属性と android:fragment 属性を含めることができます。

AndroidManifest 構文の例を次に示します。

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:domain="astore.com" />
  <uri-relative-filter-group>
    <data android:pathPrefix="/auth" />
    <data android:query="region=na" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:query="mobileoptout=true" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:fragmentPrefix="faq" />
  </uri-relative-filter-group>
</intent-filter>

Android 版プライバシー サンドボックス

Android 15 では、Android 広告サービスが拡張レベル 10 に引き上げられ、最新バージョンの Android 版プライバシー サンドボックスが組み込まれています。これは、モバイルアプリでユーザーのプライバシーを強化し、効果的なパーソナライズド広告体験を可能にする新しいテクノロジーを開発する取り組みの一環です。プライバシー サンドボックスのページには、Android 版プライバシー サンドボックスのデベロッパー プレビューとベータ版プログラムに関する詳細情報が記載されています。

ヘルスコネクト

Android 15 では、Android 14 拡張機能 10 が Android のヘルスコネクトに統合されています。これは、アプリで収集された健康やフィットネスのデータを管理および共有するための、安全で一元化されたプラットフォームです。このアップデートでは、フィットネス栄養など、新しいデータ型のサポートが追加されています。

部分的画面共有

Android 15 では部分的な画面共有がサポートされているため、ユーザーはデバイスの画面全体ではなく、アプリ ウィンドウのみを共有または録画できます。この機能には Android 14 QPR2 で初めて有効になり、アプリで部分的な画面共有のエクスペリエンスをカスタマイズできる MediaProjection コールバックが含まれています。Android 14(API レベル 34)以降をターゲットとするアプリでは、MediaProjection キャプチャ セッションごとにユーザーの同意が必要になりました。

セキュリティ

Android 15 では、アプリのセキュリティを強化し、アプリのデータを保護できます。

エンドツーエンドの暗号化のための鍵管理

Android 15 で導入された E2eeContactKeysManager は、暗号公開鍵の保存用に OS レベルの API を提供することで、Android アプリのエンドツーエンドの暗号化(E2EE)を容易にします。

E2eeContactKeysManager は、プラットフォームの連絡先アプリと統合するように設計されています。これにより、ユーザーは連絡先の公開鍵を一元的に管理および検証できます。

fs-verity を使用してファイルを保護する

ユーザー エクスペリエンス

Android 15 では、アプリ デベロッパーとユーザーは、ニーズに合わせてデバイスをきめ細かく柔軟に設定できます。

サイレント モード ルールの改善

AutomaticZenRule を使用すると、アプリはアテンション管理(サイレント モード)ルールをカスタマイズし、いつ有効にするか無効にするかを決定できます。Android 15 では、ユーザー エクスペリエンスの向上を目的として、これらのルールが大幅に強化されています。次の機能強化が含まれています。

  • AutomaticZenRule にタイプを追加し、システムで一部のルールに特別な処理を適用できるようにしました。
  • AutomaticZenRule にアイコンを追加して、モードを認識しやすくしました。
  • ユーザーに対してルールをアクティブにする条件を記述する triggerDescription 文字列を AutomaticZenRule に追加します。
  • AutomaticZenRuleZenDeviceEffects が追加され、グレースケール表示、夜間モード、壁紙を暗くするなどのルールをトリガーできるようになりました。

多言語対応

Android 15 では、デバイスがさまざまな言語で使用されている場合のユーザー エクスペリエンスを補完する機能が追加されています。

文字間の両端揃え

从 Android 15 开始,可以使用 JUSTIFICATION_MODE_INTER_CHARACTER 利用字母间距将文本两端对齐。Android 8.0(API 级别 26)中首次引入了字词间对齐,而字符间对齐可为使用空格字符进行分割的语言(例如中文、日语等)提供类似的功能。

使用 JUSTIFICATION_MODE_NONE 的日语文本布局。
使用 JUSTIFICATION_MODE_NONE 的英语文本布局。


使用 JUSTIFICATION_MODE_INTER_WORD 的日语文本布局。
使用 JUSTIFICATION_MODE_INTER_WORD 的英语文本布局。


使用新版 JUSTIFICATION_MODE_INTER_CHARACTER 的日语文本布局。
使用新版 JUSTIFICATION_MODE_INTER_CHARACTER 的英语文本布局。