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 操作启动一个意图。

共享快捷方式

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

共享快捷方式允许用户直接跳转到应用中带有附加内容的特定活动。

用户隐私

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

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

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

保护网络扫描中的位置数据 - 用于扫描网络的大多数 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 进行音频编码——这是一种针对语音和音乐流式传输而优化的开放式、免版税编解码器——以及支持 HDR 的设备上的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 通过Vulkan实现扩展了低开销、跨平台 API 对高性能 3D 图形的应用。Vulkan 1.1 现在是所有运行 Android 10 及更高版本的 64 位设备的要求,并且是所有 32 位设备的建议。我们已经看到生态系统中对 Vulkan 支持的显著势头——在运行 Android N 或更高版本的设备中,53% 支持 Vulkan 1.0.3 或更高版本。随着 Android 10 中的新要求,我们预计在未来一年中采用率将进一步提高。

连接性

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

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

Wi-Fi 性能模式

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

Android 基础

ART 优化

ART 运行时方面的改进有助于您的应用启动速度更快、内存消耗更少,运行更流畅——无需您进行任何操作。ART 配置文件由 Google Play 提供,即使在应用运行之前,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