面向开发者的 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 新增了一个系统级深色主题,非常适合弱光条件并有助于节省电量。用户可以前往“设置”或开启省电模式,激活新的系统级深色主题。这会将系统界面更改为深色,并为支持深色主题的应用启用深色主题。您可以为应用构建自定义深色主题,也可以选择使用新的 Force Dark 功能,让系统根据现有主题动态创建深色版本。您还可以利用 AppCompat 的 DayNight 功能,为使用早期 Android 版本的用户提供深色主题。如需了解详情,请参阅开发者指南

Android 10 可以使用 Force Dark 为应用动态创建深色主题。

手势导航

手势导航可让应用全屏显示内容。

Android 10 引入了全手势导航模式,该模式消除了导航栏区域,并允许应用使用全屏来提供更丰富、更沉浸式的体验。它通过边缘滑动(而不是可见按钮)保留了用户熟悉的“返回”“主屏幕”和“最近用过”导航。为了与手势导航无缝融合,您应全屏显示,在导航栏后面绘制,以打造沉浸式体验。如需实现这一点,应用应使用 setSystemUiVisibility() API 以全屏模式布局,然后酌情处理 WindowInsets,以确保重要的界面部分不会被遮挡。立即开始优化应用,并查看我们的博文系列了解详情。

设置面板

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

共享快捷方式

共享快捷方式使分享更加轻松快捷,可让用户直接跳转到其他应用来分享内容。开发者可以发布共享目标,从而在应用中启动特定 activity 并附加内容,并在共享界面中向用户显示。由于共享界面是提前发布的,因此共享界面会在启动时立即加载。共享快捷方式与应用快捷方式类似,并使用相同的 ShortcutInfo API。ShareTarget AndroidX 库也支持此 API。如需了解详情,请参阅示例应用

通过共享快捷方式,用户可以直接跳转到应用中的特定 activity,并附加内容。

用户隐私设置

隐私保护是 Android 10 的核心关注内容,包括在平台中提供更强大的保护,以及在设计时充分考虑隐私保护的新功能。Android 10 基于先前版本构建,包含大量更改以保护隐私并赋予用户更多控制权,同时改进了系统界面、更严格的权限以及对应用可以使用的数据进行了限制。如需详细了解如何在您的应用中支持这些变更,请参阅隐私权变更

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

让用户对位置数据拥有更大的控制权 - 用户可以通过新的权限选项更好地控制其位置数据;用户现在可以允许应用仅在实际使用中(在前台运行)时才访问位置信息。对于大多数应用而言,这提供了足够的访问权限级别,而对于用户而言,这在透明度和控制方面是一项重大改进。如需详细了解位置信息变更,请参阅开发者指南或我们的博文

在扫描网络时保护位置数据 - 用于扫描网络的大多数 API 都要求粗略位置权限。Android 10 改为要求精确的位置信息权限,从而增强了对这些 API 的保护。

阻止设备跟踪 - 应用无法再访问可用于跟踪的不可重置设备标识符,包括设备 IMEI、序列号和类似标识符。默认情况下,设备的 MAC 地址在连接到 Wi-Fi 网络时也是随机分配的。请阅读最佳实践,了解如何为您的用例选择合适的标识符;如需了解详情,请点击此处

保护外部存储空间中的用户数据 - 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+(适用于支持它的设备上的高动态范围视频)对音频进行编码。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 的影响范围。现在,所有搭载 Android 10 及更高版本的 64 位设备都必须支持 Vulkan 1.1,并且建议所有 32 位设备使用 Vulkan 1.1。我们已经发现,生态系统中 Vulkan 支持发展势头强劲 - 在搭载 Android N 或更高版本的设备中,53% 的设备支持 Vulkan 1.0.3 或更高版本。随着 Android 10 中的新要求的推出,我们预计在未来一年内会进一步提高采用率。

畅连乐享

改进了点对点连接和互联网连接

我们重构了 Wi-Fi 堆栈,以加强隐私保护和性能,同时改进常见用例,例如管理 IoT 设备和提供互联网连接建议,而无需请求位置信息权限。借助网络连接 API,您可以更轻松地通过本地 Wi-Fi 管理点对点功能(如配置、下载或打印)。网络建议 API 可让应用向用户显示首选 Wi-Fi 网络以进行互联网连接。

WLAN 性能模式

应用现在可以通过启用高性能和低延迟模式来请求自适应 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 配置文件进行测试时特定应用的启动时间缩短百分比。

Neural Networks API 1.2

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

Thermal API

设备过热可能会限制 CPU 和/或 GPU,从而可能以意想不到的方式影响应用和游戏。现在,在 Android 10 中,应用和游戏可以使用 Thermal API 来监控设备上的变化,并采取措施来帮助恢复正常温度。例如,影音在线播放应用可以降低分辨率/比特率或降低网络流量;相机应用可以停用闪光灯或密集型图片增强功能,游戏可以降低帧速率或减少多边形曲面细分。如需了解详情,请点击此处

通过公共 API 实现兼容性

Android 10 继续扩大对非 SDK 接口的限制,以便应用逐步转为仅使用公共 API。如果您当前使用的接口受到限制,则可以为该接口请求新的公共 API。为了帮助您顺利完成过渡并防止应用中断,我们仅在您的应用以 Android 10 (API 29) 为目标平台时才会启用这些限制。如需详细了解这些限制,请参阅开发者指南

更新速度更快,代码更新频率更高

Android 10 可通过 Treble 计划加快更新速度,这可在 Android 与设备制造商和芯片制造商提供的底层设备代码之间提供一致且可测试的接口。通过 Treble,设备制造商能够以更快的速度和更低的成本将 Android 10 引入符合 Treble 标准的设备。

Android 10 也是首个支持 Project Mainline(官方名称为“Google Play 系统更新”)的版本。Project Mainline 是我们的一项新技术,用于保护 Android 用户并通过重要的代码更改及时更新设备 - 这些变更由 Google Play 直接提供。借助 Google Play 系统更新,我们能够更新所有搭载 Android 10 及更高版本的设备上的特定内部组件,而无需设备制造商进行完整的系统更新。

对于开发者来说,我们预计 Android 10 中的这些更新有助于广泛促进平台实现的一致性,并随着时间的推移实现更高的一致性,从而降低您的开发和测试费用。

开始使用

如需获取适用于 Android 10 的完整开发者资源,请访问 developer.android.com/10