功能與 API 總覽

Android 15 為開發人員推出了強大的新功能和 API。下列各節總結這些功能,協助您開始使用相關的 API。

如需新增、修改及移除 API 的詳細清單,請參閱 API 差異比較表。如要進一步瞭解新 API,請造訪 Android API 參考資料。系統會醒目顯示新的 API,方便您查看。此外,如要瞭解平台異動可能會影響應用程式的哪些部分,請務必查看 Android 15 鎖定 Android 15 時影響應用程式的行為變更,以及影響所有應用程式 (無論 targetSdkVersion 為何) 的行為變更

相機與媒體

Android 15 包含多項功能,可改善相機和媒體體驗,並提供相關工具和硬體,協助創作者在 Android 平台上實現願景。

低光源增強

Android 15 引入了低光增强,这是一种新的自动曝光模式,可供 Camera 2夜间模式相机扩展使用。“低光增强”功能可调整预览视频流在弱光条件下的曝光量。这与夜间模式相机扩展程序创建静态图片的方式不同,因为夜间模式会组合多张照片来制作单张增强图片。虽然夜间模式非常适合创建静态图片,但无法创建连续的帧流,但“低光增强”可以。因此,“低光增强”可以实现新的相机功能,例如:

  • 提供增强的图片预览,以便用户更好地为弱光环境取景
  • 在光线昏暗的环境下扫描二维码

如果您启用“弱光增强”,它会在光线较暗时自动开启,在光线较暗时关闭。

应用可以在光线昏暗的环境下录制预览流,以保存明亮的视频。

有关详情,请参阅弱光增强

應用程式內相機控制選項

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 已新增使用 USB 連線到使用 USB 連線至 MIDI 2.0 裝置的支援功能,該支援使用通用 MIDI 封包 (UMP) 通訊。Android 15 將 UMP 支援範圍擴及虛擬 MIDI 應用程式,讓撰寫應用程式能夠以虛擬 MIDI 2.0 裝置的形式控制合成器應用程式,就像使用 USB MIDI 2.0 裝置一樣。

連線能力

Android 15 會更新平台,讓應用程式存取最新的通訊內容。

衛星支援

Android 15 持續擴充對衛星連線的平台支援,並加入部分 UI 元素,以確保在衛星連線環境中提供一致的使用者體驗。

應用程式可以使用 ServiceState.isUsingNonTerrestrialNetwork() 偵測裝置是否連上衛星,以便進一步瞭解無法使用完整網路服務的原因。此外,Android 15 支援簡訊、多媒體訊息應用程式,以及預先載入的 RCS 應用程式,可使用衛星連線收發訊息。

裝置連上衛星時,畫面上會出現通知。

更流暢的 NFC 體驗

Android 15 正努力让感应式付款体验更加顺畅和可靠,同时继续支持 Android 强大的 NFC 应用生态系统。在受支持的设备上,应用可以请求 NfcAdapter 进入观察模式,在该模式下,设备会监听 NFC 读取器,但不响应 NFC 读取器,同时发送应用的 NFC 服务 PollingFrame 对象进行处理。PollingFrame 对象可用于在首次与 NFC 读取器通信之前进行身份验证,在许多情况下可实现一键交易。

此外,应用现在可以在受支持的设备上注册指纹,以便接收轮询循环活动的相关通知,从而实现通过多个可感知 NFC 的应用顺畅执行的操作。

錢包角色

Android 15 introduces a new Wallet role that allows tighter integration with the user's preferred wallet app. This role replaces the NFC default contactless payment setting. Users can manage the Wallet role holder by navigating to Settings > Apps > Default Apps.

The Wallet role is used when routing NFC taps for AIDs registered in the payment category. Taps always go to the Wallet role holder unless another app that is registered for the same AID is running in the foreground.

This role is also used to determine where the Wallet QuickAccess tile should go when activated. When the role is set to "None", the QuickAccess tile isn't available and payment category NFC taps are only delivered to the foreground app.

開發人員的工作效率與工具

我們所做的大部分努力都是為了改善效率提升中心,例如 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 系統更新,在超過十億部搭載 Android 12 (API 級別 31) 以上版本的裝置上更新,因此您可以指定最新的程式設計功能。

Java 和 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。

應用程式封存

Android 和 Google Play 去年宣布支持应用归档,这让用户可以通过从 Google Play 上使用 Android App Bundle 发布的部分不常用的应用来释放空间。Android 15 现在包含对应用归档和取消归档的操作系统级支持,因此所有应用商店都可以更轻松地实现此功能。

具有 REQUEST_DELETE_PACKAGES 权限的应用可以调用 PackageInstaller requestArchive 方法来请求归档已安装的应用软件包,此操作会移除 APK 和所有缓存的文件,但会保留用户数据。已归档的应用会通过 LauncherApps API 作为可显示的应用返回;用户会看到界面处理方式,以突出显示这些应用已归档。如果用户点按已归档的应用,相关安装程序将收到将其取消归档的请求,并且可以通过 ACTION_PACKAGE_ADDED 广播监控恢复过程。

無障礙功能

Android 15 加入了改善使用者無障礙功能的功能。

更強大的點字功能

在 Android 15 中,我們讓 TalkBack 能夠支援透過 USB 和安全藍牙採用 HID 標準的點字顯示器。

如同滑鼠和鍵盤所使用的標準,Android 日後將支援更多點字顯示器。

大螢幕與板型規格

Android 15 可讓應用程式充分運用 Android 的板型規格,包括大螢幕、可折疊式裝置和折疊式裝置。

封面螢幕支援

應用程式可以宣告 Android 15 用來宣告的屬性,以便讓您的 ApplicationActivity 顯示在支援的可滑動裝置小封面螢幕。這些畫面太小,無法視為 Android 應用程式的相容目標,但您的應用程式可以選擇支援這些畫面,藉此在更多地方提供您的應用程式。

效能和電池

Android 會持續專注於提升應用程式的效能和品質。Android 15 導入了新的 API,可提高應用程式工作的執行效率、最佳化應用程式效能,以及收集應用程式的相關深入分析資訊。

ApplicationStartInfo API

在舊版 Android 中,應用程式啟動程序有點複雜。要判斷應用程式內的是從冷、暖還是熱狀態啟動,並不容易。此外,您也很難知道應用程式在各種啟動階段花費的時間,包括建立程序、呼叫 onCreate、繪製第一個影格等。將 Application 類別例項化時,您無法得知應用程式是從廣播、內容供應器、工作、備份、啟動完成、鬧鐘或 Activity 啟動。

Android 15 上的 ApplicationStartInfo API 提供了以上所有功能。甚至可以選擇在流程中加入自己的時間戳記,以在同一位置收集時間資料。除了收集指標,您還可以使用 ApplicationStartInfo 直接最佳化應用程式啟動作業。舉例來說,您可以在應用程式因為廣播訊息而啟動時,避免在 Application 類別中耗費大量成本的 UI 相關程式庫。

應用程式大小詳細資訊

自 Android 8.0(API 级别 26)起,Android 就一直包含 StorageStats.getAppBytes API,该 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 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 所擁有的活動受到記錄,系統就會將應用程式視為可見。這麼一來,如果應用程式正在執行機密作業,可以通知使用者系統正在錄製他們的應用程式。

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>

Android 版 Privacy Sandbox

Android 15 將 Android 廣告服務納入最高等級 10,並納入最新版 Android 版 Privacy Sandbox。這是我們開發的新技術,旨在改善使用者隱私,並為行動應用程式提供有效且個人化廣告體驗。如要進一步瞭解 Android 版 Privacy Sandbox 開發人員預覽版和 Beta 版計畫,請參閱隱私權沙箱頁面,瞭解如何踏出第一步。

Health Connect

Android 15 會在 Health Connect by Android 周圍整合 Android 14 擴充功能 10,這是一個安全的集中式平台,可用於管理及分享應用程式收集的健康與健身資料。本次更新在健身營養等方面支援新資料類型。

局部分享螢幕畫面

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 的 FileIntegrityManager 包含新的 API,可運用 Linux kernel 中的 fs-verity 功能。有了這項功能,檔案就能受到自訂加密編譯簽章的保護,協助確保檔案不會遭到竄改或損毀。這可以提高安全性,避免潛在的惡意軟體或未經授權的檔案修改行為,而損害應用程式的功能或資料。

使用者體驗

Android 15 可讓應用程式開發人員和使用者進一步控管及彈性設定裝置,以符合自己的需求。

改善「零打擾」規則

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

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

國際化

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 的英语文本布局。