面向开发者的 Android 10

Android 10 围绕三个重要主题构建。首先,Android 10 通过先进的机器学习技术以及对可折叠设备和 5G 手机等新兴设备的支持,引领着移动创新的前沿。其次,Android 10 将隐私和安全作为核心重点,提供近 50 项功能,为用户提供更强大的保护、透明度和控制。最后,Android 10 扩展了用户的数字健康控制,以便个人和家庭能够更好地平衡技术使用。

以下是面向开发者的 Android 10 的功能以及您今天如何使用它。

创新和新体验

借助 Android 10,您可以利用最新的硬件和软件创新,为用户构建出色的应用体验。

借助 Android 10,您可以为可折叠设备和其他大屏幕设备优化您的应用。

可折叠设备

在强大的多窗口支持基础上,Android 10 扩展了应用窗口之间的多任务处理功能,并提供屏幕连续性,以在设备折叠或展开时保持应用状态。Android 10 在 onResumeonPause 中添加了多项改进,以支持多重恢复并在您的应用获得焦点时通知您。它还改变了 resizeableActivity 清单属性的工作方式,以帮助您管理应用在可折叠和大屏幕上的显示方式。为了帮助您为可折叠设备进行构建,您可以在 Android Studio 中将可折叠模拟器配置为虚拟设备 (AVD)。有关如何优化可折叠设备应用的详细信息,请参阅开发者指南

5G 网络

5G 有望提供持续更快的速度和更低的延迟,Android 10 添加了对 5G 的平台支持,并扩展了现有 API 以帮助您利用这些增强功能。您可以使用连接性 API 检测设备是否具有高带宽连接,并检查连接是否按流量计费。借助这些功能,您的应用和游戏可以针对 5G 用户量身定制丰富、沉浸式的体验。

通知中的智能回复

Android 10 使用设备端机器学习在通知中建议上下文操作,例如消息的智能回复或打开通知中地址的地图。您的应用可以立即利用此功能,而无需您进行任何操作。系统提供的智能回复和操作默认直接插入到通知中。如果需要,您仍然可以提供自己的回复和操作。只需使用 setAllowGeneratedReplies()setAllowSystemGeneratedContextualActions() 按通知选择退出智能回复。

智能回复可以根据通知内容建议操作。

深色主题

Android 10 增加了系统范围的深色主题,非常适合弱光环境并有助于节省电量。用户可以通过“设置”或开启“省电模式”来激活新的系统范围深色主题。这将把系统 UI 更改为深色,并启用支持该深色主题的应用的深色主题。您可以为您的应用构建自定义深色主题,或者选择新的强制深色功能,该功能允许系统根据您现有主题动态创建深色版本。您可能还希望利用 AppCompat 的 DayNight 功能,为早期 Android 版本的用户提供深色主题。有关更多信息,请参阅开发者指南

Android 10 可以通过强制深色功能动态为您的应用创建深色主题。

手势导航

手势导航为应用提供了用于内容的全屏。

Android 10 引入了完全手势导航模式,该模式消除了导航栏区域,并允许应用使用全屏提供更丰富、更沉浸式的体验。它通过边缘滑动而不是可见按钮保留了熟悉的“返回”、“主页”和“最近”导航。为了与手势导航无缝融合,您的应用应实现边缘到边缘的显示,绘制在导航栏后面以创建沉浸式体验。为了实现这一点,应用应使用 setSystemUiVisibility() API 以全屏布局,然后根据需要处理 WindowInsets,以确保重要的 UI 部分不会被遮挡。立即开始优化您的应用,并参阅我们的系列博客文章以获取更多信息。

设置面板

您现在可以通过新的 设置面板 API 直接在您的应用上下文中显示关键系统设置。设置面板是一个浮动 UI,您可以调用它来显示用户可能需要的设置,例如互联网连接、NFC 和音量。例如,浏览器可以显示一个包含连接设置的面板,如飞行模式、Wi-Fi(包括附近网络)和移动数据。要显示设置面板,只需使用新的 Settings.Panel 操作之一触发 intent 即可。

共享快捷方式

共享快捷方式使共享更快捷、更简单,允许用户直接跳转到另一个应用以共享内容。开发者可以发布共享目标,这些目标会在其应用中启动特定活动并附加内容,并将其显示给用户在共享 UI 中。由于它们是预先发布的,因此共享 UI 在启动时会立即加载。共享快捷方式类似于应用快捷方式,并使用相同的 ShortcutInfo API。该 API 也受 ShareTarget AndroidX 库支持。有关详细信息,请参阅示例应用

共享快捷方式让用户可以直接跳转到您应用中的特定活动并附加内容。

用户隐私

隐私是 Android 10 的核心重点,从平台中更强的保护到专为隐私设计的新功能。在之前版本的基础上,Android 10 包含广泛的更改,以保护隐私并为用户提供更多控制,包括改进的系统 UI、更严格的权限以及对应用可以使用哪些数据的限制。有关如何在您的应用中支持这些更改的详细信息,请参阅隐私权变更

用户现在可以选择仅在应用在前台运行时授予位置信息访问权限。

让用户对位置数据拥有更多控制权 - 用户通过新的权限选项对位置数据拥有更多控制权——他们现在可以只允许应用在实际使用期间(在前台运行)访问位置信息。对于大多数应用而言,这提供了足够的访问级别,而对于用户而言,这是透明度和控制方面的一大改进。要了解更多关于位置信息更改的信息,请参阅开发者指南或我们的博客文章

保护网络扫描中的位置数据 - 大多数用于扫描网络的 API 已经需要粗略位置权限。Android 10 通过改为要求精确位置权限来增强对这些 API 的保护。

防止设备跟踪 - 应用不再能访问可能用于跟踪的不可重置设备标识符,包括设备 IMEI、序列号和类似标识符。默认情况下,连接到 Wi-Fi 网络时,设备的 MAC 地址也会随机化。阅读最佳实践以帮助您为您的用例选择正确的标识符,并在此查看详细信息。

保护外部存储中的用户数据 - Android 10 引入了多项更改,旨在让用户对外部存储中的文件及其中的应用数据拥有更多控制权。应用可以将其自己的文件存储在私有沙盒中,但必须使用 MediaStore 访问共享媒体文件,并使用系统文件选择器访问新下载集合中的共享文件。在此了解更多信息。

阻止不必要的干扰 - Android 10 阻止应用从后台启动,这些启动会意外地跳到前台并从另一个应用抢占焦点。在此了解更多信息。

安全

Android 10 引入了多项功能,通过加密、平台强化和身份验证的进步,使用户更加安全。在此阅读更多关于 Android 10 安全更新的信息。

存储加密 - 所有兼容 Android 10 的设备都必须加密用户数据,为了提高效率,Android 10 包含了我们的新加密模式 Adiantum

默认启用 TLS 1.3 - Android 10 还默认启用 TLS 1.3,这是 TLS 标准的一次重大修订,具有性能优势和增强安全性

平台强化 - Android 10 还包括对平台多个安全关键区域的强化

改进的生物识别技术 - Android 10 扩展了 BiometricPrompt 框架,以支持面部等被动身份验证方法,并增加了隐式和显式身份验证流程。在显式流程中,用户必须在身份验证期间在 TEE 中明确确认交易。隐式流程旨在为被动身份验证的交易提供更轻量级的替代方案。Android 10 还在需要时改进了设备凭据的回退功能。在此了解更多信息。

相机和媒体

照片的动态深度

应用现在可以请求动态深度图像,它由 JPEG、与深度相关元素相关的 XMP 元数据以及嵌入在同一文件中的深度和置信度图组成。这些让您可以在应用中提供专业的模糊和散景选项。动态深度是生态系统的开放格式,我们正在与合作伙伴合作,将其引入运行 Android 10 及更高版本的设备。

借助动态深度图像,您可以在应用中提供专业的模糊和散景选项。

音频播放捕获

现在,任何播放音频的应用都可以使用新的音频播放捕获 API 允许其他应用捕获其音频流。除了启用字幕和副标题外,该 API 还允许您支持流行的用例,如游戏直播。我们考虑到隐私和版权保护构建了这项新功能,因此应用捕获其他应用音频的能力受到限制,使应用能够完全控制其音频流是否可以被捕获。在此博客文章中阅读更多信息。

新的音频和视频编解码器

Android 10 添加了对开源视频编解码器 AV1 的支持,这使得媒体提供商能够使用更少的带宽向 Android 设备流式传输高质量视频内容。此外,Android 10 支持使用 Opus(一种针对语音和音乐流优化的开放式免版税编解码器)进行音频编码,以及在支持 HDR10+ 的设备上支持 HDR10+ 进行高动态范围视频。 MediaCodecInfo API 引入了一种更简单的方法来确定 Android 设备的视频渲染能力。对于任何给定的编解码器,您可以获取支持的大小和帧速率列表。

原生 MIDI API

对于在 C++ 中执行音频处理的应用,Android 10 引入了原生 MIDI API,用于通过 NDK 与 MIDI 设备通信。此 API 允许在音频回调中通过非阻塞读取检索 MIDI 数据,从而实现 MIDI 消息的低延迟处理。您可以通过示例应用和此处提供的源代码进行尝试。

定向、可变焦麦克风

Android 10 通过新的 MicrophoneDirection API 为您提供了对音频捕获的更多控制。您可以使用该 API 在进行音频录制时指定麦克风的首选方向。例如,当用户拍摄“自拍”视频时,您可以请求前置麦克风进行音频录制(如果存在)。此外,此 API 引入了控制可变焦麦克风的标准化方法,允许您的应用控制录音场维度

Vulkan 无处不在

Android 10 通过我们针对高性能 3D 图形的低开销、跨平台 API 的Vulkan 实现,扩展了 Vulkan 的影响力。Vulkan 1.1 现在是所有运行 Android 10 及更高版本的 64 位设备的强制要求,也是所有 32 位设备的推荐要求。我们已经看到 Vulkan 在生态系统中支持的显著势头——在运行 Android N 或更高版本的设备中,53% 支持 Vulkan 1.0.3 或更高版本。随着 Android 10 中的新要求,我们预计在未来一年中采用率将进一步提高。

连接

改进的对等网络和互联网连接

我们重构了 Wi-Fi 堆栈,以提高隐私和性能,并改进了管理 IoT 设备和建议互联网连接等常见用例——而无需位置权限。网络连接 API 使通过本地 Wi-Fi 管理 IoT 设备更容易,适用于配置、下载或打印等对等功能。网络建议 API 允许应用向用户显示首选 Wi-Fi 网络以进行互联网连接。

Wi-Fi 性能模式

应用现在可以通过启用高性能和低延迟模式来请求自适应 Wi-Fi。这些模式在低延迟对用户体验至关重要的情况下非常有益,例如实时游戏、活跃语音通话和类似用例。平台与设备固件协同工作,以最低功耗满足要求。要使用新的性能模式,请使用 WIFI_MODE_FULL_LOW_LATENCYWIFI_MODE_FULL_HIGH_PERF 调用 WifiManager.WifiLock.createWifiLock()。在这些模式下,平台与设备固件协同工作,以最低功耗满足要求。

Android 基础

ART 优化

ART 运行时的改进有助于您的应用更快启动、消耗更少内存并运行更流畅——而无需您进行任何操作。Google Play 提供的 ART 配置文件允许 ART 甚至在应用运行之前就预编译部分应用。在运行时,Android 10 将分代垃圾回收添加到 ART 的并发复制 (CC) 垃圾回收器中,以提高垃圾回收的时间和 CPU 效率,减少卡顿,并帮助应用在低端设备上运行得更好。

此图表显示了使用 Play 配置文件测试特定应用时启动时间的百分比改进。

神经网络 API 1.2

我们增加了 60 个新操作,包括 ARGMAX、ARGMIN、量化 LSTM,以及一系列性能优化。这为加速更大范围的模型奠定了基础,例如用于目标检测和图像分割的模型。我们正在与硬件供应商和流行的机器学习框架(如 TensorFlow)合作,以优化和推出对 NNAPI 1.2 的支持。

热力 API

当设备变得过热时,它们可能会限制 CPU 和/或 GPU,这可能会以意想不到的方式影响应用和游戏。现在,在 Android 10 中,应用和游戏可以使用热力 API 来监控设备上的变化并采取措施帮助恢复正常温度。例如,流媒体应用可以降低分辨率/比特率或网络流量,相机应用可以禁用闪光灯或密集图像增强,或者游戏可以降低帧速率或多边形镶嵌。在此阅读更多信息。

通过公共 API 实现兼容性

Android 10 继续扩展对非 SDK 接口的限制,以便应用逐渐只使用公共 API。如果您当前使用的接口受到限制,您可以请求该接口的新公共 API。为了帮助您完成过渡并防止您的应用出现问题,我们只在您的应用面向 Android 10 (API 29) 时才启用这些限制。有关限制的更多详细信息,请参阅开发者指南

更快更新,更新鲜的代码

Android 10 通过 Project Treble 实现了更快更新,该项目在 Android 与设备制造商和芯片制造商提供的底层设备代码之间提供了统一、可测试的接口。通过 Treble,设备制造商可以更快、更低成本地将 Android 10 带到符合 Treble 规范的设备上。

Android 10 也是第一个支持 Project Mainline(官方称为 Google Play 系统更新)的版本,这是我们保护 Android 用户并使其设备保持重要代码更新的新技术——直接来自 Google Play。通过 Google Play 系统更新,我们能够更新运行 Android 10 及更高版本的所有设备上的特定内部组件,而无需设备制造商进行完整的系统更新。

对于开发者而言,我们预计 Android 10 中的这些更新将有助于推动平台实现在设备上的广泛一致性,并随着时间的推移带来更大的一致性,从而降低您的开发和测试成本。

开始使用

有关 Android 10 的完整开发者资源,请访问 developer.android.com/10