Android 10 围绕三个重要主题构建而成。首先,Android 10 凭借先进的机器学习技术和对新兴设备(如可折叠设备和支持 5G 的手机)的支持,塑造了移动创新的前沿技术。其次,Android 10 的主要关注点之一就是隐私权和安全性,其中近 50 项功能可为用户提供更好的保护、更高的透明度以及让用户更好地控制相关数据。最后,Android 10 可让用户更好地控制数字健康,因此个人和家庭都可以更好地利用此项技术。
下面,我们来介绍一下 Android 10 为开发者提供了哪些功能以及您现在能如何利用这些功能。
创新技术和新体验
借助 Android 10,您可以充分利用最新的硬件和软件创新,从而为用户打造出色的应用体验。
可折叠设备
Android 10 基于强大的多窗口支持构建而成,扩展了跨应用窗口的多任务处理能力,还提供了屏幕连续性,可以在设备折叠或展开时维持应用状态。Android 10 在 onResume 和 onPause 中添加了多项改进,用于支持多项恢复,并在应用获得焦点时通知应用。它还更改了 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 引入了全手势导航模式,该模式不显示通知栏区域,允许应用使用全屏来提供更丰富、更让人沉浸的体验。它通过边缘滑动(而不是可见的按钮)保留了用户熟悉的“返回”“主屏幕”和“最近用过”导航。为了与手势导航无缝融合,您应该实现无边框,在导航栏后面绘制,以打造沉浸式体验。如需实现这一点,应用应使用 setSystemUiVisibility() API 以全屏模式布局,然后相应地处理 WindowInsets,以确保重要的界面区域未被遮挡。立即开始优化您的应用,并查看我们的博文系列,以了解详情。
设置面板
现在,您可以通过新的 Settings Panel API 直接在应用的上下文中显示关键系统设置。设置面板是一个浮动界面,您可以调用该界面来显示用户可能需要的设置,例如互联网连接、NFC 和音量。例如,浏览器可以显示具有飞行模式、WLAN(包括附近网络)和移动数据等连接设置的面板。如需显示设置面板,只需触发包含某项新 Settings.Panel 操作的 intent。
共享快捷方式
分享快捷方式可以让分享更加轻松快捷,让用户能够直接跳转到其他应用来分享内容。开发者可以发布能在应用中启动特定 activity 的共享目标,同时附上内容;这些共享目标会在共享界面中向用户显示。由于共享界面是提前发布的,因此共享界面在启动后会立即加载。共享快捷方式类似于应用快捷方式,都使用同一个 ShortcutInfo API。ShareTarget AndroidX 库也支持此 API。如需了解详情,请参阅示例应用。
用户隐私设置
隐私权是 Android 10 的其中一个主要关注点,相关改进包括在平台中提供更强大的保护措施以及在设计新功能时谨记隐私性。Android 10 基于先前版本构建,并引入了大量变更(如改进了系统界面、让权限授予更加严格以及对应用能够使用哪些数据实施了限制),目的是保护隐私权并赋予用户更多控制权。如需详细了解如何在您的应用中支持这些变更,请参阅隐私权变更。
让用户对位置数据拥有更多控制权 - 通过新的权限选项,用户可以更好地控制其位置数据。他们现在可以仅在应用实际使用时(在前台运行)允许应用访问位置信息。对于大部分应用来说,这提供了足够的访问权限级别;而对于用户来说,这在确保透明度和控制权方面是一项重大改进。如需详细了解位置信息方面的变更,请参阅开发者指南或我们的博文。
在网络扫描时保护位置数据 - 用于扫描网络的大多数 API 都需要粗略位置信息权限。Android 10 改为要求精确位置信息权限,由此来增强对这些 API 的防御。
阻止设备跟踪 - 应用无法再访问不可重置的设备标识符(可用于跟踪),包括设备 IMEI、序列号和类似标识符。设备的 MAC 地址也会默认在连接到 WLAN 网络时随机分配。请阅读最佳做法,其中的内容有助于您为具体使用场景选择合适的标识符;同时点击此处了解详情。
保护外部存储空间中的用户数据 - 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 中相关新要求的推出,我们预计未来一年 Vulkan 的采用率将进一步提升。
连接
改进了点对点连接和互联网连接
我们重构了 Wi-Fi 堆栈,以改进隐私保护和性能,并改进常见用例(如管理 IoT 设备并建议互联网连接),而无需获取位置信息权限。网络连接 API 针对点对点功能(如配置、下载或打印)简化了通过本地 Wi-Fi 管理 IoT 设备的操作。网络建议 API 可让应用向用户显示首选 WLAN 网络以进行互联网连接。
WLAN 性能模式
应用现在可以通过启用高性能和低延迟模式来请求自适应 WLAN。当低延迟对用户体验(例如实时游戏、活跃语音通话及类似用例)非常重要时,这些优势会大有裨益。平台与设备固件配合使用,可以满足最低耗电量的要求。如需使用新的性能模式,请使用 WIFI_MODE_FULL_LOW_LATENCY
或 WIFI_MODE_FULL_HIGH_PERF
调用 WifiManager.WifiLock.createWifiLock()。在这些模式中,平台与设备固件配合使用,可以满足最低耗电量的要求。
Android 基础知识
ART 优化
ART 运行时的改进有助于您的应用更快地启动、消耗更少的内存并更顺畅地运行,而无需您执行任何操作。借助 Google Play 提供的 ART 配置文件,ART 在应用运行之前就可以预先编译应用组件。在运行时,Android 10 向 ART 的并发复制 (CC) 垃圾回收器添加了分代垃圾回收功能,以节省垃圾回收的时间并提高 CPU 效率,减少卡顿,同时帮助应用在低端设备上更顺畅地运行。
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 计划加快更新速度。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。