功能和 API 概览

Android 15 面向开发者引入了一些出色的新功能和 API。以下部分总结了这些功能,以帮助您开始使用相关 API。

如需查看新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档,新 API 会突出显示以方便查看。此外,如需了解平台变更可能会在哪些方面影响您的应用,请务必查看 Android 15 以 Android 15 为目标平台的应用对应用有影响的行为变更以及影响所有应用(无论 targetSdkVersion 如何)的行为变更

摄像头和媒体

Android 15 包含各种功能,可改善相机和媒体体验,并可让您使用各种工具和硬件来支持创作者在 Android 上将其构想变为现实。

弱光增强

Android 15 introduces Low Light Boost, a new auto-exposure mode available to both Camera 2 and the night mode camera extension. Low Light Boost adjusts the exposure of the Preview stream in low-light conditions. This is different from how the night mode camera extension creates still images, because night mode combines a burst of photos to create a single, enhanced image. While night mode works very well for creating a still image, it can't create a continuous stream of frames, but Low Light Boost can. Thus, Low Light Boost enables new camera capabilities, such as:

  • Providing an enhanced image preview, so users are better able to frame their low-light pictures
  • Scanning QR codes in low light

If you enable Low Light Boost, it automatically turns on when there's a low light level, and turns off when there's more light.

Apps can record off the Preview stream in low-light conditions to save a brightened video.

For more information, see Low Light Boost.

应用内相机控件

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

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

HDR 余量控制

Android 15 chooses HDR headroom that is appropriate for the underlying device capabilities and bit-depth of the panel. For pages that have lots of SDR content, such as a messaging app displaying a single HDR thumbnail, this behavior can end up adversely influencing the perceived brightness of the SDR content. Android 15 lets you control the HDR headroom with setDesiredHdrHeadroom to strike a balance between SDR and HDR content.

The brightness of SDR UI elements on the left screen appears to be more uniform than the brightness on the right screen, which simulates possible headroom issues when HDR and SDR content are mixed. By adjusting the HDR headroom, you can achieve a better balance between the SDR and HDR content.

音量控制

Android 15 introduces support for the CTA-2075 loudness standard to help you avoid audio loudness inconsistencies and ensure users don't have to constantly adjust volume when switching between content. The system leverages known characteristics of the output devices (headphones and speaker) along with loudness metadata available in AAC audio content to intelligently adjust the audio loudness and dynamic range compression levels.

To enable this feature, you need to ensure loudness metadata is available in your AAC content and enable the platform feature in your app. For this, you instantiate a LoudnessCodecController object by calling its create factory method with the audio session ID from the associated AudioTrack; this automatically starts applying audio updates. You can pass an OnLoudnessCodecUpdateListener to modify or filter loudness parameters before they are applied on the 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 will soon be updated to leverage LoudnessCodecController APIs for a seamless app integration.

虚拟 MIDI 2.0 设备

Android 13 added support for connecting to MIDI 2.0 devices using USB, which communicate using Universal MIDI Packets (UMP). Android 15 extends UMP support to virtual MIDI apps, enabling composition apps to control synthesizer apps as a virtual MIDI 2.0 device just like they would with an USB MIDI 2.0 device.

畅连乐享

Android 15 更新了该平台,让您的应用能够获享通信领域的最新进展。

卫星支持

Android 15 继续扩展对卫星连接的平台支持,并添加了一些界面元素,以确保在卫星连接环境中提供一致的用户体验。

应用可以使用 ServiceState.isUsingNonTerrestrialNetwork() 检测设备何时连接到卫星,从而更好地了解为什么全网络服务不可用。此外,Android 15 支持短信和彩信应用以及预加载的 RCS 应用,以便使用卫星连接收发信息。

设备连接到卫星时显示通知。

更顺畅的 NFC 体验

Android 15 is working to make the tap to pay experience more seamless and reliable while continuing to support Android's robust NFC app ecosystem. On supported devices, apps can request the NfcAdapter to enter observe mode, where the device listens but doesn't respond to NFC readers, sending the app's NFC service PollingFrame objects to process. The PollingFrame objects can be used to auth ahead of the first communication to the NFC reader, allowing for a one tap transaction in many cases.

In addition, apps can now register a fingerprint on supported devices so they can be notified of polling loop activity, which allows for smooth operation with multiple NFC-aware applications.

钱包角色

Android 15 引入了一个新的钱包角色,可让您与用户首选的钱包应用更紧密地集成。此角色取代了 NFC 默认的感应式付款设置。用户可以通过导航到设置 > 应用 > 默认应用来管理 Google 钱包角色持有者。

在为付款类别中注册的 AID 路由 NFC 触碰时,可使用“钱包”角色。除非已在前台运行为同一 AID 注册的另一个应用,否则点按操作会始终转到钱包角色持有者。

此角色还可用于确定钱包“快速访问”功能块在启用后应转到的位置。当角色设置为“无”时,“快速访问”功能块不可用,并且付款类别 NFC 触碰仅会传送到前台应用。

开发者工作效率和工具

虽然我们的大部分办公工作都围绕 Android StudioJetpack ComposeAndroid Jetpack 库等工具展开,但我们始终在平台中寻找方法来帮助您更轻松地实现愿景。

改进了 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 会继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致。

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

这些 API 通过 Google Play 系统更新在超过 10 亿台搭载 Android 12(API 级别 31)及更高版本的设备上进行了更新,让您能够以最新的编程功能为目标平台。

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

应用归档

Android and Google Play announced support for app archiving last year, allowing users to free up space by partially removing infrequently used apps from the device that were published using Android App Bundle on Google Play. Android 15 now includes OS level support for app archiving and unarchiving, making it easier for all app stores to implement it.

Apps with the REQUEST_DELETE_PACKAGES permission can call the PackageInstaller requestArchive method to request archiving an installed app package, which removes the APK and any cached files, but persists user data. Archived apps are returned as displayable apps through the LauncherApps APIs; users will see a UI treatment to highlight that those apps are archived. If a user taps on an archived app, the responsible installer will get a request to unarchive it, and the restoration process can be monitored by the ACTION_PACKAGE_ADDED broadcast.

无障碍功能

Android 15 添加了一些功能来改进用户的无障碍功能。

改进盲文功能

在 Android 15 中,TalkBack 可以支持通过 USB 和安全蓝牙使用 HID 标准的盲文显示屏。

此标准与鼠标和键盘使用的标准非常相似,有助于 Android 随着时间的推移而支持更广泛的盲文显示屏。

大屏设备和外形规格

Android 15 支持您的应用充分利用 Android 设备类型,包括大屏设备、可翻转设备和可折叠设备。

封面屏幕支持

您的应用可以声明一项属性,Android 15 会使用该属性将您的 ApplicationActivity 呈现在支持的可翻转设备的小封面屏幕上。这些屏幕太小,无法被视为 Android 应用的兼容目标,但您的应用可以选择支持这些屏幕,从而让您的应用可在更多位置使用。

性能和电池

Android 将继续专注于帮助您提高应用的性能和质量。Android 15 引入了新的 API,可帮助您更高效地执行应用中的任务、优化应用性能,以及收集有关应用的数据洞见。

ApplicationStartInfo API

In previous versions of Android, app startup has been a bit of a mystery. It was challenging to determine within your app whether it started from a cold, warm, or hot state. It was also difficult to know how long your app spent during the various launch phases: forking the process, calling onCreate, drawing the first frame, and more. When your Application class was instantiated, you had no way of knowing whether the app started from a broadcast, a content provider, a job, a backup, boot complete, an alarm, or an Activity.

The ApplicationStartInfo API on Android 15 provides all of this and more. You can even choose to add your own timestamps into the flow to help collect timing data in one place. In addition to collecting metrics, you can use ApplicationStartInfo to help directly optimize app startup; for example, you can eliminate the costly instantiation of UI-related libraries within your Application class when your app is starting up due to a broadcast.

详细的应用大小信息

Since Android 8.0 (API level 26), Android has included the StorageStats.getAppBytes API that summarizes the installed size of an app as a single number of bytes, which is a sum of the APK size, the size of files extracted from the APK, and files that were generated on the device such as ahead-of-time (AOT) compiled code. This number is not very insightful in terms of how your app is using storage.

Android 15 adds the StorageStats.getAppBytesByDataType([type]) API, which lets you get insight into how your app is using up all that space, including APK file splits, AOT and speedup related code, dex metadata, libraries, and guided profiles.

应用管理的性能剖析

Android 15 includes the all-new ProfilingManager class, which lets you collect profiling information from within your app. We're planning to wrap this with an Android Jetpack API that will simplify construction of profiling requests, but the core API will allow the collection of heap dumps, heap profiles, stack sampling, and more. It provides a callback to your app with a supplied tag to identify the output file, which is delivered to your app's files directory. The API does rate limiting to minimize the performance impact.

SQLite 数据库改进

Android 15 引入了新的 SQLite API,可提供底层 SQLite 引擎的高级功能,这些功能旨在解决应用中可能出现的特定性能问题。

开发者应查阅 SQLite 性能最佳实践,以充分利用其 SQLite 数据库,尤其是在使用大型数据库或运行对延迟敏感的查询时。

  • 只读延迟事务:发出只读事务(不包括写入语句)时,使用 beginTransactionReadOnly()beginTransactionWithListenerReadOnly(SQLiteTransactionListener) 发出只读 DEFERRED 事务。此类事务可以相互并发运行,如果数据库处于 WAL 模式,则它们可以与 IMMEDIATEEXCLUSIVE 事务并发运行。
  • 行数和 ID:新增了 API,用于检索已更改的行的计数或最后插入的行 ID,而无需发出额外的查询。getLastChangedRowCount() 返回当前事务中的最新 SQL 语句插入、更新或删除的行数,而 getTotalChangedRowCount() 返回当前连接的相关计数。getLastInsertRowId() 返回要在当前连接上插入的最后一行的 rowid
  • 原始语句:发出原始 SQlite 语句,绕过便捷封装容器以及它们可能产生的任何其他处理开销。

Android 动态性能框架更新

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 解析,其中包含一组 UriRelativeFilter 对象,这些对象构成了一组必须满足的 Intent 匹配规则,其中包括网址查询参数、网址片段以及屏蔽或排除规则。

您可以使用新的 <uri-relative-filter-group> 标记在 AndroidManifest XML 文件中定义这些规则,也可以选择包含 android:allow 标记。这些标记可以包含使用现有数据标记属性以及新的 android:queryandroid:fragment 属性的 <data> 标记。

下面是 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>

Privacy Sandbox on Android

Android 15 将 Android 广告服务提升到扩展级别 10,在其中融入了最新版本的 Privacy Sandbox on Android。我们致力于开发新技术来加强用户隐私保护,并为移动应用提供有效的个性化广告体验。我们的隐私沙盒页面详细介绍了 Privacy Sandbox on Android 开发者预览版和 Beta 版计划,以帮助您开始使用。

Health Connect

Android 15 围绕 Health Connect by Android 集成了 Android 14 扩展程序 10。Health Connect by Android 是一个安全的集中式平台,用于管理和共享应用收集的健康与健身数据。此更新增加了对健身营养等领域的新数据类型的支持。

局部屏幕共享

Android 15 支持局部屏幕共享,因此用户可以仅分享或录制应用窗口,而不是整个设备屏幕。此功能在 Android 14 QPR2 中首次启用,包含 MediaProjection 回调,可让您的应用自定义局部屏幕共享体验。请注意,对于以 Android 14(API 级别 34)或更高版本为目标平台的应用,现在需要针对每个 MediaProjection 捕获会话征得用户同意

安全性

Android 15 可帮助您增强应用的安全性并保护应用的数据。

适用于端到端加密的密钥管理

我们在 Android 15 中引入了 E2eeContactKeysManager,它提供用于存储加密公钥的操作系统级 API,有助于 Android 应用中的端到端加密 (E2EE)。

E2eeContactKeysManager 旨在与平台通讯录应用集成,使用户能够集中管理和验证其联系人的公钥。

使用 fs-verity 保护文件

Android 15 的 FileIntegrityManager 包含一些可让您利用 Linux 内核中 fs-verity 功能的强大功能的新 API。借助 fs-verity,您可以通过自定义加密签名保护文件,从而确保文件未被篡改或损坏。这有助于增强安全性,防止潜在的恶意软件或未经授权的文件修改,从而损害应用的功能或数据。

用户体验

Android 15 为应用开发者和用户提供了更大的控制力和灵活性,让他们能够根据自己的需求配置设备。

改进了“勿扰”规则

AutomaticZenRule 可让应用自定义注意力管理(勿扰)规则,并决定何时启用或停用这些规则。Android 15 大幅增强了这些规则,以改善用户体验。其中包含以下增强功能:

  • 将类型添加到 AutomaticZenRule,允许系统对某些规则应用特殊处理。
  • AutomaticZenRule 添加了图标,有助于使模式更易于识别。
  • AutomaticZenRule 添加 triggerDescription 字符串,用于描述应在哪些条件下为用户启用规则。
  • AutomaticZenRule 添加了 ZenDeviceEffects,以允许规则触发灰度显示、夜间模式或调暗壁纸等功能。

国际化

Android 15 添加了一些特性和功能,可在以不同语言使用设备时补充用户体验。

字符间理由

Starting with Android 15, text can be justified utilizing letter spacing by using JUSTIFICATION_MODE_INTER_CHARACTER. Inter-word justification was first introduced in Android 8.0 (API level 26), and inter-character justification provides similar capabilities for languages that use the whitespace character for segmentation, such as Chinese, Japanese, and others.

Layout for Japanese text using JUSTIFICATION_MODE_NONE.
Layout for English text using JUSTIFICATION_MODE_NONE.


Layout for Japanese text using JUSTIFICATION_MODE_INTER_WORD.
Layout for English text using JUSTIFICATION_MODE_INTER_WORD.


Layout for Japanese text using the new JUSTIFICATION_MODE_INTER_CHARACTER.
Layout for English text using the new JUSTIFICATION_MODE_INTER_CHARACTER.