Jelly Bean

Android 4.3

Android 4.3 on phone and tablet

欢迎使用 Android 4.3,一个更甜蜜版本的 Jelly Bean!

Android 4.3 包含性能优化和为用户与开发者带来的全新强大功能。本文档概述了为开发者新增的功能。

有关全新开发者 API 的详细信息,请参阅Android 4.3 API 文档。

如需详细了解为用户带来的全新 Jelly Bean 功能,请访问 www.android.com

更快、更流畅、响应更及时

Android 4.3 在 Jelly Bean 已有的性能改进(垂直同步时间三级缓冲降低触摸延迟CPU 输入增强硬件加速 2D 渲染)基础上,增加了新的优化,使 Android 速度更快。

为了提升图形性能,硬件加速 2D 渲染器现在可以优化绘制命令流,通过重新安排和合并绘制操作,将其转换为更高效的 GPU 格式。对于多线程处理,渲染器现在还可以利用跨多个 CPU 核心的多线程来执行特定任务。

Android 4.3 还改进了形状和文本的渲染。圆形和圆角矩形等形状现在以更高质量、更高效的方式渲染。文本优化包括使用多种字体或复杂字形集 (CJK) 时性能提升、缩放文本时渲染质量更高以及阴影渲染更快。

改进的窗口缓冲区分配为您的应用带来更快的图像缓冲区分配,减少创建窗口时开始渲染所需的时间。

为了实现最高性能的图形,Android 4.3 引入了对 OpenGL ES 3.0 的支持,并使其可通过框架和原生 API 供应用使用。在支持的设备上,硬件加速 2D 渲染引擎利用 OpenGL ES 3.0 优化纹理管理并提高渐变渲染保真度

用于高性能图形的 OpenGL ES 3.0

Android 4.3 引入了对 Khronos OpenGL ES 3.0 的平台支持,在支持的设备上为游戏和其他应用提供最高性能的 2D 和 3D 图形功能。您可以通过 Android 原生开发工具包 (NDK) 使用框架 API原生 API 绑定来利用 OpenGL ES 3.0 及相关的 EGL 扩展。

OpenGL ES 3.0 提供的关键新功能包括加速高级视觉效果、作为标准功能的高质量 ETC2/EAC 纹理压缩、支持整数和 32 位浮点的新版 GLSL ES 着色语言、高级纹理渲染以及标准化的纹理大小和渲染缓冲区格式。

您可以使用 OpenGL ES 3.0 API 创建可在各种兼容 Android 设备上运行的高度复杂、高效率的图形,并且可以在这些设备上支持单一的标准纹理压缩格式。

OpenGL ES 3.0 是一项可选功能,取决于底层的图形硬件。Nexus 7 (2013)、Nexus 4 和 Nexus 10 设备已提供支持。

增强的蓝牙连接

与蓝牙智能设备和传感器的连接

现在,您可以设计和构建应用,使其能够与使用 Bluetooth Smart 技术的最新一代小型、低功耗设备和传感器进行交互。

Android 4.3 为您提供用于与蓝牙智能设备交互的单一标准 API。

Android 4.3 引入了对中央角色中 Bluetooth Smart Ready 的内置平台支持,并提供了一套标准 API,应用可用于发现附近的设备、查询 GATT 服务以及读取/写入特性。

借助这些新 API,您的应用可以有效地扫描感兴趣的设备和服务。对于每个设备,您可以通过 UUID 检查支持的 GATT 服务,并通过设备 ID 和信号强度管理连接。您可以连接到设备上托管的 GATT 服务器,读取或写入特性,或注册监听器以在这些特性发生变化时接收通知。

您可以实现对任何 GATT 配置文件的支持。您可以读取或写入标准特性,或根据需要添加对自定义特性的支持。您的应用可以充当客户端或服务器,并可以在任一模式下传输和接收数据。API 是通用的,因此您将能够支持与各种设备进行交互,例如接近标签、手表、健身追踪器、游戏控制器、遥控器、健康设备等等。

Nexus 7 (2013) 和 Nexus 4 设备已支持 Bluetooth Smart Ready,并且未来几个月将有越来越多的 Android 兼容设备支持此功能。

AVRCP 1.3 配置文件

Android 4.3 添加了对 Bluetooth AVRCP 1.3 的内置支持,因此您的应用可以支持与远程流媒体设备进行更丰富的交互。媒体播放器等应用可以通过 Android 4.0 中引入的远程控制客户端 API 利用 AVRCP 1.3。除了在通过蓝牙连接的远程设备上公开播放控制外,应用现在还可以传输元数据,例如曲目名称、作曲家和其他类型的媒体元数据。

对 AVRCP 1.3 的平台支持建立在 Google 和博通 (Broadcom) 在 Android 4.2 中引入的 Bluedroid 蓝牙堆栈之上。Nexus 设备以及提供 A2DP/AVRCP 功能的其他 Android 兼容设备已提供支持。

受限配置文件的支持

Setting up a Restricted Profile

平板电脑所有者可以在“设置”中设置一个或多个受限配置文件并独立管理它们。

Setting Restrictions in a Profile

您的应用可以提供限制,让所有者在应用在配置文件中运行时管理您的应用内容。

Android 4.3 通过受限配置文件扩展了平板电脑的多用户功能,这是一种在单个设备上管理用户及其能力的新方式。借助受限配置文件,平板电脑所有者可以快速为每个用户设置独立的环境,并能够在这些环境中的可用应用中管理更精细的限制。受限配置文件非常适合亲朋好友、访客用户、自助服务终端、销售点设备等。

每个受限配置文件都提供了一个独立且安全的空间,拥有自己的本地存储、主屏幕、微件和设置。与用户不同,配置文件是根据平板电脑所有者的安装应用和系统账户,从所有者的环境中创建的。所有者控制在新配置文件中启用哪些安装应用,并且默认禁用对所有者账户的访问。

需要访问所有者账户(用于登录、偏好设置或其他用途)的应用可以通过声明清单属性选择加入,所有者可以从配置文件配置设置中查看和管理这些应用。

对于开发者而言,受限配置文件提供了一种新的方式,可以为用户提供更多价值和控制。您可以实现应用限制——由您的应用支持的内容或功能控制——并在配置文件配置设置中将其展示给平板电脑所有者。

您可以使用预定义的布尔值、单选和多选类型直接将应用限制添加到配置文件配置设置中。如果您想要更大的灵活性,您甚至可以从配置文件配置设置中启动自己的 UI,以提供您想要的任何类型的限制。

当您的应用在配置文件中运行时,它可以检查所有者配置的任何限制并适当强制执行。例如,媒体应用可能会提供一项限制,允许所有者设置配置文件的成熟度级别。在运行时,应用可以检查成熟度设置,然后根据首选的成熟度级别管理内容。

如果您的应用未设计用于受限配置文件,您可以完全选择退出,这样您的应用就无法在任何受限配置文件中启用。

优化的位置和传感器功能

Google Play services 提供您可以在应用中使用的先进位置 API。Android 4.3 在支持的设备上通过新的硬件和软件功能优化了这些 API,从而最大限度地减少电池使用。

硬件地理围栏通过在设备硬件(而非软件)中执行位置计算来优化电源效率。在支持硬件地理围栏的设备上,Google Play services 地理围栏 API 将能够利用此优化在设备移动时节省电池。

仅 Wi-Fi 扫描模式是一种新的平台优化,允许用户保持 Wi-Fi 扫描开启而不连接到 Wi-Fi 网络,从而提高位置精度同时节省电池。依赖 Wi-Fi 获取位置服务的应用现在可以要求用户从 Wi-Fi 高级设置中启用仅扫描模式。仅 Wi-Fi 扫描模式不依赖设备硬件,并作为 Android 4.3 平台的一部分提供。

新的传感器类型允许应用更好地管理传感器读数。游戏旋转矢量让游戏开发者无需担心磁干扰即可感知设备的旋转。未校准的陀螺仪未校准的磁力计传感器向应用报告原始测量值和估计偏差。

Nexus 7 (2013) 和 Nexus 4 设备已提供新的硬件功能,任何设备制造商或芯片组供应商都可以将其内置到其设备中。

新媒体功能

模块化 DRM 框架

为了满足下一代媒体服务的需求,Android 4.3 引入了模块化 DRM 框架,使媒体应用开发者更容易将 DRM 集成到其自己的流媒体协议中,例如 MPEG DASH(基于 HTTP 的动态自适应流,ISO/IEC 23009-1)。

通过新 API 和对现有 API 的增强相结合,媒体 DRM 框架提供了一套集成服务,用于管理许可和供应、访问低级编解码器以及解码加密媒体数据。新的 MediaExtractor API 允许您获取 DASH 媒体的 PSSH 元数据。使用媒体 DRM 框架的应用管理与许可证服务器的网络通信,并处理来自内容库的加密数据的流传输。

VP8 编码器

Android 4.3 引入了对 VP8 编码的内置支持,可通过框架和原生 API 访问。对于使用原生 API 的应用,平台包含 OpenMAX 1.1.2 扩展头文件以支持 VP8 配置和级别。VP8 编码支持的设置包括目标比特率、速率控制、帧率、令牌分区、错误弹性、重建和环路滤波。平台 API 在多种格式中引入了 VP8 编码器支持,因此您可以利用最适合您的内容的格式。

所有运行 Android 4.3 的兼容设备都支持软件 VP8 编码。为了实现最高性能,平台还支持在有能力的设备上进行硬件加速 VP8 编码。

从 Surface 进行视频编码

从 Android 4.3 开始,您可以使用 Surface 作为视频编码器的输入。例如,您现在可以将来自 OpenGL ES Surface 的流直接导向编码器,而无需在缓冲区之间进行复制。

媒体复用器

应用可以使用新的媒体复用器 API 将基本音频和视频流组合到一个输出文件中。目前,应用可以将单个 MPEG-4 音频流和单个 MPEG-4 视频流复用到单个 MPEG-4 输出文件中。新 API 是 Android 4.2 中引入的媒体解复用 API 的对应部分。

远程控制客户端中的播放进度和定位

自 Android 4.0 以来,媒体播放器及类似应用已能够通过设备锁屏、通知和通过蓝牙连接的远程设备等远程控制客户端提供播放控制。从 Android 4.3 开始,这些应用现在还可以通过其远程控制客户端公开播放进度和速度,并接收跳转到特定播放位置的命令。

构建精美应用的新方法

通知访问权限

通知长期以来一直是流行的 Android 功能,因为它们允许用户在一个地方查看来自整个系统的信息和更新。现在,在 Android 4.3 中,应用可以在获得用户许可的情况下观察通知流,并以他们想要的任何方式显示通知,包括将其发送到通过蓝牙连接的附近设备。

您可以通过新 API 访问通知,这些 API 允许您注册通知监听器服务,并在获得用户许可的情况下,在通知显示在状态栏时接收通知。通知以完整形式传递给您,包含有关源应用、发布时间、内容视图和样式以及优先级的详细信息。您可以评估通知中感兴趣的字段,处理或添加来自您应用的上下文,并以您选择的任何方式路由它们进行显示。

新 API 会在添加、更新和删除通知时(用户清除或源应用撤回)向您提供回调。您将能够启动附加到通知或其操作的任何 Intent,并从系统中将其清除,从而允许您的应用为通知提供完整的用户界面。

用户始终掌控哪些应用可以接收通知。他们可以随时在“设置”中查看哪些应用拥有通知访问权限,并根据需要启用或禁用访问权限。默认情况下禁用通知访问权限——应用可以使用新的 Intent 将用户直接带到“设置”中,以便在安装后启用监听器服务。

视图叠加层

您现在可以在 Views 和 ViewGroups 顶部创建透明叠加层,以渲染临时视图层次结构或瞬时动画效果,而不会干扰底层布局层次结构。当您想要创建动画(例如将视图滑出其容器或在屏幕上拖动项目)而不影响视图层次结构时,叠加层特别有用。

光学边界布局模式

一种新的布局模式允许您根据 View 在 ViewGroups 内部的光学边界(而非剪辑边界)管理其位置。剪辑边界表示微件的实际外部边界,而新的光学边界描述了微件在剪辑边界内的显示位置。您可以使用光学边界布局模式正确对齐使用外部视觉效果(如阴影和发光)的微件。

自定义旋转动画类型

应用现在可以定义设备旋转时窗口使用的退出和进入动画类型。您可以设置窗口属性以启用跳跃剪切交叉淡入淡出标准窗口旋转。当窗口全屏且未被其他窗口覆盖时,系统会使用自定义动画类型。

屏幕方向模式

应用可以为 Activity 设置新的方向模式,以确保设备翻转时它们以正确的方向显示。此外,应用可以使用新模式将屏幕锁定到其当前方向。这对于使用相机且在拍摄视频时想要禁用旋转的应用非常有用。

用于处理快速回复的 Intent

Android 4.3 引入了一个新的公共 Intent,允许任何应用处理快速回复——用户为响应来电而发送的短信,无需接听电话或解锁设备。您的应用可以监听此 Intent 并通过您的消息系统将消息发送给来电者。该 Intent 包含收件人(来电者)和消息本身。

对国际用户的支持

Android 4.3 的更多部分针对 RTL 语言进行了优化。

RTL 改进

Android 4.3 包含了 RTL 性能增强和框架 UI 微件中更广泛的 RTL 支持,包括 ProgressBar/Spinner 和 ExpandableListView。uiautomatorviewer 工具可以显示更多调试信息。此外,更多系统 UI 组件现在支持 RTL,例如通知、导航栏和 Action Bar。

为了在 RTL 脚本中提供更好的系统级体验,更多默认系统应用现在支持 RTL 布局,包括启动器、快速设置、电话、联系人、设置向导、时钟、下载等等。

本地化工具

伪区域设置使测试应用本地化变得更容易。

Android 4.3 还包括新的工具和 API,用于创建更好的 RTL 字符串和测试您的本地化 UI。新的 BidiFormatter 类提供了一个简单的 API,用于包装 Unicode 字符串,以便 RTL 脚本数据在 LTR 区域设置消息中按预期显示,反之亦然。为了让您更广泛地在应用中使用此工具,BidiFormatter API 现在也通过 Android SDK 中的 Support Package 提供给早期平台版本。

为了帮助您管理跨区域设置的日期格式,Android 4.3 包含一个新的 getBestDateTimePattern() 方法,该方法可以自动生成您指定区域设置的 Unicode UTS 日期的最佳本地化形式。这是一种为用户提供更本地化体验的便捷方法。

为了帮助您更轻松地在其他区域设置中测试您的应用,Android 4.3 引入了伪区域设置作为新的开发者选项。伪区域设置模拟与区域设置或语言组相关的语言、脚本和显示特征。目前,您可以使用带重音的英语伪区域设置进行测试,这可以让您了解您的 UI 如何处理各种欧洲语言中使用的脚本重音和字符。

无障碍功能和 UI 自动化

从 Android 4.3 开始,无障碍服务可以观察和过滤按键事件,例如处理键盘快捷键或提供与基于手势的输入相同的导航。服务接收事件并在将其传递给系统或其他安装的应用之前根据需要处理它们。

无障碍服务可以声明新的能力属性来描述其服务可以做什么以及它们使用哪些平台功能。例如,它们可以声明过滤按键事件、检索窗口内容、启用触摸探索或启用 Web 无障碍功能的权限。在某些情况下,服务必须声明能力属性才能访问相关的平台功能。系统使用服务的能力属性为用户生成选择加入对话框,以便他们在启动前查看并同意这些能力。

在 Android 4.3 中的无障碍框架基础上,新的 UI 自动化框架允许测试通过模拟用户操作和检查屏幕内容来与设备的 UI 交互。通过 UI 自动化框架,您可以执行基本操作、设置屏幕旋转、生成输入事件、截取屏幕截图等等。这是一种在现实用户场景(包括跨多个应用的操作或序列)中自动化测试的强大方式。

企业和安全

WPA2-Enterprise 网络的 Wi-Fi 配置

应用现在可以配置连接到 WPA2 企业接入点所需的 Wi-Fi 凭据。开发者可以使用新 API 配置企业中使用的身份验证方法的 Extensible Authentication Protocol (EAP) 和 Encapsulated EAP (Phase 2) 凭据。具有访问和更改 Wi-Fi 权限的应用可以配置多种 EAP 和 Phase 2 身份验证方法的身份验证凭据。

通过 SELinux 增强 Android 沙箱

Android 现在使用 SELinux,这是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于 UID 的应用沙箱。这保护了操作系统免受潜在安全漏洞的影响。

KeyChain 增强功能

KeyChain API 现在提供了一种方法,允许应用确认系统范围的密钥绑定到设备的硬件信任根。这提供了一个创建或存储私钥的位置,这些私钥即使在 root 或内核受到威胁的情况下也无法导出到设备之外。

Android Keystore 提供程序

Android 4.3 引入了 Keystore 提供程序和 API,允许应用创建独占使用的密钥。使用这些 API,应用可以创建或存储其他应用无法看到或使用的私钥,并且无需任何用户交互即可将其添加到 Keystore 中。

Keystore 提供程序提供了与 KeyChain API 为系统范围凭据提供的相同的安全优势,例如将凭据绑定到设备。Keystore 中的私钥无法导出到设备之外。

限制 Android 应用的 Setuid

现在,/system 分区对于 zygote 生成的进程是以 nosuid 方式挂载的,从而阻止 Android 应用执行 setuid 程序。这减少了 root 攻击面和潜在安全漏洞的可能性。

分析性能的新方法

Systrace 使用新的命令语法,并允许您收集更多类型的性能分析数据。

增强的 Systrace 日志记录

Android 4.3 支持增强版的 Systrace 工具,该工具更易于使用,并允许您访问更多类型的信息以分析应用的性能。您现在可以从硬件模块内核函数Dalvik VM(包括垃圾回收)、资源加载等收集跟踪数据。

Android 4.3 还包含新的 Trace API,您可以在应用中使用这些 API 来标记特定代码段,以便使用 Systrace 开始/结束事件进行跟踪。当标记的代码段执行时,系统会将开始/结束事件写入跟踪日志。这对应用的性能影响很小,因此报告的时间为您提供了应用正在执行的操作的准确视图。

您可以在 Systrace 输出文件中以时间线形式可视化特定于应用的事件,并在其他内核和用户空间跟踪数据的上下文中分析这些事件。结合现有的 Systrace 标签,自定义应用部分可以为您提供理解应用性能和行为的新方法。

Android 4.3 中的屏幕 GPU 性能分析。

屏幕 GPU 性能分析

Android 4.3 添加了新的开发者选项,可帮助您分析应用的性能并在任何设备或模拟器上找出渲染问题。

性能分析 GPU 渲染选项中,您现在可以在应用运行时在屏幕上可视化应用的有效帧率。您可以选择将性能分析数据显示为屏幕上的条形图或折线图,颜色指示创建绘制命令花费的时间(蓝色)、发出命令的时间(橙色)和等待命令完成的时间(黄色)。系统会持续更新屏幕上的图表,为每个可见的 Activity 显示一个图表,包括导航栏和通知栏。

绿线突出显示渲染操作的 16 毫秒阈值,因此您可以评估应用的有效帧率相对于 60 fps 目标(因为 1/60 秒大约等于 16 毫秒)。如果您看到操作超过绿线,您可以使用 Systrace 和其他工具进一步分析它们。

在运行 Android 4.2 及更高版本的设备上,开发者选项默认处于隐藏状态。您可以在任何兼容的 Android 设备上依次轻触“设置” > “关于手机” > “版本号” 7 次,随时将其显示出来。

StrictMode 对文件 URI 的警告

StrictMode 工具的最新添加是一个策略约束,用于在您的应用将 file:// URI 暴露给系统或另一个应用时发出警告。在某些情况下,接收应用可能无法访问 file:// URI 路径,因此在应用之间共享文件时,应使用 content:// URI(并具有适当的权限)。这项新策略可帮助您捕获并修复此类情况。如果您正在寻找一种方便的方式将文件存储并暴露给其他应用,请尝试使用 Support Library 中提供的 FileProvider 内容提供程序。

Android 4.2

Android 4.2 on phone and tablet

欢迎使用 Android 4.2,最新版本的 Jelly Bean!

Android 4.2 具有性能优化、焕然一新的系统 UI,以及为用户和开发者带来的全新强大功能。本文档概述了为开发者新增的功能。

有关全新开发者 API 的详细信息,请参阅Android 4.2 API 文档。

如需详细了解为用户带来的全新 Jelly Bean 功能,请访问 www.android.com

更快、更流畅、响应更及时

Android 4.2 在 Jelly Bean 已有的性能改进(垂直同步时间三级缓冲降低触摸延迟 CPU 输入增强)基础上,增加了新的优化,使 Android 速度更快。

硬件加速 2D 渲染器的改进使得滚动和滑动等常见动画更流畅、更快。特别是,绘制针对图层、剪辑和某些形状(圆角矩形、圆形和椭圆形)进行了优化。

多种 WebView 渲染优化使网页滚动更流畅,没有抖动和延迟。

Android 的 Renderscript Compute 是第一个直接移植到移动设备 GPU 上运行的计算平台。它会自动利用 GPU 计算资源(如果可能),极大地提高了图形和图像处理的性能。任何在支持的设备上使用 Renderscript 的应用都可以立即从这种 GPU 集成中受益,无需重新编译

精致、焕然一新的 UI

Android 4.2 优化了 Jelly Bean 用户体验,并将熟悉的 Android UI 模式(如状态栏、系统栏和通知窗口)引入所有平板电脑。

现在,所有屏幕尺寸顶部都具有状态栏,可通过下拉访问通知和新的快速设置菜单。熟悉的系统栏出现在底部,按钮易于从任何一只手访问。所有屏幕尺寸也提供应用抽屉

一台平板电脑,多个用户

现在,多个用户可以共享一台 Android 平板电脑,每个用户都可以方便地访问专用的用户空间。用户可以通过锁屏一键切换到他们的空间。

在多用户设备上,Android 为每个用户提供了独立的环境,包括特定于用户的模拟 SD 卡存储。用户还拥有自己的主屏幕、微件、账户、设置、文件和应用,系统会保持这些内容彼此独立。所有用户共享核心系统服务,但系统确保每个用户的应用和数据保持隔离。实际上,每个多用户都拥有自己的 Android 设备。

用户可以在自己的环境中随时安装和卸载应用。为了节省存储空间,Google Play 只有在设备上其他用户尚未安装该 APK 时才会下载。如果应用已经安装,Google Play 会以通常方式记录新用户的安装,但不会下载另一个应用副本。多个用户可以运行同一个 APK 副本,因为系统会为每个用户创建一个新实例,包括特定于用户的数据目录。

对于开发者而言,多用户支持是透明的——您的应用无需做任何特殊处理即可在多用户环境中正常运行,您也无需对现有或已发布的 APK 进行任何更改。系统会在每个用户空间中像在单用户环境中一样管理您的应用。

吸引用户的新方法

Calendar lock screen widget

您可以扩展应用微件,使其在锁屏上运行,以便即时访问您的内容。

锁屏微件

在 Android 4.2 中,用户可以将应用微件直接放置在他们的锁屏上,无需解锁即可即时访问喜爱的应用内容。用户最多可以添加五个锁屏微件,从安装的应用提供的微件中选择。锁屏会在自己的面板中显示每个微件,允许用户左右滑动以查看不同的面板及其微件。

与所有应用微件一样,锁屏微件可以显示任何类型的内容,并且可以接受直接用户交互。它们可以是完全独立的,例如提供音乐播放控制的微件,或者允许用户直接跳转到应用中的 Activity,途中根据需要进行解锁。

对于开发者而言,锁屏微件提供了一种新的吸引用户的好方法。它们允许您将内容呈现在用户经常看到的位置,并为您提供了更多机会将用户直接带入您的应用。

您可以通过构建新的应用微件或扩展现有的主屏幕微件来利用此新功能。如果您的应用已包含主屏幕微件,您可以以最小的改动将它们扩展到锁屏。为了给用户最佳体验,您可以在可用时更新微件以使用完整的锁屏区域,并在较小屏幕上需要时调整大小。您还可以向微件添加可能在锁屏上特别有用或方便的功能。

Daydream

Daydream 是一种交互式屏幕保护程序模式,在用户的设备连接底座或充电时启动。在此模式下,系统会将 Daydream(由已安装应用提供的远程内容服务)作为设备屏幕保护程序启动。用户可以从“设置”应用中启用 Daydream,然后选择要显示的 Daydream。

Daydream 结合了动态壁纸和主屏幕微件的最佳功能,但它们更强大。它们允许您在全新的情境中提供任何类型的内容,并支持用户交互,例如翻阅照片、播放音频或视频,或一键直接进入您的应用。

由于 Daydream 在设备充电或连接底座时可以自动启动,它们也为您的应用提供了支持新型用户体验的好方法,例如后仰模式或展示模式、演示或信息亭模式,以及“吸引模式”——所有这些都不需要特殊硬件。

Daydream screensaver mode

Daydream 允许您创建功能强大的交互式屏幕保护程序,显示任何类型的内容。

Daydream 类似于 Activity,可以执行 Activity 可以做的任何事情——从渲染 UI 层次结构(不使用 RemoteViews)到使用 Canvas、OpenGL、SurfaceTexture 等直接绘制。它们可以播放视频和音频,甚至可以接受直接用户交互。然而,Daydream 不是 Activity,因此它们不会影响返回栈或出现在“最近使用”中,并且无法直接从您的应用启动。

实现 Daydream 很简单,您可以利用您为应用其他部分已创建的 UI 组件和资源。您可以在应用中提供多个 Daydream,并为每个 Daydream 提供不同的内容和显示设置。

外接显示器支持

Android 4.2 引入了对外接显示器的平台支持,远超镜像功能——应用现在可以将独特内容定向到连接到 Android 设备的任何一个或多个显示器。应用可以在此基础上构建,为用户提供新型的交互和娱乐体验。

显示管理器

应用通过新的显示管理器系统服务与显示器进行交互。您的应用可以枚举显示器并检查每个显示器的功能,包括尺寸、密度、显示名称、ID、安全视频支持等等。您的应用还可以接收在添加或移除显示器或其功能发生变化时的回调,以便更好地管理外接显示器上的内容。

演示窗口

为了方便在外接显示器上显示内容,框架提供了一个新的 UI 对象,称为 Presentation——一种对话框类型,代表您的应用内容在特定外接显示器上的窗口。您的应用只需提供要使用的显示器、窗口的主题以及要显示的任何独特内容。Presentation 根据目标显示器的特性处理资源膨胀和内容渲染。

您可以使用 Presentation 完全控制两个或多个独立显示器。

Presentation 让您的应用完全控制远程显示窗口及其内容,并允许您根据用户输入事件(如按键、手势、运动事件等)进行管理。您可以使用所有常用工具在 Presentation 中创建 UI 和渲染内容,从构建任意视图层次结构到使用 SurfaceView 或 SurfaceTexture 直接绘制到窗口中以获取流式内容或相机预览。

首选显示器选择

当有多个外接显示器可用时,您可以根据需要创建任意数量的 Presentation,每个 Presentation 在特定显示器上显示独特的内容。在许多情况下,您可能只想在单个外接显示器上显示您的内容——但始终是最适合 Presentation 内容的那个。为此,系统可以帮助您的应用选择最佳显示器。

为了找到要使用的最佳显示器,您的应用可以向显示管理器查询系统的首选 Presentation 显示器,并在该显示器更改时接收回调。或者,您可以使用在 Android 4.2 中扩展的媒体路由器服务,在系统视频路由更改时接收通知。您的应用可以在连接首选 Presentation 显示器之前,在主 Activity 中默认显示内容,此时它可以自动切换到首选显示器上的 Presentation 内容。您的应用还可以使用媒体路由器的 MediaRouteActionProvider 和 MediaRouteButton 提供标准的显示器选择 UI。

受保护的内容

对于处理受保护或加密内容的应用,显示 API 现在会报告连接显示器的安全视频功能。您的应用可以查询显示器,了解它是否提供安全视频输出或提供受保护的图形缓冲区,然后选择适当的内容流或解码,使内容可查看。对于 SurfaceView 对象的额外安全性,您的应用可以设置一个安全标志,指示内容即使在镜像时也不应出现在屏幕截图或非安全显示输出上。

无线显示

从 Android 4.2 开始,支持设备上的用户可以使用 Wi-Fi Display(一种符合 Miracast™ 认证程序的点对点无线显示解决方案)通过 Wi-Fi 连接到外接显示器。连接无线显示器后,用户可以将任何类型的内容流式传输到大屏幕,包括照片、游戏、地图等等。

应用可以像利用其他外接显示器一样利用无线显示器,无需额外工作。系统管理网络连接,并根据需要将您的 Presentation 或其他应用内容流式传输到无线显示器。

原生 RTL 支持

RTL layout mirroring

开发者现在可以为 RTL 语言镜像其布局

Android 4.2 引入了对 RTL(从右到左)布局的完整原生支持,包括布局镜像。借助原生 RTL 支持,您可以为所有用户提供同样出色的应用体验,无论他们使用的语言脚本是从右到左读取还是从左到右读取。

当用户将系统语言切换到从右到左的脚本时,系统现在除了对文本元素进行双向镜像以实现阅读和字符输入外,还会自动镜像应用 UI 布局和所有视图微件。

您的应用可以以最小的努力利用应用中的 RTL 布局镜像。如果您希望应用被镜像,只需在应用清单中声明一个新的属性,并将所有“左/右”布局属性更改为新的“开始/结束”等效项。然后系统会根据需要处理 UI 的镜像和显示。

为了精确控制您的应用 UI,Android 4.2 包含新的 API,允许您管理 View 组件中的布局方向、文本方向、文本对齐、重力以及区域设置方向。您甚至可以创建布局、可绘制资源和其他资源的自定义版本,以便在从右到左的脚本使用时显示。

为了帮助您调试和优化自定义的从右到左布局,HierarchyViewer 工具现在允许您查看层次结构中所有 Views 的开始/结束属性、布局方向、文本方向和文本对齐。

国际语言增强功能

Android 4.2 包含为国际用户提供的多种字体和字符优化

  • 对于韩国用户,新增了一种字体选择 — Nanum (나눔글꼴) Gothic,这是一种专为韩语脚本设计的 Unicode 字体。
  • 改进了对 WebView 中显示的日文垂直文本的支持。
  • 改进了印地语、泰语、阿拉伯语和希伯来语默认字体的字距调整和位置。

默认 Android 键盘还包括一套更新的词典

  • 改进了法语(支持双字母组)、英语和俄语词典
  • 新增丹麦语、希腊语、芬兰语、立陶宛语、拉脱维亚语、波兰语、斯洛文尼亚语、塞尔维亚语、瑞典语、土耳其语词典

创建精美 UI 的新方法

嵌套 Fragment

为了更好地控制您的 UI 组件并使其更模块化,Android 4.2 允许您在 Fragment 中嵌套 Fragment。对于任何 Fragment,新的 Fragment 管理器允许您将其他 Fragment 作为子节点插入到 View 层次结构中。

您可以通过多种方式使用嵌套 Fragment,但它们在动态和可重用 UI 组件内部实现本身是动态和可重用的 UI 组件时特别有用。例如,如果您使用 ViewPager 创建左右滑动的 Fragment,您现在可以将 Fragment 插入到视图分页器的每个 Fragment 中。

为了让您更广泛地在应用中利用嵌套 Fragment,此功能已添加到最新版本的 Android Support Library 中。

无障碍功能

系统现在帮助无障碍服务在触摸探索模式下区分触摸探索和无障碍手势。当用户触摸屏幕时,系统会通知服务已开始通用触摸交互。然后,它会跟踪触摸交互的速度,确定它是触摸探索(慢)还是无障碍手势(快),并通知服务。当触摸交互结束时,系统会通知服务。

系统提供了一个新的全局无障碍选项,允许无障碍服务根据用户的操作打开快速设置菜单。Android 4.2 还增加了用于 Braille 设备的新无障碍反馈类型。

为了让无障碍服务了解 Views 用于无障碍功能的含义,框架提供了新的 API,用于将一个 View 与另一个 View 关联作为其标签。AccessibilityNodeInfo 可通过无障碍服务获取每个 View 的标签。

改进的相机,支持 HDR

Android 4.2 引入了新的相机硬件接口和管道,以提高性能。在支持的设备上,应用可以使用新的 HDR 相机场景模式,使用高动态范围成像技术捕获图像。

此外,框架现在提供了一个 API,允许应用检查相机快门声音是否可以禁用。然后,应用可以允许用户禁用声音或选择替代声音来代替标准快门声音,这是建议的做法。

Renderscript 计算

在 Android 4.2 中,Renderscript Compute 引入了新的脚本特性、新的优化以及直接的 GPU 集成,以实现计算操作的最高性能。

Filterscript

Filterscript 是 Renderscript 的一个子集,专注于优化跨广泛设备芯片组的图像处理。开发者可以使用标准的 Renderscript 运行时 API 在 Filterscript 中编写其图像处理操作,但在更严格的约束下,这确保了更广泛的兼容性以及跨 CPU、GPU 和 DSP 的改进优化。

Filterscript 非常适合硬件加速简单的图像处理和计算操作,例如那些可能为 OpenGL ES 片段着色器编写的操作。因为它对硬件施加了一组宽松的约束,所以您的操作可以在更多类型的设备芯片组上进行优化和加速。任何目标 API 级别为 17 或更高的应用都可以使用 Filterscript。

脚本内在函数

在 Android 4.2 中,Renderscript 添加了对一组脚本内在函数的支持——预实现的加速过滤原语,以减少您需要编写的代码量,并确保您的应用获得最大的性能提升。

内在函数可用于混合、模糊、颜色矩阵、3x3 和 5x5 卷积、每通道查找表以及将 Android YUV 缓冲区转换为 RGB。

脚本组

您现在可以创建 Renderscript 脚本组,并以一次调用执行所有脚本,就像它们是单个脚本的一部分一样。这使得 Renderscript 能够以单独执行脚本无法做到的方式优化脚本的执行。

Renderscipt optimizations chart

Renderscript 图像处理基准测试在不同 Android 平台版本(Android 4.0、4.1 和 4.2)下,仅使用 Galaxy Nexus 设备上的 CPU 运行。

Renderscript 图像处理基准测试比较了在同一 Nexus 10 设备上使用 GPU + CPU 运行的操作与仅使用 CPU 运行的操作。

如果您有一个有向无环图的 Renderscript 操作要运行,您可以使用构建器类创建一个脚本组来定义这些操作。在执行时,Renderscript 会优化这些操作的运行顺序和连接,以获得最佳性能。

持续的优化改进

当您使用 Renderscript 进行计算操作时,您的应用将受益于 Renderscript 引擎本身的持续性能和优化改进,而不会对您的应用代码产生任何影响,也无需重新编译。

随着优化改进,您的操作将在更多芯片组上执行得更快,无需您进行任何工作。右侧图表突出了 Renderscript 在 successive Android 平台版本中持续优化改进所带来的性能提升。

GPU 计算

Renderscript Compute 是第一个直接移植到移动设备 GPU 上运行的计算平台。它现在会自动利用 GPU 计算资源(如果可能)来提高性能。通过 GPU 集成,即使是最复杂的图形或图像处理计算也可以以显着提高的性能执行。

任何在支持的设备上使用 Renderscript 的应用都可以立即从这种 GPU 集成中受益,无需重新编译。Nexus 10 平板电脑是第一个支持此集成的设备。

新的内置开发者选项

Android 4.2 系统包含多种新的开发者选项,使创建外观精美且性能良好的应用变得更容易。新选项提供了从任何设备或模拟器调试和性能分析应用的功能。

在运行 Android 4.2 的设备上,开发者选项默认处于隐藏状态,有助于为用户创造更好的体验。您可以在任何兼容的 Android 设备上依次轻触“设置” > “关于手机” > “版本号” 7 次,随时显示开发者选项。

新的 开发者选项 为您提供更多在设备上分析和调试的方法。

Android 4.2 中的新开发者选项包括

  • 截取 Bug 报告——立即截取屏幕截图并将设备状态信息转储到本地文件存储,然后将其附加到新的外发电子邮件消息中。
  • 电源菜单 Bug 报告——向设备电源菜单和快速设置添加一个新选项以截取 Bug 报告(见上文)。
  • 通过 USB 验证应用——允许您禁用通过 USB 侧载应用的应用检查,同时仍检查来自浏览器等其他来源的应用。这可以在保持安全功能启用的同时加快开发过程。
  • 显示硬件层更新——硬件层更新时闪烁绿色。
  • 显示 GPU 过度绘制——突出显示 GPU 过度绘制区域。
  • 强制 4x MSAA——在 OpenGL ES 2.0 应用中启用 4x MSAA。
  • 模拟辅助显示器——在当前屏幕上创建一个或多个非安全叠加窗口,用作模拟的远程显示器。您可以控制模拟显示器的大小和密度。
  • 启用 OpenGL 跟踪——允许您使用 Logcat、Systrace 或 glGetError 上的调用栈跟踪 OpenGL 执行。

新平台技术

Android 4.2 包含多种新的和增强的平台技术,以支持跨广泛硬件设备的创新通信用例。在大多数情况下,新的平台技术和增强功能不会直接影响您的应用,因此您可以从中受益而无需进行任何修改。

安全增强功能

每个 Android 版本都包含数十项安全增强功能,以保护用户。以下是 Android 4.2 中的一些增强功能

  • 应用验证——用户可以选择启用“验证应用”,并在安装前由应用验证器筛查应用。应用验证可以在用户尝试安装可能有害的应用时提醒用户;如果应用特别糟糕,它可以阻止安装。
  • 更严格地控制高收费短信——如果应用尝试向使用可能导致额外费用的高收费服务的短代码发送短信,Android 将提供通知。用户可以选择是允许应用发送消息还是阻止它。
  • 常开 VPN——VPN 可以配置为在建立 VPN 连接之前,应用无法访问网络。这可以防止应用通过其他网络发送数据。
  • 证书绑定——libcore SSL 实现现在支持证书绑定。如果证书未链向一组预期的证书,则绑定的域将收到证书验证失败。这可以防止证书颁发机构可能遭受的威胁。
  • 改进的 Android 权限显示——权限已被组织成更易于用户理解的组。在查看权限时,用户可以点击权限以查看有关该权限的更详细信息。
  • installd 强化——installd 守护进程不以 root 用户身份运行,从而减少了 root 权限提升的潜在攻击面。
  • init 脚本强化——init 脚本现在应用 O_NOFOLLOW 语义,以防止与软链接相关的攻击。
  • FORTIFY_SOURCE——Android 现在实现了 FORTIFY_SOURCE。系统库和应用使用此功能来防止内存损坏。
  • ContentProvider 默认配置——目标 API 级别为 17 的应用将默认将其每个 ContentProvider 的“export”设置为“false”,从而减少应用的默认攻击面。
  • 加密——修改了 SecureRandom 和 Cipher.RSA 的默认实现,以使用 OpenSSL。使用 OpenSSL 1.0.1 添加了对 TLSv1.1 和 TLSv1.2 的 SSLSocket 支持。
  • 安全修复——升级了包含安全修复的开源库,包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 还包含针对 Android 特定漏洞的修复。有关这些漏洞的信息已提供给开放手机联盟 (Open Handset Alliance) 成员,并且 Android 开源项目 (Android Open Source Project) 中提供了修复程序。为了提高安全性,某些安装了早期 Android 版本的设备也可能包含这些修复程序。

新的蓝牙堆栈

Android 4.2 引入了专为 Android 设备优化而设计的新蓝牙堆栈。Google 和博通 (Broadcom) 合作开发的新蓝牙堆栈取代了基于 BlueZ 的堆栈,并提供了改进的兼容性和可靠性。

低延迟音频

Android 4.2 改进了对低延迟音频播放的支持,从 Android 4.1 版本中通过 OpenSL ES、Soundpool 和音调生成器 API 对音频输出延迟进行的改进开始。这些改进取决于硬件支持——提供这些低延迟音频功能的设备可以通过硬件功能常量向应用宣传其支持。提供了新的 AudioManager API,用于查询原生音频采样率和缓冲区大小,以便在声称具有此功能的设备上使用。

新的相机硬件接口

Android 4.2 引入了相机堆栈的新实现。相机子系统包括相机管道中组件的实现,例如带处理控制的连拍。

新的 NFC 硬件接口和控制器接口

Android 4.2 引入了对基于 NFC-Forum NCI 标准的控制器的支持。NCI 提供 NFC 控制器 (NFCC) 和设备主机之间的标准通信协议,并且 Google 和博通 (Broadcom) 合作开发的新 NFC 堆栈支持此协议。

Dalvik 运行时优化

Dalvik 运行时包含针对更广泛架构的性能和安全增强功能

  • 英特尔的 x86 JIT 支持和 MIPS 的 MIPS JIT 支持
  • 针对内存 > 512MB 的设备优化垃圾回收参数
  • SecureRandom 和 Cipher.RSA 的默认实现现在使用 OpenSSL
  • 通过 OpenSSL 1.0.1 支持 TLSv1.1 和 TLSv1.2 的 SSLSocket
  • StrictMath 方法 abs, min, max 和 sqrt 的新内在函数支持
  • BouncyCastle 更新到 1.47
  • zlib 更新到 1.27
  • dlmalloc 更新到 2.8.6

Android 4.1

欢迎使用 Android 4.1,Jelly Bean 的第一个版本!

Android 4.1 是目前最快、最流畅的 Android 版本。我们对整个平台进行了改进,并为用户和开发者添加了强大的新功能。本文档概述了为开发者新增的功能。

有关全新开发者 API 的详细信息,请参阅Android 4.1 API 文档。

如需详细了解为用户带来的 Jelly Bean 功能,请访问 www.android.com

更快、更流畅、响应更及时

Android 4.1 经过优化,可在轻松直观的 UI 中提供 Android 的最佳性能和最低触摸延迟。

为了确保一致的帧率,Android 4.1 将垂直同步时间扩展到 Android 框架完成的所有绘制和动画。所有内容都与 16 毫秒的垂直同步心跳同步运行——应用渲染、触摸事件、屏幕合成和显示刷新——因此帧不会超前或落后。

Android 4.1 还在图形管道中添加了三级缓冲,以实现更一致的渲染,使滚动、分页和动画等一切都感觉更流畅。

Android 4.1 不仅通过将触摸与垂直同步时间同步来减少触摸延迟,还通过实际预测屏幕刷新时手指的位置来实现。这带来了更具响应性和均匀的触摸响应。此外,在一段时间不活动后,Android 会在下一个触摸事件时应用 CPU 输入增强,以确保没有延迟。

工具集可以帮助您从应用中获得最佳性能。Android 4.1 设计用于一个名为 systrace 的新工具,该工具直接从 Linux 内核收集数据,以生成系统活动的整体概览。数据以一组垂直堆叠的时间序列图表示,有助于隔离渲染中断和其他问题。该工具现已在 Android SDK 中提供(Tools R20 或更高版本)

增强的无障碍功能

新的无障碍服务 API 允许您处理手势并管理无障碍焦点,以便用户使用无障碍手势、配件和其他输入在屏幕元素和导航按钮之间移动。Talkback 系统和触摸探索经过重新设计,使用无障碍焦点以方便使用,并为开发者提供一套完整的 API。

无障碍服务可以在无障碍设置中链接自己的教程,以帮助用户配置和使用其服务。

使用标准 View 组件的应用会自动继承对新无障碍功能的支持,无需更改其代码。使用自定义 Views 的应用可以使用新的无障碍节点 API 来指示 View 中与无障碍服务相关的部分。

对国际用户的支持

双向文本和其他语言支持

Android 4.1 通过支持 TextView 和 EditText 元素中的双向文本,帮助您覆盖更多用户。应用可以显示或处理从左到右或从右到左脚本的文本编辑。应用可以使用新增的阿拉伯语和希伯来语语言区域以及相关字体。

其他类型的新语言支持包括

  • 新增的印度语言:卡纳达语、泰卢固语和马拉雅拉姆语
  • Unicode 6.0 版新增的 Emoji 字符
  • 改进对日语用户的字形支持(当系统语言设置为日语时,渲染日语专用的字形版本)
  • 为 WebView 优化的阿拉伯语字形,以及为 TextView 提供的阿拉伯语字形
  • WebView 中的竖排文本支持,包括 Ruby Text 和额外的竖排文本字形
  • 现在所有没有专用粗体字形的字体都可以使用合成粗体

用户可安装的键盘布局

平台现在支持用户可安装的键盘映射,例如用于额外的国际键盘和特殊布局类型。默认情况下,Android 4.1 包含 27 种国际键盘映射,包括 Dvorak 键盘布局。当用户连接键盘时,他们可以前往“设置”应用,并选择一个或多个他们想要用于该键盘的键盘映射。输入时,用户可以使用快捷键 (Ctrl-空格键) 在键盘映射之间切换。

您可以创建应用来向系统发布额外的键盘映射。APK 中会包含基于标准 Android 键盘映射格式的键盘布局资源。应用可以在其清单中声明一个合适的 ACTION_QUERY_KEYBOARD_LAYOUTs 广播接收器,以便向用户提供额外的键盘布局。

创建精美 UI 的新方法

开发者可以创建自定义通知样式,如上例所示,以显示丰富的通知内容和操作。

可展开通知

通知一直是 Android 上独特且受欢迎的功能。开发者可以使用它们在通知栏中,在应用常规 UI 之外,向用户呈现重要或有时效性的信息。

Android 4.1 对 Android 通知框架进行了重大更新。应用现在可以向用户显示更大、更丰富的通知,这些通知可以通过捏合或滑动进行展开和折叠。通知支持新型内容,包括照片,具有可配置的优先级,甚至可以包含多个操作。

通过改进的通知构建器,应用可以创建占用更大区域(高度可达 256 dp)的通知。有三种模板通知样式可用

  • BigTextStyle — 包含多行 TextView 对象的通知。
  • BigInboxStyle — 显示各种列表(如消息、标题等)的通知。
  • BigPictureStyle — 展示视觉内容(如位图)的通知。

除了模板样式外,您还可以使用任何远程 View 创建自己的通知样式。

应用可以向通知添加最多三个操作,这些操作显示在通知内容下方。这些操作允许用户以其他方式直接响应通知中的信息,例如通过电子邮件或电话呼叫,而无需访问应用。

通过可展开通知,应用可以轻松地按需向用户提供更多信息。用户仍具有控制权,可以长按任何通知以获取发送者的信息,并选择性地禁用来自该应用的进一步通知。

应用微件可以自动调整大小以适应主屏幕,并在大小变化时加载不同的内容。

可调整大小的应用微件

Android 4.1 引入了改进的应用微件,这些微件可以根据用户将其放置在主屏幕上的位置、用户将其展开的大小以及主屏幕上的可用空间自动调整大小。新的应用微件 API 允许您利用此功能来优化应用微件的内容,随着微件大小的变化而调整。

当微件更改大小时,系统会通知宿主应用(即启动器)的微件提供程序,后者可以根据需要重新加载微件中的内容。例如,微件可以显示更大、更丰富的图形或额外的功能或选项。开发者仍然可以控制最大和最小大小,并可以在需要时更新其他微件选项。

您还可以为微件提供单独的横向和纵向布局,系统会在屏幕方向更改时适当地膨胀这些布局。

应用微件现在可以通过新的绑定 Intent (AppWidgetManager.ACTION_APPWIDGET_BIND) 在第三方启动器和其他宿主应用中显示。

简化的任务导航

Android 4.1 使您能够轻松管理用户在应用内部可用的“向上”导航,并有助于确保用户体验的一致性。

您可以通过在应用的清单文件中添加新的 XML 属性定义 UI 中各个 Activity 组件的预期向上导航。运行时,当 Activity 启动时,系统会从清单文件中提取向上导航树,并在操作栏中自动创建向上导航控件。在清单中声明向上导航的开发者不再需要在运行时通过回调来管理导航,尽管如果需要,他们也可以这样做。

此外还提供了一个新的 TaskStackBuilder 类,该类允许您快速组合一个合成任务栈,以便立即启动或在从 PendingIntent 启动 Activity 时使用。当用户从远程视图(例如主屏幕微件和通知)启动 Activity 时,创建合成任务栈特别有用,因为它允许开发者在返回导航时提供一个受管理、一致的体验。

Activity 启动动画的轻松实现

您可以使用新的辅助类 ActivityOptions 来创建和控制启动 Activity 时显示的动画。通过此辅助类,您可以指定用于启动 Activity 的自定义动画资源,或请求新的缩放动画,该动画从屏幕上您指定的任何矩形开始,并且可以选择包含缩略图位图。

沉浸式模式和全屏模式之间的转换

View 中新增的系统 UI 标志使您可以干净地从正常的应用 UI(显示操作栏、导航栏和系统栏)转换到“沉浸式模式”(隐藏状态栏和操作栏,导航栏变暗)或“全屏模式”(状态栏、操作栏和导航栏全部隐藏)。

新型可远程 View

开发者现在可以在主屏幕微件和通知中使用 GridLayoutViewStub 视图。GridLayout 允许您构建远程视图的内容,并以更浅的 UI 层次结构管理子视图的对齐方式。ViewStub 是一个不可见、大小为零的 View,可用于在运行时延迟加载布局资源。

动态壁纸预览

Android 4.1 使户更轻松地从包含动态壁纸的应用中查找和安装动态壁纸。如果您的应用包含动态壁纸,您现在可以启动一个 Activity (ACTION_CHANGE_LIVE_WALLPAPER),该 Activity 会向用户显示来自您应用的动态壁纸预览。用户可以直接从预览中加载动态壁纸。

更高分辨率的联系人照片

借助 Android 4.1,您可以存储高达 720 x 720联系人照片,使联系人更加丰富和个性化。应用可以存储和检索该尺寸或其他任何所需尺寸的联系人照片。特定设备支持的最大照片尺寸可能有所不同,因此应用应在运行时查询内置联系人提供程序以获取当前设备的最大尺寸。

新增的输入类型和功能

了解设备的添加和移除

应用可以注册以便在通过 USB、蓝牙或任何其他连接类型连接任何新的输入设备时接收通知。他们可以利用此信息根据需要更改状态或功能。例如,游戏可以接收通知,告知已连接新的键盘或游戏杆,表明有新玩家加入。

查询输入设备的功能

Android 4.1 包含一些 API,允许应用和游戏充分利用所有已连接和可用的输入设备。

应用可以查询设备管理器以枚举当前连接的所有输入设备,并了解每个设备的功能。

控制输入设备的振动器

除其他功能外,应用现在可以使用与连接的输入设备关联的任何振动器服务,例如用于 Rumble Pak 控制器。

动画和图形

应用的 Vsync

将 vsync 扩展到整个 Android 框架中,可以带来更一致的帧速率以及流畅、稳定的 UI。为了让应用也从中受益,Android 4.1 将 vsync 时序扩展到应用发起的所有绘制和动画。这使得它们可以优化 UI 线程上的操作,并为同步提供稳定的时间基准。

应用可以通过 Android 的动画框架免费利用 vsync 时序。动画框架现在使用 vsync 时序自动处理动画师之间的同步。

对于特定用途,应用可以通过新的 Choreographer 类公开的 API 访问 vsync 时序。应用可以在下一个 vsync 帧上请求无效化——这是一种在应用不使用动画框架时安排动画的好方法。对于更高级的用法,应用可以发布一个回调,Choreographer 类将在下一帧运行该回调。

新增的动画操作和过渡类型

动画框架现在允许您在运行 ViewPropertyAnimator 动画时定义开始和结束操作,以帮助将它们与应用中的其他动画或操作同步。操作可以运行任何 runnable 对象。例如,runnable 可以指定前一个动画完成后启动另一个动画。

您现在还可以指定 ViewPropertyAnimator 在动画过程中使用图层。以前,最佳做法是在开始动画之前设置图层来动画处理复杂的视图,然后在动画完成后处理 onAnimationEnd() 事件以移除图层。现在,ViewPropertyAnimator 上的 withLayer() 方法通过一个方法调用简化了此过程。

LayoutTransition 中的新过渡类型使您能够自动响应 ViewGroup 中所有布局变化的动画。

新型连接功能

Android Beam

Android Beam 是一项流行的基于 NFC 的技术,允许用户仅通过触摸两部支持 NFC 的手机即可即时共享内容。

在 Android 4.1 中,Android Beam 通过利用蓝牙进行数据传输,使共享图像、视频或其他有效载荷变得更加容易。当用户触发传输时,Android Beam 会从 NFC 切换到蓝牙,使得管理文件从一个设备到另一个设备的传输变得非常简单。

Wi-Fi 网络服务发现

Android 4.1 引入了对基于 multicast DNS 的服务发现的支持,允许应用在 Wi-Fi 网络上发现并连接到对等设备提供的服务——包括移动设备、打印机、相机、媒体播放器等。开发者可以利用 Wi-Fi 网络服务发现来构建跨平台或多人游戏和应用体验。

使用服务发现 API,应用可以创建并注册任何类型的服务,供任何其他支持 NSD 的设备发现。该服务通过网络上的多播以人类可读的字符串标识符进行广播,这使得用户更容易识别服务类型。

消费者设备可以使用 API 扫描并发现连接到本地 Wi-Fi 网络的设备提供的服务。发现后,应用可以使用 API 将服务解析为 IP 地址和端口,从而建立套接字连接。

您可以利用此 API 在应用中构建新功能。例如,您可以允许用户连接到网络摄像头、打印机或另一台支持 Wi-Fi 点对点连接的移动设备上的应用。

Wi-Fi P2P 服务发现

Ice Cream Sandwich 引入了对 Wi-Fi Peer-to-Peer (P2P) 的支持,这项技术允许应用通过高带宽点对点连接直接发现并配对(符合 Wi-Fi Alliance 的 Wi-Fi Direct™ 认证计划)。Wi-Fi P2P 是共享媒体、照片、文件和其他类型数据和会话的理想方式,即使在没有蜂窝网络或 Wi-Fi 可用的情况下也是如此。

Android 4.1 更进一步发展了 Wi-Fi P2P,增加了对预关联服务发现的 API 支持。预关联服务发现允许您的应用在尝试连接之前,从附近的设备获取有关其支持的服务更有用的信息。应用可以针对特定服务启动发现,并过滤发现的设备列表,只显示实际支持目标服务或应用的设备。

例如,这意味着您的应用可以仅发现是“打印机”或提供特定游戏的设备,而不是发现附近所有 Wi-Fi P2P 设备。另一方面,您的应用可以向其他设备广播其提供的服务,其他设备可以发现该服务,然后协商连接。这极大地简化了用户的发现和配对过程,并允许应用更有效地利用 Wi-Fi P2P。

借助 Wi-Fi P2P 服务发现,您可以创建可以共享照片、视频、游戏玩法、分数或几乎任何其他内容的应用程序和多人游戏——所有这一切都不需要互联网或移动网络。您的用户只需使用直接的 P2P 连接即可连接,从而避免使用移动数据带宽。

网络带宽管理

当设备连接到计量网络(包括通过移动热点进行网络共享)时,Android 4.1 可帮助应用适当地管理数据使用。应用可以在开始可能对用户来说相对昂贵的下载之前,查询当前网络是否是计量网络。通过 API,您现在可以清楚地了解哪些网络对数据使用敏感,并相应地管理您的网络活动。

新媒体功能

媒体编解码器访问

Android 4.1 提供对平台硬件和软件编解码器的低级访问。应用可以查询系统以发现设备上可用的低级媒体编解码器,然后以所需的方式使用它们。例如,您现在可以创建媒体编解码器的多个实例,对输入缓冲区排队,并接收输出缓冲区。此外,媒体编解码器框架支持受保护的内容。应用可以查询可用的编解码器,该编解码器能够使用设备上可用的 DRM 解决方案播放受保护的内容。

USB 音频

USB 音频输出支持允许硬件供应商构建诸如音频底座之类的硬件,以便与 Android 设备进行接口。此功能也通过 Android 开放配件开发工具包 (ADK) 公开,为所有开发者提供了创建自己硬件的机会。

音频录制触发

Android 现在允许您根据音频播放轨的完成情况触发音频录制。这对于播放提示音以提示用户开始说话以录制其声音等情况非常有用。此功能可帮助您同步录制,以便您不会录制当前正在播放的音频,并防止录制开始过晚。

多声道音频

Android 4.1 支持通过 HDMI 端口具有硬件多声道音频输出的设备上的多声道音频。多声道音频使您能够为游戏、音乐应用和视频播放器等应用向用户提供丰富的媒体体验。对于不具备支持硬件的设备,Android 会自动将音频降混到设备支持的声道数(通常是立体声)。

Android 4.1 还增加了对 AAC 5.1 音频的内置编码/解码支持。

音频预处理

开发者可以对正在录制的音频应用预处理效果,例如应用降噪以提高语音录制质量,回声消除以消除声学回声,以及自动增益控制以处理音量不一致的音频。需要高质量和干净音频录制的应用将受益于这些预处理器。

音频串联

MediaPlayer 支持将音频流串联播放,以实现无暂停地播放音频文件。这对于需要音频文件之间无缝过渡的应用非常有用,例如用于播放连续音轨的音乐播放器或游戏。

媒体路由器

新的 API MediaRouter、MediaRouteActionProvider 和 MediaRouteButton 提供了用于选择播放媒体位置的标准机制和 UI。内置支持有线耳机和 a2dp 蓝牙耳机和扬声器,您可以在自己的应用中添加自己的路由选项。

Renderscript 计算

Android 4.1 扩展了 Renderscript 计算,为您提供了更大的灵活性。您现在可以在 Renderscript 计算脚本中采样纹理,并且可以使用新的 pragmas 来定义脚本所需的浮点精度。这使您可以在 CPU 路径上启用 NEON 指令(例如快速矢量数学运算),否则使用完整的 IEEE 754-2008 标准是无法实现的。

您现在可以在 x86 架构的模拟器和硬件设备调试 Renderscript 计算脚本。您还可以在单个 Renderscript 源文件中定义多个根样式内核。

Android 浏览器和 WebView

在 Android 4.1 中,Android 浏览器和 WebViews 包括以下增强功能:

  • 更好的 HTML5 视频用户体验,包括点击播放/暂停以及从内联模式到全屏模式的流畅过渡。
  • 提高渲染速度,减少内存使用,以实现更好的滚动和缩放性能。
  • 改进 HTML5/CSS3/Canvas 动画性能。
  • 改进文本输入。
  • 更新的 JavaScript 引擎 (V8),以实现更好的 JavaScript 性能。
  • 支持更新的 HTML5 Media Capture 规范(input type=file 元素上的“capture”属性)。

Google API 和服务

为了进一步扩展 Android 的功能,提供了一些新的 Android 服务。

Google Cloud Messaging for Android

Google Cloud Messaging (GCM) 是一项服务,允许开发者向 Android 设备上的用户发送短消息数据,而无需专有的同步解决方案。

GCM 处理所有消息排队和将它们高效发送到目标 Android 设备的细节。它支持消息多播,并且一次请求最多可以同时覆盖 1000 个连接设备。它还支持消息有效载荷,这意味着除了向设备上的应用发送提示消息外,开发者还可以发送高达 4K 的数据。

Google Cloud Messaging 对所有开发者来说是完全免费的,并且注册很容易。请参阅Google Cloud Messaging页面以获取注册、下载和文档。

应用加密

从 Android 4.1 开始,Google Play 将通过使用设备特定的密钥加密所有付费应用来帮助保护应用资产,然后再将其交付并存储到设备上。

智能应用更新

智能应用更新是 Google Play 的一项新功能,它提供了一种更好的方式来将应用更新发送到设备。当开发者发布更新时,Google Play 现在只会将更改的部分发送到设备,而不是整个 APK。这使得大多数情况下更新更轻量,因此下载速度更快,节省设备电池,并节省用户移动数据流量。平均而言,智能应用更新的大小约为完整 APK 更新的三分之一

Google Play services

Google Play services 帮助开发者集成 Google 服务,例如认证,到通过 Google Play 交付的应用中。

Google Play services 由 Google Play 自动提供给终端用户设备,因此您只需要在应用中包含一个精简的客户端库

由于您的应用只包含小的客户端库,因此您可以在不大幅增加下载大小和存储空间的情况下利用这些服务。此外,Google Play 将定期提供这些服务的更新,开发者无需发布应用更新即可利用这些更新。

有关 Google Play 服务中包含的 API 的更多信息,请参阅 Google Play services 开发者页面。