機能と API の概要

Android 14 では、デベロッパー向けに優れた機能と API が導入されています。ここでは、アプリの機能を確認し、関連する API の使用を開始する方法について説明します。

追加、変更、削除された API の詳細なリストについては、API 差分レポートをご覧ください。追加された API について詳しくは、Android API リファレンスをご覧ください。Android 14 については、API レベル 34 で追加された API をご覧ください。プラットフォームの変更がアプリに影響する領域については、Android 14 の動作変更(Android 14 をターゲットとするアプリの場合)およびすべてのアプリについてをご確認ください。

多言語対応

アプリ別の言語設定

Android 14 では、Android 13(API レベル 33)で導入されたアプリ別の言語機能が拡張され、以下の機能が追加されています。

  • アプリの localeConfig の自動生成: Android Studio Giraffe Canary 7 および AGP 8.1.0-alpha07 以降では、アプリで自動的にアプリ別の言語設定をサポートするよう設定できます。Android Gradle プラグインは、プロジェクト リソースに基づいて LocaleConfig ファイルを生成し、そのファイルへの参照を最終マニフェスト ファイルに追加します。そのため、手動でファイルを作成または更新する必要はありません。AGP は、アプリ モジュールの res フォルダ内のリソースとライブラリ モジュールの依存関係を使用して、LocaleConfig ファイルに含めるロケールを決定します。

  • アプリの localeConfig の動的アップデート: LocaleManagersetOverrideLocaleConfig() メソッドと getOverrideLocaleConfig() メソッドを使用して、デバイスのシステム設定にある、アプリでサポートされる言語のリストを動的にアップデートします。この柔軟性を利用して、サポートされる言語のリストを地域ごとにカスタマイズしたり、A/B テストを実施したりできます。また、アプリがローカライズのためにサーバー側の push を使用する場合は、更新されたロケールのリストを提供できます。

  • インプット メソッド エディタ(IME)によるアプリの言語の確認: IME は getApplicationLocales() メソッドを使用して現在のアプリの言語を確認し、IME 言語をその言語と一致させます。

Grammatical Inflection API

有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。

以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。

Android 14 では、性別で文法が変わる言語に合わせてユーザー中心の UI を構築するため、アプリをリファクタリングせずに文法上の性別への対応を追加できる Grammatical Inflection API が導入されています。

地域の設定

地域の設定を使用すると、ユーザーは温度単位、週の最初の曜日、番号体系をカスタマイズできます。米国に住んでいる欧州のユーザーの場合、温度の単位は華氏ではなく摂氏で表示し、アプリで週の始まりを米国のデフォルトの日曜日ではなく月曜日に指定することを好む可能性があります。

Android の新しい設定メニューは見つけやすく、ユーザーはここでアプリのそうした設定を一元的に変更できます。これらの設定は、バックアップや復元を行った場合も保持されます。複数の API とインテント(getTemperatureUnitgetFirstDayOfWeek など)により、アプリにそうしたユーザー設定への読み取りアクセス権を付与することで、アプリでの情報の表示方法を調整できます。また、ACTION_LOCALE_CHANGEDBroadcastReceiver を登録して、地域の設定が変更されたときに言語 / 地域の構成の変更を処理することも可能です。

これらの設定を確認するには、設定アプリを開いて [システム] > [言語と入力] > [地域の設定] に移動します。

Android システム設定の地域の設定画面
Android システム設定の地域の設定に関する温度オプション。

ユーザー補助

非線形フォント スケーリングを 200% にする

Android 14 以降では、フォント スケーリングが 200% までサポートされます。これにより、ロービジョンのユーザーは、Web Content Accessibility Guidelines(WCAG)に準拠した追加のユーザー補助オプションを利用できます。

画面上の大きなテキスト要素が拡大しすぎないように、システムでは非線形のスケーリング曲線が適用されます。このスケーリング戦略では、大きいテキストが小さいテキストとは異なる率でスケーリングされます。非線形フォント スケーリングでは、異なるサイズの要素間の比例階層を維持したまま、線形テキスト スケーリングの高度な問題(テキストが途切れる、表示サイズが極端に大きいためにテキストが読みづらくなるなど)を軽減できます。

非線形フォント スケーリングでアプリをテストする

デバイスのユーザー補助設定で最大フォントサイズを有効にして、アプリをテストします。

すでにスケーリング ピクセル(sp)単位を使用してテキストのサイズを定義している場合は、これらの追加オプションとスケーリングの改善がアプリのテキストに自動的に適用されます。ただし、アプリがフォントサイズを正しく適用し、ユーザビリティに影響を与えずにより大きなフォントサイズに対応できることを確認するには、最大フォントサイズ(200%)を有効にして UI テストを行う必要があります。

200% のフォントサイズを有効にする手順は次のとおりです。

  1. 設定アプリを開き、[ユーザー補助] > [表示サイズとテキスト] に移動します。
  2. [フォントサイズ] オプションでは、最大フォントサイズの設定が有効になるまで、プラス(+)アイコンをタップします(このセクションに表示される画像で確認できます)。

テキストサイズにはスケール非依存ピクセル(sp)単位を使用する

テキストサイズは常に sp 単位で指定してください。アプリで sp 単位を使用している場合、Android はユーザーが希望するテキストサイズを適用して適切にスケーリングできます。

パディングに sp 単位を使用したり、暗黙的なパディングを前提としてビューの高さを定義したりしないでください。非線形フォント スケーリングでは sp 寸法が比例しない可能性があるため、4 sp + 20 sp が 24 sp と等しくない場合があります。

スケール非依存ピクセル(sp)単位を変換する

sp 単位からピクセルに変換するには TypedValue.applyDimension() を使用し、ピクセルを sp に変換するには TypedValue.deriveDimension() を使用します。これらのメソッドでは、適切な非線形スケーリング曲線が自動的に適用されます。

Configuration.fontScale または DisplayMetrics.scaledDensity を使用して方程式をハードコードしないでください。フォント スケーリングは非線形であるため、scaledDensity フィールドは正確でなくなります。fontScale フィールドは、フォントが単一のスカラー値でスケーリングされなくなったため、情報提供のみを目的として使用する必要があります。

lineHeight に sp 単位を使用する

必ず dp ではなく sp 単位を使用して android:lineHeight を定義すると、行の高さがテキストに合わせてスケーリングされます。そうしないと、テキストが sp であるのに lineHeight が dp または px の場合、拡大縮小が行われず、画面が窮屈に見えます。TextView は、textSizelineHeight の両方が sp 単位で定義されている場合にのみ、目的の比率が維持されるように lineHeight を自動的に修正します。

カメラとメディア

画像のウルトラ HDR

标准动态范围 (SDR) 与高动态范围 (HDR) 图片质量的示意图。

Android 14 增加了对高动态范围 (HDR) 图片的支持,此类图片可在拍照时保留来自传感器的更多信息,从而实现鲜艳的色彩和更高的对比度。Android 采用 Ultra HDR 格式,这种格式可完全向后兼容 JPEG 图片,允许应用与 HDR 图片无缝互操作,从而根据需要以标准动态范围 (SDR) 显示图片。

当您的应用为其 Activity 窗口选择使用 HDR 界面(通过清单条目或在运行时通过调用 Window.setColorMode())时,框架会自动在 HDR 界面中呈现这些图片。您还可以在支持的设备上拍摄压缩的 Ultra HDR 静态图片。从传感器中恢复的颜色越多,博文中的编辑效果就越灵活。与 Ultra HDR 图片关联的 Gainmap 可用于使用 OpenGL 或 Vulkan 渲染这些图片。

カメラ拡張機能のズーム、フォーカス、ポストビューなど

Android 14 升级并改进了相机扩展,使应用能够处理更长的处理时间,从而能够在支持的设备上使用计算密集型算法(如弱光摄影)改善图像。在使用相机扩展功能时,这些功能可为用户带来更稳健的体验。这些改进措施示例包括:

センサー内ズーム

CameraCharacteristicsREQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASESCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW が含まれている場合、アプリは高度なセンサー機能を使用して、ストリームのユースケースが CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW に設定された RAW ターゲットで CaptureRequest を使用することで、切り抜かれた RAW ストリームに全画角と同じピクセルを表示できます。リクエストのオーバーライド コントロールを実装することで、更新されたカメラでは、他のカメラ コントロールの準備が整う前でも、ユーザーはズーム コントロールを利用できるようになります。

ロスレス USB オーディオ

Android 14 では、USB 有線ヘッドセットでオーディオ マニアレベルの体験ができるロスレス オーディオ形式のサポートが追加されました。USB デバイスで優先されるミキサー属性のクエリ、優先されるミキサー属性の変更に対するリスナーの登録、AudioMixerAttributes クラスを使用したミキサー属性の設定を行うことができます。このクラスは、チャンネル マスク、サンプルレート、オーディオ ミキサーの動作などの形式を表します。このクラスを使用すると、ミキシング、音量調整、処理エフェクトなしに、音声を直接送信できます。

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

認証情報マネージャー

Android 14 添加了 Credential Manager 作为平台 API,并通过使用 Google Play 服务的 Jetpack 库为 Android 4.4(API 级别 19)设备提供了额外的支持。凭据管理器旨在使用 API 通过用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。凭据管理器在一个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。

通行密钥具有许多优势。例如,通行密钥基于业界标准构建,可在不同的操作系统和浏览器生态系统中使用,还可用于网站和应用。

如需了解详情,请参阅凭据管理器和通行密钥文档以及关于 Credential Manager 和通行密钥的博文

ヘルスコネクト

ヘルスコネクトは、ユーザーの健康とフィットネスに関するデータ用のオンデバイス リポジトリです。ユーザーはお気に入りのアプリ間でデータを共有でき、それらのアプリと共有するデータを 1 か所で管理できます。

Android 14 より前のバージョンの Android デバイスでは、ヘルスコネクトを Google Play ストアからアプリとしてダウンロードできます。Android 14 以降では、ヘルスコネクトはプラットフォームの一部であり、Google Play システム アップデートを通じてアップデートを受信します。別途ダウンロードする必要はありません。これにより、ヘルスコネクトは頻繁に更新され、アプリは Android 14 以降を搭載したデバイスでヘルスコネクトを利用できます。ユーザーはデバイスの設定からヘルスコネクトにアクセスし、プライバシー管理がシステム設定に統合されています。

Android 14 以降を搭載したデバイスでは、ユーザーは別途アプリをダウンロードすることなく、ヘルスコネクトの使用を開始することができます。
ユーザーは、健康とフィットネスに関するデータにアクセスできるアプリをシステム設定から管理できます。

ヘルスコネクトには、Android 14 の新機能(エクササイズのルートなど)がいくつか含まれており、ユーザーはワークアウトのルートを共有して、マップに表示できます。ルートは、一定の時間枠内に保存される場所のリストとして定義されます。アプリはエクササイズ セッションにルートを挿入し、関連付けることができます。ユーザーがこの機密データを完全に制御できるように、ユーザーは個々のルートを他のアプリと共有できるようにする必要があります。

詳しくは、ヘルスコネクトのドキュメントAndroid Health の新機能に関するブログ投稿をご覧ください。

OpenJDK 17 の更新

Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。

其中包含以下功能和改进:

  • 将大约 300 个 java.base 类更新为支持 Java 17。
  • 文本块 - 为 Java 编程语言引入了多行字符串字面量。
  • instanceof 模式匹配:可让对象在 instanceof 中被视为具有特定类型,而无需任何额外的变量。
  • 密封类:允许您限制哪些类和接口可以扩展或实现它们。

得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。

Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

アプリストアの改善

Android 14 では、アプリストアでのユーザー エクスペリエンスを改善するための PackageInstaller API がいくつか導入されています。

ダウンロードする前にインストールの承認をリクエストする

アプリをインストールまたは更新する際に、ユーザーの承認が必要になる場合があります。たとえば、REQUEST_INSTALL_PACKAGES 権限を使用するインストーラが新しいアプリをインストールしようとした場合などです。それより前のバージョンの Android では、APK がインストール セッションに書き込まれてセッションがcommit された後にのみ、アプリストアでユーザーの承認をリクエストできます。

Android 14 以降では、requestUserPreapproval() メソッドを使用して、インストール セッションを commit する前にユーザーの承認をリクエストできます。この改善により、ユーザーがインストールを承認するまで、アプリストアで APK のダウンロードが延期されます。さらに、ユーザーがインストールを承認すると、アプリストアはユーザーの作業を妨げることなく、バックグラウンドでアプリをダウンロードしてインストールできます。

今後の更新に責任を持つことを示す

setRequestUpdateOwnership() メソッドを使用すると、インストーラは、インストール中のアプリの今後のアップデートに責任を持つことをシステムに示すことができます。この機能により、更新の所有権の適用が可能になります。つまり、更新の所有者のみがアプリに自動更新をインストールできます。更新の所有権の適用により、ユーザーは想定されるアプリストアからのみ更新を受け取るようになります。

その他のインストーラ(INSTALL_PACKAGES 権限を利用するものを含む)がアップデートをインストールするには、ユーザーの明示的な承認を得る必要があります。ユーザーが別のソースから更新を進めることにした場合、更新の所有権は失われます。

影響が少ないタイミングでアプリを更新する

アプリストアは通常、アクティブに使用されているアプリを更新することはありません。これは、アプリの実行中のプロセスが強制終了され、ユーザーの操作が中断される可能性があるためです。

Android 14 以降では、InstallConstraints API を使用することで、インストーラはアプリのアップデートを適切なタイミングで実施できます。たとえば、アプリストアで commitSessionAfterInstallConstraintsAreMet() メソッドを呼び出して、ユーザーが対象のアプリを操作しなくなった場合にのみ更新が commit されるようにできます。

オプションの分割をシームレスにインストールする

分割 APK を使用すると、アプリの機能をモノリシック APK としてではなく、別々の APK ファイルで配信できます。これにより、アプリストアでさまざまなアプリ コンポーネントの配信を最適化できます。たとえば、アプリストアは、ターゲット デバイスのプロパティに基づいて最適化できます。PackageInstaller API は、API レベル 22 で導入されて以来、分割をサポートしています。

Android 14 では、setDontKillApp() メソッドにより、新しい分割がインストールされたときに、アプリの実行中のプロセスを強制終了すべきでないことを示すことができます。アプリストアでは、この機能を使用して、ユーザーがアプリを使用している間、アプリの新しい機能をシームレスにインストールできます。

アプリのメタデータ バンドル

Android 14 以降では、Android パッケージ インストーラを使用して、データ セーフティ方針などのアプリのメタデータを指定して、Google Play などのアプリストア ページに追加できます。

ユーザーがデバイスのスクリーンショットを撮影したときに検出する

为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。

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

共有シートのカスタム アクションとランキングの改善

Android 14 では、システム共有シートが更新され、カスタムのアプリ アクションと有益なプレビュー結果をユーザーに提供できるようになりました。

カスタム アクションを追加する

Android 14 では、アプリで呼び出すシステム共有シートにカスタム アクションを追加できます。

共有シートのカスタム アクションのスクリーンショット。

直接共有ターゲットのランキングを改善する

Android 14 では、より有用な結果をユーザーに提供するため、アプリからのより多くのシグナルを使用してダイレクト シェア ターゲットのランキングが決定されます。ランキングのための最も有用なシグナルを提供するには、ダイレクト シェア ターゲットのランキングの改善のガイダンスに従ってください。通信アプリでは、送受信メッセージのショートカットの使用状況を報告することもできます。

共有シートの [ダイレクト シェア] 行(1 を参照)

予測型「戻る」の組み込みアニメーションとカスタム アニメーションのサポート

動画: 予測型「戻る」アニメーション

Android 13 では、開発者向けオプションの背後に、予測型のホームに戻るアニメーションが導入されました。開発者向けオプションを有効にしたサポートされているアプリで使用した場合、下にスワイプすると、「戻る」ジェスチャーでアプリを終了してホーム画面に戻ることを示すアニメーションが表示されます。

Android 14 では、予測型戻る機能に関して複数の改善と新しいガイダンスが追加されています。

この Android 14 プレビュー リリースでは、予測型戻る機能のすべての機能が開発者向けオプションで提供されています。詳しくは、アプリを予測型「戻る」に移行するデベロッパー ガイドと、カスタムのアプリ内遷移を作成するためのデベロッパー ガイドをご覧ください。

大画面デバイス メーカーのアプリごとのオーバーライド

借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP 替换项指示系统调整应用大小以适应显示屏尺寸(避免尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false" 也是如此。

替换项旨在改善大屏设备上的用户体验。

新的清单属性可让您为应用停用某些设备制造商替换项。

大画面のユーザーのアプリごとのオーバーライド

アプリごとのオーバーライドにより、大画面デバイスでのアプリの動作が変わります。たとえば、OVERRIDE_MIN_ASPECT_RATIO_LARGE デバイス メーカーのオーバーライドは、アプリの設定に関係なく、アプリのアスペクト比を 16:9 に設定します。

Android 14 QPR1 では、大画面デバイスで新しい設定メニューを使用して、アプリごとのオーバーライドを適用できます。

アプリの画面共有

アプリの画面共有を使用すると、ユーザーは画面コンテンツの録画中にデバイス画面全体ではなくアプリのウィンドウを共有できます。

アプリの画面共有では、ステータスバー、ナビゲーション バー、通知、その他のシステム UI 要素が共有ディスプレイから除外されます。選択したアプリのコンテンツのみが共有されます。

アプリの画面共有により、ユーザーは複数のアプリを実行できるが、コンテンツの共有は 1 つのアプリに限定されるため、生産性とプライバシーが向上します。

Google Pixel 8 Pro の Gboard での LLM を活用したスマート リプライ

在附带 12 月功能更新版的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中试用更优质的智能回复(由 Google Tensor 上运行的设备端大型语言模型 (LLM) 提供支持)。

此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中推出美式英语的有限预览版。它需要使用配有 Gboard 的 Pixel 8 Pro 设备作为键盘。

如需试用,请先在设置 > 开发者选项 > AiCore 设置 > 启用 Aicore Persistent 中启用该功能。

接下来,在受支持的应用中打开对话,以便在 Gboard 的建议栏中看到由 LLM 提供支持的智能回复,以响应收到的消息。

Gboard 利用设备端 LLM 提供更高质量的智能回复。

グラフィック

パスはクエリと補間が可能

Android 的 Path API 是一种强大且灵活的机制,可用于创建和渲染矢量图形,能够描边或填充路径,根据线段、二次曲线或立方曲线构建路径,执行布尔运算以获取更复杂的形状,或同时执行所有这些操作。不过,您无法找出 Path 对象中实际包含的内容;该对象的内部信息在创建后对于调用方是不透明的。

如需创建 Path,您可以调用 moveTo()lineTo()cubicTo() 等方法来添加路径片段。但是,无法询问该路径有哪些段,因此您必须在创建时保留该信息。

从 Android 14 开始,您可以查询路径以了解其内部内容。首先,您需要使用 Path.getPathIterator API 获取 PathIterator 对象:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

接下来,您可以调用 PathIterator 逐个遍历片段,并检索每个片段的所有必要数据。以下示例使用了 PathIterator.Segment 对象,它会为您打包数据:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

PathIterator 还有一个非分配版 next(),您可以在其中传入缓冲区来保存点数据。

查询 Path 数据的一个重要用例是插值。例如,您可能想在两个不同的路径之间添加动画(或变形)。为了进一步简化该用例,Android 14 还在 Path 中添加了 interpolate() 方法。假设两个路径具有相同的内部结构,interpolate() 方法会使用该插值结果创建一个新的 Path。以下示例返回了形状介于 pathotherPath 之间的一半(线性插值为 0 .5)的路径:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

Jetpack graphics-path 库也为早期版本的 Android 启用了类似的 API。

頂点シェーダーとフラグメント シェーダーを使用したカスタム メッシュ

Android 长期支持绘制具有自定义着色的三角形网格,但输入网格格式被限制为几种预定义的属性组合。Android 14 增加了对自定义网格的支持,自定义网格可定义为三角形三角形带,并且可以视需要编入索引。这些网格通过自定义属性、顶点步长、转换以及用 AGSL 编写的顶点和片段着色器指定

顶点着色器定义变化,例如位置和颜色,而 fragment 着色器可以选择定义像素的颜色,通常通过使用顶点着色器创建的变化。如果 fragment 着色器提供了颜色,则它会使用绘制网格时选择的混合模式与当前的 Paint 颜色混合。您可以将 uniform 传递到 fragment 和顶点着色器中,以提高灵活性。

Canvas 用のハードウェア バッファ レンダラ

Android の Canvas API を使用してハードウェア アクセラレーションを HardwareBuffer に描画できるように、Android 14 では HardwareBufferRenderer が導入されました。この API は、ユースケースに SurfaceControl を介したシステム コンポジタとの通信が含まれ、低レイテンシの描画を行う場合に特に便利です。