Android 4.3
欢迎使用 Android 4.3,它是更贴心的 Jelly Bean 版本!
Android 4.3 包含面向用户和开发者的性能优化和强大的新功能。本文简要介绍了面向开发者的新变化。
如需详细了解新的开发者 API,请参阅 Android 4.3 API 文档。
要详细了解面向用户的全新 Jelly Bean 功能,请访问 www.android.com。
更快速、更流畅、更灵敏
Android 4.3 基于 Jelly Bean 中已有的性能改进(Vsync 计时、三重缓冲、减少触摸延迟、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 设备已提供相关支持。
增强的蓝牙连接
与蓝牙智能设备和传感器的连接
现在,您可以设计和构建能够与使用蓝牙智能技术的最新一代小型低功耗设备和传感器交互的应用。
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=6&hl=ro)
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 中引入的 Remote Control Client API 利用 AVRCP 1.3。除了在通过蓝牙连接的远程设备上提供播放控件之外,应用现在还可以传输元数据,例如曲目名称、作曲家和其他类型的媒体元数据。
对 AVRCP 1.3 的平台支持基于 Google 引入的 Bluedroid Bluetooth 堆栈和 Android 4.2 中的 Broadcom 构建而成。直接支持 Nexus 设备和其他提供 A2DP/AVRCP 功能的 Android 兼容设备。
对受限配置文件的支持
![设置受限配置文件](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=6&hl=ro)
平板电脑所有者可以在“设置”中设置一个或多个受限配置文件,并单独对其进行管理。
![在配置文件中设置限制](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=6&hl=ro)
您的应用可以提供限制,以便所有者可以管理应用内容(当应用在某个配置文件中运行时)。
Android 4.3 针对具有受限资料的平板电脑扩展了多用户功能,这是一种管理单台设备上的用户及其功能的新方式。借助受限配置文件,平板电脑所有者可以为每个用户快速设置单独的环境,同时还能在可于这些环境中运行的应用内管理更精细的限制。受限个人资料非常适合朋友和家人、访客用户、自助服务终端、销售终端设备等。
每个受限配置文件都提供一个隔离且安全的空间,这些空间有自己的本地存储空间、主屏幕、widget 和设置。与用户不同,配置文件是根据平板电脑所有者的已安装应用和系统帐号从平板电脑所有者的环境创建的。所有者可以控制在新资料中启用哪些已安装的应用,并且默认停用对所有者帐号的访问权限。
需要访问所有者帐号的应用(用于登录、偏好设置或其他用途)可以通过声明清单属性选择启用,并且所有者可以通过配置文件配置设置查看和管理这些应用。
对于开发者而言,受限配置文件提供了一种新方式,可为您的用户带来更多价值和控制力。您可以实现应用限制(应用支持的内容或功能控制),并在配置文件配置设置中向平板电脑所有者公布这些限制。
您可以使用预定义的布尔值、单选和多选类型将应用限制直接添加到配置文件配置设置中。如果您希望提高灵活性,甚至可以从配置文件配置设置中启动自己的界面,以提供您所需的任何类型的限制。
当应用在配置文件中运行时,它可以检查所有者配置的任何限制并相应地强制执行这些限制。例如,媒体应用可能会提供限制,让所有者为个人资料设置心智成熟度级别。在运行时,应用可以检查心智成熟度设置,然后根据首选心智成熟度级别管理内容。
如果您的应用并非设计为在受限资料中使用,您可以选择完全退出,这样您的应用就不会在任何受限资料中启用。
优化的位置和传感器功能
Google Play 服务提供了您可以在应用中使用的高级地理位置 API。Android 4.3 在受支持的设备上优化了这些 API,并添加了新的硬件和软件功能来最大限度地减少电池消耗。
硬件地理围栏通过在设备硬件(而非软件)中执行位置计算来优化省电。在支持硬件地理围栏的设备上,Google Play 服务地理围栏 API 将能够利用这项优化功能在设备移动时节省电量。
仅 Wi-Fi 扫描模式是一项新的平台优化,可让用户在不连接到 Wi-Fi 网络的情况下继续进行 Wi-Fi 扫描,从而提高位置信息精确度并节省电池电量。依赖 Wi-Fi 提供位置信息服务的应用现在可以要求用户通过 Wi-Fi 高级设置启用“仅扫描”模式。Wi-Fi 仅扫描模式不依赖于设备硬件,它作为 Android 4.3 平台的一部分提供。
新的传感器类型让应用可以更好地管理传感器读数。借助游戏旋转矢量,游戏开发者可以感知设备的旋转,而无需担心磁场干扰。未校准陀螺仪和未校准磁力计传感器会向应用报告原始测量结果以及估算的偏差。
新的硬件功能已在 Nexus 7(2013 年)和 Nexus 4 设备上提供,任何设备制造商或芯片组供应商都可以将这些功能构建到自己的设备中。
新的媒体功能
模块化数字版权管理框架
为了满足新一代媒体服务的需求,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 使用 VP8 编码。对于使用原生 API 的应用,该平台包含 OpenMAX 1.1.2 扩展头文件,以支持 VP8 配置文件和级别。VP8 编码支持包括目标比特率、速率控制、帧速率、令牌分区、错误弹性、重构和循环过滤器的设置。平台 API 引入了各种格式的 VP8 编码器支持,以便您可以利用最适合内容的格式。
VP8 编码适用于搭载 Android 4.3 的所有兼容设备上的软件。为了实现最佳性能,该平台还支持在受支持的设备上进行硬件加速 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 将用户直接转到“设置”,以启用监听器服务。
查看叠加层
您现在可以在 View 和 ViewGroup 上方创建透明叠加层,以渲染临时的 View 层次结构或瞬时动画效果,而不会干扰底层布局层次结构。如果您要创建动画(例如将视图滑动到其容器外,或者拖动屏幕上的项目而不影响视图层次结构),那么叠加层特别有用。
光学边界布局模式
借助新的布局模式,您可以根据视图的光学边界(而不是裁剪边界)管理 ViewGroup 中 View 的放置。裁剪边界表示 widget 的实际外边界,而新的光学边界则描述 widget 在裁剪边界内出现的位置。您可以使用光学边界布局模式正确对齐使用外部视觉效果(如阴影和发光)的 widget。
自定义旋转动画类型
应用现在可以定义设备旋转时在窗口上使用的退出和进入动画类型。您可以设置窗口属性,以启用跳接、交错淡出或标准窗口旋转。当窗口处于全屏模式且未被其他窗口覆盖时,系统会使用自定义动画类型。
屏幕方向模式
应用可以为 activity 设置新的屏幕方向模式,以确保它们在设备翻转时以正确的屏幕方向显示。此外,应用还可以使用新模式锁定屏幕,使其在当前方向上。这对于使用相机并希望在拍摄视频时停用旋转的应用来说非常有用。
用于处理快速回复的 Intent
Android 4.3 引入了一个新的公共 intent,可让任何应用处理快速回复,即用户为响应来电而发送的短信,无需接听来电或解锁设备。您的应用可以监听 intent 并通过您的消息传递系统将消息发送给调用方。intent 包括接收者(来电者)以及消息本身。
对国际用户的支持
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=6&hl=ro)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=6&hl=ro)
Android 4.3 还有更多部分针对 RTL 语言进行了优化。
RTL 方面的改进
Android 4.3 增强了 RTL 性能,并且对框架界面 widget(包括 ProgressBar/Spinner 和 expandingListView)提供了更广泛的 RTL 支持。可通过 uiautomatorviewer
工具查看更多调试信息。此外,更多系统界面组件(例如通知、导航栏和操作栏)现在能够感知 RTL。
为了在 RTL 脚本中提供更好的系统级体验,更多默认系统应用现在支持 RTL 布局,包括启动器、快捷设置、电话、人员、设置向导、时钟、下载等。
用于本地化的实用工具
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=6&hl=ro)
伪语言区域让您可以更轻松地测试应用的本地化情况。
Android 4.3 还包含用于创建更好的 RTL 字符串和测试已本地化界面的新实用程序和 API。新的 BidiFormatter 类提供了一个用于封装 Unicode 字符串的简单 API,以便 RTL 脚本数据在 LTR 语言区域消息中按预期显示,反之亦然。为了让您能够在应用中更广泛地使用此实用程序,现在还可通过 Android SDK 中的支持套餐为早期平台版本提供 BidiFormatter API。
为帮助您跨语言区域管理日期格式,Android 4.3 包含一个新的 getBestDateTimePattern() 方法,该方法可针对您指定的语言区域自动生成 Unicode UTS 日期的最佳本地化形式。这是为用户提供更本地化体验的一种便捷方式。
为了帮助您更轻松地用其他语言区域测试应用,Android 4.3 引入了伪语言区域作为新的开发者选项。伪语言区域会模拟与语言区域或语言组相关联的语言、脚本和显示特征。目前,您可以使用带重音符号的英语的伪语言区域进行测试,这样您就可以了解界面对于脚本口音和各种欧洲语言中使用的字符的适用情况。
无障碍服务和界面自动化
从 Android 4.3 开始,无障碍服务可以观察和过滤按键事件,例如处理键盘快捷键或提供与基于手势的输入等效的导航功能。服务会接收事件,并且可以在事件传递到系统或其他安装式应用之前根据需要对其进行处理。
无障碍服务可以声明新的功能属性,以描述其服务可以执行哪些操作以及所使用的平台功能。例如,它们可以声明以下功能:过滤按键事件、检索窗口内容、启用触摸浏览或启用网络无障碍功能。在某些情况下,服务必须先声明功能属性,然后才能访问相关的平台功能。系统会使用服务的功能属性为用户生成选择启用对话框,以便用户在发布之前查看并同意功能。
新的界面自动化框架基于 Android 4.3 中的无障碍功能框架构建而成,可让测试通过模拟用户操作和自省屏幕内容来与设备界面进行交互。通过界面自动化框架,您可以执行基本操作、设置屏幕旋转、生成输入事件、截取屏幕截图等。这是一种在真实用户场景(包括跨多个应用的操作或序列)中自动执行测试的有效方法。
企业和安全
适用于 WPA2-Enterprise 网络的 WLAN 配置
应用现在可以配置连接到 WPA2 企业接入点所需的 Wi-Fi 凭据。开发者可以使用新的 API 为企业中使用的身份验证方法配置可扩展的身份验证协议 (EAP) 和封装的 EAP(第 2 阶段)凭据。具有访问和更改 Wi-Fi 权限的应用可以配置用于各种 EAP 和第 2 阶段身份验证方法的身份验证凭据。
借助 SELinux 增强 Android 沙盒
Android 现在使用 SELinux,它是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于 UID 的应用沙盒。这可以保护操作系统免受潜在安全漏洞的危害。
KeyChain 增强功能
KeyChain API 现在提供了一种方法,可让应用确认系统级密钥是否已绑定到设备的硬件信任根。这提供了一个创建或存储私钥的位置,即使发生 root 权限或内核泄露的情况,这些私钥也无法从设备中导出。
Android Keystore 提供程序
Android 4.3 引入了密钥库提供程序和允许应用创建专用密钥的 API。利用这些 API,应用可以创建或存储其他应用无法查看或使用的私钥,并且可以在没有任何用户互动的情况下将其添加到密钥库。
密钥库提供程序提供的安全优势与 KeyChain API 为系统级凭据提供的安全优势相同,例如将凭据绑定到设备。密钥库中的私钥无法从设备中导出。
限制 Android 应用执行 SetUID 程序
/system
分区现在针对 Zygote 衍生的进程装载了 nosuid
,以防止 Android 应用执行 setuid
程序。这可以减小 Root 攻击面,并降低出现潜在安全漏洞的可能性。
分析性能的新方法
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=6&hl=ro)
Systrace 使用新的命令语法,允许您收集更多类型的分析数据。
增强型 Systrace 日志记录
Android 4.3 支持增强版 Systrace 工具,该工具更易于使用,并且可让您访问更多类型的信息以分析应用的性能。您现在可以从硬件模块、内核函数和 Dalvik 虚拟机(包括垃圾回收、资源加载等)收集轨迹数据。
Android 4.3 还包含新的 Trace API,您可以在自己的应用中使用这些 API,以便使用 Systrace 开始/结束事件来标记要跟踪的特定代码段。当标记的代码段执行时,系统会将开始/结束事件写入跟踪日志。对应用性能的影响微乎其微,因此报告的时间可让您准确了解应用正在执行的操作。
您可以在 Systrace 输出文件的时间轴中直观呈现应用特定事件,并在其他内核和用户空间轨迹数据的上下文中分析这些事件。结合使用自定义应用部分与现有的 Systrace 标记,您可以通过新方式了解应用的性能和行为。
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=6&hl=ro)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=6&hl=ro)
Android 4.3 中的屏幕上的 GPU 分析。
屏幕上的 GPU 分析
Android 4.3 添加了新的开发者选项,以帮助您分析应用性能并找出任何设备或模拟器上的渲染问题。
现在,借助 GPU 渲染模式分析选项,您可以在应用运行时在屏幕上直观呈现应用的有效帧速率。您可以选择在屏幕上以条形图或折线图的形式显示分析数据,并用颜色指示创建绘制命令(蓝色)、发出命令(橙色)和等待命令完成(黄色)所用的时间。系统会持续更新屏幕上的图表,显示每个可见 activity(包括导航栏和通知栏)的图表。
绿线突出显示了渲染操作的 16 毫秒阈值,以便您根据 60 fps 的目标评估应用的有效帧速率(因为 1/60 秒约等于 16 毫秒)。如果您发现有操作超出了绿线,可以使用 Systrace 和其他工具进一步分析操作。
在搭载 Android 4.2 及更高版本的设备上,开发者选项默认处于隐藏状态。您可以随时显示这些选项,方法是:在任何兼容的 Android 设备上点按 7 次设置 > 关于手机 > build 号。
针对文件 URI 的 StrictMode 警告
StrictMode 工具最新增加的一项是政策限制,它会在应用向系统或其他应用提供 file://
URI 时发出警告。在某些情况下,接收方应用可能无权访问 file://
URI 路径,因此在应用之间共享文件时,应使用 content://
URI(具有相应权限)。这项新政策可帮助您发现并解决此类情况。如果您正在寻找一种便捷的方式来存储文件以及向其他应用公开文件,请尝试使用支持库中提供的 FileProvider
content provider。
Android 4.2
![手机和平板电脑上的 Android 4.2](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=6&hl=ro)
欢迎使用 Android 4.2,它是最新的 Jelly Bean 版本!
Android 4.2 包含性能优化、焕然一新的系统界面和面向用户和开发者的强大新功能。本文简要介绍了面向开发者的新变化。
如需详细了解新的开发者 API,请参阅 Android 4.2 API 文档。
要详细了解面向用户的全新 Jelly Bean 功能,请访问 www.android.com。
更快速、更流畅、更灵敏
Android 4.2 基于 Jelly Bean 中已有的性能改进(Vsync 计时、三重缓冲、减少触摸延迟和 CPU 输入增强),并添加了可让 Android 速度更快的优化功能。
硬件加速 2D 渲染程序中的改进可让滚动和滑动等常见动画更顺畅、更快速。特别是,绘图已针对图层、裁剪和某些形状(圆角矩形、圆形和椭圆形)进行了优化。
各种 WebView 渲染优化都可确保网页的滚动更顺畅,并且不会出现抖动和延迟的情况。
Android 的 Renderscript 计算是首个经过移植可以直接在移动设备 GPU 上运行的计算平台。它会尽可能自动利用 GPU 计算资源,从而显著提高图形和图片处理的性能。任何在受支持的设备上使用 Renderscript 的应用都可以立即从此 GPU 集成中受益,而无需重新编译。
经过优化、焕然一新的界面
Android 4.2 优化了 Jelly Bean 用户体验,并为所有平板电脑带来了熟悉的 Android 界面模式(例如状态栏、系统栏和通知窗口)。
现在,各种尺寸的屏幕均在顶部显示状态栏,提供对通知的下拉访问和新的快捷设置菜单。熟悉的系统栏显示在底部,提供两只手都可以轻松使用的按钮。此外,所有尺寸的屏幕也都提供应用托盘。
一台平板电脑,多名用户使用
现在,多位用户可以共用一台 Android 平板电脑,而且每位用户都可以方便地访问专属的用户空间。用户只需在锁定屏幕上轻触一下,即可切换到自己的空间。
在多用户设备上,Android 会为每位用户提供单独的环境,包括特定于用户的模拟 SD 卡存储空间。用户还拥有自己的主屏幕、widget、帐号、设置、文件和应用,系统会将这些内容区分开来。所有用户都共享核心系统服务,但系统会确保每个用户的应用和数据都保持隔离状态。实际上,多位用户都有自己的 Android 设备。
用户可以随时在自己的环境中安装和卸载应用。为节省存储空间,只有当设备上的其他用户尚未安装 APK 时,Google Play 才会下载 APK。如果该应用已安装,则 Google Play 会按常规方式记录新用户的安装,但不会下载该应用的另一个副本。多个用户可以运行同一个 APK 副本,因为系统会为每个用户创建一个新实例,包括特定于用户的数据目录。
对于开发者而言,多用户支持是透明的 - 您的应用无需执行任何特殊操作即可在多用户环境中正常运行,并且您也无需对现有或已发布的 APK 进行任何更改。系统会在每个用户空间中管理您的应用,就像在单用户环境中一样。
吸引用户的新方式
![日历锁定屏幕微件](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=6&hl=ro)
您可以扩展应用微件,使其可以在锁定屏幕上运行,以便实现对内容的即时访问。
锁定屏幕微件
在 Android 4.2 中,用户可以将应用 widget 直接放在其锁定屏幕上,以便即时访问喜爱的应用内容,而无需解锁。用户可以添加多达 5 个锁屏 widget,可以从已安装的应用提供的 widget 中进行选择。锁定屏幕会将每个 widget 显示在其自己的面板中,以便用户左右滑动以查看不同的面板及其 widget。
与所有应用 widget 一样,锁定屏幕 widget 可以显示任何类型的内容,并且可以接受直接的用户互动。它们可以是完全独立的(例如,提供播放音乐的控件的 widget),也可以让用户在根据需要解锁后直接跳转到应用中的 activity。
对于开发者来说,锁屏微件提供了一种吸引用户的新方式。 它们可让您在用户经常看到的位置呈现您的内容,让您有更多机会直接将用户带到您的应用。
您可以通过构建新的应用 widget 或扩展现有的主屏幕 widget 来利用这项新功能。如果您的应用已包含主屏幕 widget,您可以将其扩展到锁定屏幕,只需稍作更改即可。为了向用户提供最佳体验,您可以更新 widget,以使用全屏锁定屏幕区域(如果可用),并根据需要在小屏幕上调整大小。您还可以向 widget 添加在锁定屏幕上特别有用或方便的功能。
Daydream
Daydream 是一种互动式屏保模式,它会在用户的设备插入基座或充电时启动。在此模式下,系统会启动 Daydream(一项由已安装的应用提供的远程内容服务)作为设备屏保。用户可以从“设置”应用中启用 Daydream,然后选择要显示的 Daydream。
Daydream 兼具动态壁纸和主屏幕 widget 的最佳功能,但功能更强大。借助它们,您可以通过一种全新的情境通过用户互动提供任何类型的内容,例如浏览照片、播放音频或视频,或者只需轻触一下即可直接进入您的应用。
由于 Daydream 可以在设备充电或插入基座时自动启动,因此它们也为应用提供了支持新型用户体验的绝佳方式,例如 leanback 或展览模式、演示或自助服务终端模式以及“吸引模式”,而所有这些都无需特殊硬件。
![Daydream 屏保模式](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=6&hl=ro)
Daydream 可让您创建强大的互动式屏保,显示任何类型的内容。
Daydream 与 activity 类似,可以提供 activity 所能执行的任何操作,从渲染界面层次结构(不使用 RemoteViews)到直接使用 Canvas、OpenGL、SurfaceTexture 等绘制。它们可以播放视频和音频,甚至可以接受直接的用户互动。不过,Daydream 并非 activity,因此不会影响返回堆栈或显示在“最近用过”中,也无法直接从您的应用启动。
实现 Daydream 非常简单,并且您可以利用已为应用的其他部分创建的界面组件和资源。您可以在应用中提供多个 Daydream ,并且可以为每个 Daydream 提供不同的内容和显示设置。
外部显示屏支持
Android 4.2 引入了对外部屏幕的平台支持,其支持远不止镜像。应用现在可以将独特的内容定位到连接到 Android 设备的任何一个或多个屏幕。应用可以以此为基础,为用户提供新型互动和娱乐体验。
显示屏管理器
应用通过新的显示屏管理器系统服务与显示屏交互。您的应用可以枚举显示屏并检查每个显示屏的功能,包括尺寸、密度、显示名称、ID、对安全视频的支持等。您的应用也可以在添加或移除显示屏或显示屏功能发生更改时收到回调,以便更好地管理您在外部显示屏上的内容。
演示文稿窗口
为了便于在外部显示屏上显示内容,该框架提供了一个称为演示文稿的新界面对象,它是一种类型的对话框,表示应用内容在特定外部显示屏上的窗口。您的应用只需提供要使用的显示屏、窗口主题以及要显示的任何独特内容。演示文稿会根据目标显示屏的特性处理膨胀资源并渲染您的内容。
![](https://developer.android.google.cn/static/images/external-display.png?authuser=6&hl=ro)
您可以使用演示文稿完全控制两个或多个独立的显示屏。
借助演示文稿,您的应用可以完全控制远程显示窗口及其内容,并可让您根据用户输入事件(例如按键、手势、动作事件等)对其进行管理。您可以使用所有常规工具在演示文稿中创建界面并渲染内容,从构建任意视图层次结构到使用 SurfaceView 或 SurfaceTexture 直接绘制到流式传输内容或相机预览的窗口中,不一而足。
首选显示屏选择
当有多个外部显示屏可用时,您可以根据需要创建任意数量的演示文稿,每个演示文稿在特定显示屏上显示独特的内容。在许多情况下,您可能只想在单个外接显示屏上显示内容,但始终在最适合演示文稿内容的外接显示屏上显示。因此,系统可以帮助您的应用选择要使用的最佳显示屏。
为了找到要使用的最佳显示屏,您的应用可以在显示屏管理器中查询系统的首选演示文稿显示屏,并在该显示屏发生变化时接收回调。或者,您也可以使用在 Android 4.2 中扩展的媒体路由器服务,以便在系统视频路由发生更改时收到通知。默认情况下,您的应用可以在主 activity 中显示内容,直到连接首选演示文稿显示屏,此时应用可以在首选显示屏上自动切换到演示文稿内容。您的应用还可以使用媒体路由器的 MediaRouteActionProvider 和 MediaRouteButton 提供标准的显示屏选择界面。
受保护的内容
对于会处理受保护内容或加密内容的应用,Display API 现在会报告连接的显示屏的安全视频功能。您的应用会查询显示屏,以了解其是否提供安全视频输出或是否提供受保护的图形缓冲区,然后选择适当的内容流或解码以使内容可见。为了提高 SurfaceView 对象的安全性,应用可以设置一个安全标志,以指示内容绝不应出现在屏幕截图或不安全的显示输出中,即使在镜像时也不例外。
无线显示
从 Android 4.2 开始,使用受支持设备的用户可以通过 Wi-Fi 连接到外部屏幕,并使用 Wi-Fi 屏幕(一种符合 MiracastTM 认证计划要求的点对点无线显示解决方案)。连接无线显示屏后,用户可以将任何类型的内容(包括照片、游戏、地图等)流式传输到大屏幕上。
应用可以像利用其他外部显示屏一样利用无线显示屏,无需进行任何额外的操作。系统会管理网络连接,并根据需要将您的演示文稿或其他应用内容流式传输到无线显示屏。
原生 RTL 支持
![RTL 布局镜像](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=6&hl=ro)
现在,开发者可以针对 RTL 语言镜像其布局。
Android 4.2 引入了对 RTL(从右到左)布局的完整原生支持,包括布局镜像。借助原生 RTL 支持,您可以为所有用户提供同样出色的应用体验,无论他们使用的语言使用的是从右到左的脚本,还是从左到右的脚本。
当用户将系统语言切换为从右到左的脚本时,除了针对阅读和字符输入进行文本元素的双向镜像之外,系统现在还会提供应用界面布局和所有视图 widget 的自动镜像。
您的应用可以轻松利用 RTL 布局镜像。 如果您希望对该应用进行镜像,只需在应用清单中声明一个新属性,并将所有“左/右”布局属性更改为新的“开始/结束”等效属性即可。然后,系统会视情况处理界面的镜像和显示。
为了精确控制应用界面,Android 4.2 包含一些新的 API,可让您管理 View 组件中的布局方向、文本方向、文本对齐、重力和语言区域方向。您甚至可以创建自定义版本的布局、可绘制对象和其他资源,以便在使用从右到左的脚本时显示。
为帮助您调试和优化自定义的从右到左布局,HierarchyViewer 工具现在可以让您查看层次结构中所有视图的开始/结束属性、布局方向、文本方向和文本对齐方式。
针对国际语言的增强功能
Android 4.2 包含各种针对国际用户的字体和字符优化:
- 针对韩国用户,我们推出了一种新的字体选项 - Nanum (已保存的曲目) 哥特语,这是一种专为韩语脚本设计的 Unicode 字体。
- 改进了对 WebView 中显示的日语竖排文本的支持。
- 改进了印度语、泰语、阿拉伯语和希伯来语默认字体的字距调整和定位。
默认 Android 键盘还包含一组更新后的字典:
- 改进了法语(支持二元语法)、英语和俄语字典
- 新增了丹麦语、希腊语、芬兰语、立陶宛语、拉脱维亚语、波兰语、斯洛文尼亚语、塞尔维亚语、瑞典语和土耳其语字典
创建精美界面的新方法
嵌套 Fragment
为了更好地控制界面组件,并使其更加模块化,Android 4.2 允许您在 Fragment 中嵌套 Fragment。对于任何 fragment,新的 fragment 管理器都允许您将其他 fragment 作为子节点插入到视图层次结构中。
您可以通过多种方式使用嵌套 fragment,但它们对于在本身动态且可重复使用的界面组件内实现动态且可重复使用的界面组件特别有用。例如,如果您使用 ViewPager 创建可左右滑动的 fragment,则现在可以将 fragment 插入到视图分页器的每个 fragment 中。
为了让您能够在应用中更广泛地利用嵌套 fragment,我们将此功能添加到了最新版本的 Android 支持库中。
无障碍功能
现在,在触摸浏览模式下,系统可以帮助无障碍服务区分触摸浏览和无障碍手势。当用户轻触屏幕时,系统会通知服务常规触摸互动已启动。然后,它会跟踪触摸互动的速度,并确定是触摸探索(缓慢)还是无障碍手势(快速),并通知服务。当触摸交互结束时,系统会通知服务。
系统提供了一个新的全局无障碍选项,可让无障碍服务根据用户的操作打开“快捷设置”菜单。Android 4.2 中还新增了一种适用于盲文设备的无障碍反馈类型。
为了让无障碍服务能够出于无障碍目的深入了解 View 的含义,该框架提供了新的 API,用于将一个 View 关联为另一个 View 的标签。无障碍服务可通过 AccessibilityNodeInfo 使用每个 View 的标签。
改进的相机与 HDR
Android 4.2 引入了新的相机硬件接口和管道,以提高性能。在受支持的设备上,应用可以使用新的 HDR 相机取景模式,利用高动态范围成像技术拍摄图片。
此外,该框架现在提供了一个 API,可让应用检查是否可以停用相机快门提示音。然后,应用可让用户停用该声音,或者选择使用其他声音来代替标准快门声音(推荐)。
Renderscript 计算
在 Android 4.2 中,Renderscript 计算引入了新的脚本功能、新的优化和直接的 GPU 集成,以在计算操作中实现最高性能。
Filterscript
Filterscript 是 Renderscript 的一个子集,专注于在各种设备芯片组上优化图片处理。开发者可以使用标准的 Renderscript 运行时 API 在 Filterscript 中编写图片处理操作,但需要遵守更严格的限制条件,确保跨 CPU、GPU 和 DSP 实现更广泛的兼容性并改进优化。
Filterscript 非常适合硬件加速的简单图像处理和计算操作,例如可能为 OpenGL ES fragment 着色器编写的操作。由于它对硬件施加了一系列宽松的限制,因此您可以在更多类型的设备芯片组上优化和加速运营。任何以 API 级别 17 或更高级别为目标的应用都可以使用 Filterscript。
脚本内建函数
在 Android 4.2 中,Renderscript 增加了对一组脚本内建函数的支持,即预先实现加速的过滤基元,以减少需要编写的代码量,并确保应用的性能得到尽可能高。
内建函数可用于混合、模糊处理、颜色矩阵、3x3 和 5x5 卷积、每通道对照表,以及将 Android YUV 缓冲区转换为 RGB。
脚本组
您现在可以创建 Renderscript 脚本组,并通过单个调用将它们全部执行,就像它们是单个脚本的一部分一样。这样一来,Renderscript 便可以通过单独执行每个脚本时无法优化脚本的执行方式。
![RenderScript 优化图表](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=6&hl=ro)
Renderscript 图片处理基准测试仅通过 Galaxy Nexus 设备的 CPU 在不同的 Android 平台版本(Android 4.0、4.1 和 4.2)上运行。
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=6&hl=ro)
Renderscript 图片处理基准,将在同一 Nexus 10 设备的 GPU 和 CPU 中运行的操作与仅在其 CPU 中运行的操作进行比较。
如果您有要运行的 Renderscript 操作的有向无环图,则可以使用构建器类创建定义操作的脚本组。在执行时,Renderscript 会优化运行顺序以及这些操作之间的连接,以实现最佳性能。
持续的优化改进
使用 Renderscript 执行计算操作时,您的应用会受益于 Renderscript 引擎本身持续的性能和优化改进,而不会对应用代码产生任何影响,也无需进行重新编译。
随着优化的改进,您的操作会在更多芯片组上更快地执行,而您无需执行任何操作。右侧图表突出显示了 Android 平台后续版本中持续进行的 RenderScript 优化改进所能实现的性能提升。
GPU 计算
Renderscript 计算是第一个经过移植可以直接在移动设备 GPU 上运行的计算平台。它现在会尽可能自动利用 GPU 计算资源来提高性能。凭借 GPU 集成,即使是进行最复杂的图形或图片处理计算时,也能显著提高性能。
任何在受支持的设备上使用 Renderscript 的应用都可以立即从此 GPU 集成中受益,而无需重新编译。Nexus 10 平板电脑是首款支持此集成的设备。
新的内置开发者选项
Android 4.2 系统包含各种新的开发者选项,可让您更轻松地构建外观精美、性能出色的应用。这些新选项提供了用于从任何设备或模拟器调试和性能分析应用的功能。
在搭载 Android 4.2 的设备上,开发者选项默认处于隐藏状态,这有助于为用户打造更好的体验。您可以随时显示开发者选项,方法是:在任何兼容的 Android 设备上点按 7 次设置 > 关于手机 > 版本号。
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=6&hl=ro)
新的开发者选项为您提供了更多在设备上分析和调试应用的方法。
Android 4.2 中的新开发者选项包括:
- 生成 bug 报告 - 立即截取屏幕截图并将设备状态信息转储到本地文件存储空间,然后将其附加到新的外发电子邮件中。
- 电源菜单 bug 报告 - 向设备电源菜单和快捷设置添加新选项,用于生成 bug 报告(参见上文)。
- 通过 USB 验证应用 - 允许您通过 USB 停用旁加载应用的应用检查,同时仍然检查来自其他来源(如浏览器)的应用。这可以加快开发流程,同时使安全功能保持启用状态。
- 显示硬件层更新 - 硬件层更新时,指示灯显示为绿色。
- 显示 GPU 过度绘制 - 突出显示 GPU 过度绘制区域。
- 强制启用 4x MSAA - 在 Open GL ES 2.0 应用中启用 4x MSAA。
- 模拟辅助显示屏 - 在当前屏幕上创建一个或多个不安全的叠加层窗口,以用作模拟远程显示屏。您可以控制模拟显示屏的尺寸和密度。
- 启用 OpenGL 跟踪记录 - 可让您使用 Logcat、Systrace 或 glGetError 上的调用堆栈来跟踪 OpenGL 执行情况。
新平台技术
Android 4.2 包含各种新的和增强型平台技术,可跨各种硬件设备支持创新的通信用例。在大多数情况下,新的平台技术和增强功能不会直接影响您的应用,因此您无需进行任何修改即可受益于这些技术。
安全增强功能
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 4.2 中的一些增强功能:
- 应用验证 - 用户可以选择启用“验证应用”,并且可以选择在应用安装之前由应用验证程序对其进行筛查。如果用户尝试安装的应用可能有害,应用验证功能可以提醒用户;如果应用的危害性非常大,应用验证功能可以阻止安装。
- 加强对付费短信的控制 - 如果有应用尝试向使用付费服务的短号码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止应用发送消息。
- 始终开启的 VPN - 可以配置 VPN,以确保在建立 VPN 连接之前应用无法访问网络。这可以防止应用跨其他网络发送数据。
- 锁住证书 - 核心库 SSL 实现现在支持固定证书。如果证书未链接到一组预期的证书,则固定的网域将会收到证书验证失败消息。这有助于保护证书授权机构免遭可能的入侵。
- 改进后的 Android 权限显示方式 - 权限划分到了多个对用户来说更清晰明了的组中。在审核权限期间,用户可以点击权限来查看关于该权限的更多详细信息。
- installd 安全强化 - installd 守护程序不会以 Root 用户身份运行,这样可以缩小 Root 提权攻击的潜在攻击面。
- init 脚本安全强化 - init 脚本现在会应用 O_NOFOLLOW 语义来防范与符号链接相关的攻击。
- FORTIFY_SOURCE - Android 现在会实现 FORTIFY_SOURCE。供系统库和应用用于防范内存损坏。
- ContentProvider 默认配置 - 默认情况下,对于每个 ContentProvider,以 API 级别 17 为目标的应用都会将“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 系统的设备可能也会包含这些修复程序。
新的蓝牙堆栈
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 运行时包括针对各种架构的性能和安全性的增强功能:
- 由 Intel 提供的 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
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=6&hl=ro)
欢迎使用 Android 4.1,它是 Jelly Bean 的第一个版本!
Android 4.1 是迄今为止最快、最流畅的 Android 版本。我们对整个平台进行了改进,并为用户和开发者添加了强大的新功能。本文简要介绍了面向开发者的新变化。
有关新的开发者 API 的详细信息,请参阅 Android 4.1 API 文档。
要详细了解面向用户的 Jelly Bean 功能,请访问 www.android.com。
更快速、更流畅、更灵敏
Android 4.1 经过优化,可在易用、直观的界面中提供 Android 的最佳性能和最低轻触延迟。
为了确保一致的帧速率,Android 4.1 将 Vsync 计时扩展到了所有由 Android 框架完成的绘图和动画中。包括应用渲染、轻触事件、画面构成和显示刷新在内的一切操作均按照 16 毫秒的 Vsync 检测信号同步运行,因此帧不会提前或延迟。
Android 4.1 还在图形管道中添加了三重缓冲,以实现更加一致的渲染,让滚动、分页和动画等更加流畅。
Android 4.1 通过以下两种方式降低轻触延迟:将轻触同步到 Vsync 计时,以及实际预测屏幕刷新时您的手指所在的位置。轻触延迟降低后,轻触响应速度会更快、更一致。此外,在处于非活跃状态一段时间后,Android 会在下一次触摸事件时应用 CPU 输入增强,以确保不会出现延迟。
工具可以帮助您让应用获得绝佳性能。Android 4.1 旨在与一个名为 systrace 的新工具配合使用,该工具可以直接从 Linux 内核收集数据,以提供系统活动的整体情况。数据以一组垂直堆叠的时间序列图的形式表示,可帮助隔离渲染中断和其他问题。该工具现已在 Android SDK(Tools R20 或更高版本)中提供
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=6&hl=ro)
增强型无障碍服务
借助适用于无障碍服务的新 API,您可以在用户使用无障碍手势、配件和其他输入在屏幕元素和导航按钮之间移动时,处理手势和管理无障碍服务焦点。Talkback 系统和轻触浏览经过重新设计,使得无障碍服务焦点更易于使用,并为开发者提供了一套完整的 API。
无障碍服务可以将自己的教程链接到无障碍服务设置,以帮助用户配置和使用他们的服务。
使用标准“视图”组件的应用会自动继承对新的无障碍功能的支持,无需对代码进行任何更改。使用自定义“视图”的应用可以使用新的无障碍功能节点 API 指明对无障碍服务感兴趣的“视图”部分。
对国际用户的支持
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=6&hl=ro)
双向文本和其他语言支持
Android 4.1 通过在 TextView 和 EditText 元素中支持双向文本来帮助您覆盖更多用户。应用可以用从左向右或从右向左的脚本显示文本或处理文本编辑。应用可以使用新的阿拉伯语和希伯来语语言区域和相关的字体。
其他类型的新语言支持包括:
- 其他印度语言:卡纳达语、泰卢固语和马拉雅拉姆语
- Unicode 6.0 版中添加了新的表情符号字符
- 为日语用户提供更好的字形支持(当系统语言设置为日语时,呈现日语专用版字形)
- 除了提供适用于 TextView 的阿拉伯语字形之外,还针对 WebView 优化了阿拉伯语字形
- 在 WebView 中提供竖排文本支持,包括 Ruby 文本和其他竖排文本字形
- 合成粗体现在适用于所有没有专用粗体字形的字体
用户可安装的按键映射
平台现在支持用户可安装的键盘映射,例如针对其他国际键盘和特殊的布局类型。默认情况下,Android 4.1 包含 27 个键盘(包括 Dvorak)的国际按键映射。当用户连接某个键盘时,他们可以转到“设置”应用,选择一个或多个他们希望用于该键盘的按键映射。在输入时,用户可以使用快捷键(ctrl-空格键)在按键映射之间切换。
您可以创建一个应用,以将其他按键映射发布到系统中。相应 APK 会基于标准 Android 按键映射格式,在其中包含键盘布局资源。应用可以通过在其清单中为 ACTION_QUERY_KEYBOARD_LAYOUTS 声明合适的广播接收器,为用户提供其他键盘布局。
创建精美界面的新方法
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=6&hl=ro)
开发者可以创建自定义通知样式(如上例所示),以显示丰富的内容和操作。
可展开的通知
通知一直以来都是 Android 上的一项独特且热门的功能。开发者可以使用通知,在应用常规界面之外的通知栏中向用户显示重要或基于时间的信息。
Android 4.1 为 Android 通知框架带来了一项重大更新。现在,应用可以向用户显示更大、更丰富的通知,且这些通知能够通过双指张合或滑动展开和收起。通知支持新的内容类型(包括照片),具有可配置的优先级,甚至可以包含多种操作。
通过经过改进的通知构建工具,应用可以创建占用更大区域(高度最高可达 256 dp)的通知。有三种可用的模板化通知样式:
- BigTextStyle - 一种包含多行 TextView 对象的通知。
- BigInboxStyle - 一种显示任何类型的列表(例如消息、标题等)的通知。
- BigPictureStyle - 一种显示图像内容(例如位图)的通知。
除了模板化样式之外,您还可以使用任何远程视图创建自己的通知样式。
应用可以向通知添加多达三种操作,这些操作显示在通知内容的下方。通过这些操作,用户能够以多种方式(例如,通过电子邮件或电话)直接响应通知中的信息,而无需访问应用。
借助展开式通知,应用可以轻松地按需向用户提供更多信息。用户仍拥有控制权,并可以通过长按任何通知来获取关于发送者的信息,还可以选择今后不再收到应用发送的通知。
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=6&hl=ro)
应用微件可以自动调整大小以适应主屏幕空间,并在其大小发生变化时加载不同的内容。
可调整大小的应用微件
Android 4.1 引入了经过改进的应用微件,这些微件可以根据用户将其拖动到主屏幕上的位置、用户将其扩展到的大小以及主屏幕上的可用空间自动调整大小。新的 App Widget API 让您可以利用这一点,在 widget 大小发生变化时优化应用 widget 内容。
当微件大小发生变化时,系统会通知托管应用的微件提供商,而微件提供商可以根据需要重新加载微件中的内容。例如,微件可以显示更大、更丰富的图形或者其他功能或选项。开发者仍然可以控制微件的最大和最小尺寸,并可以视需要更新其他微件选项。
此外,您还可以为微件提供单独的横向和纵向布局,系统会在屏幕方向发生变化时适当地对其进行扩充。
现在,应用 widget 可以通过新的绑定 intent (AppWidgetManager.ACTION_APPWidget_BIND) 在第三方启动器和其他托管应用中显示。
简化的任务导航
Android 4.1 让您可以轻松管理应用内向用户提供的“向上”导航,并帮助确保为用户提供一致的体验。
您可以通过在应用的清单文件中添加新的 XML 属性,为界面上的各个 Activity 组件定义预期的“向上”导航。在运行时,当 Activity 启动时,系统会从清单文件中提取“向上”导航树,并自动在操作栏中创建“向上”导航。在清单文件中声明“向上”导航的开发者无需再在运行时通过回调管理导航,尽管他们也可以在必要时这样做。
另外还提供了一个新的 TaskStackBuilder 类,通过该类,您可以快速地组合合成的任务堆栈,以立即启动或在有 Activity 从 PendingIntent 启动时使用。当用户从远程视图(例如主屏幕微件和通知)启动 Activity 时,创建合成的任务堆栈尤为有用,因为它可以让开发者提供受管理且一致的“返回”导航体验。
适用于 Activity 启动的简单动画
您可以使用新的辅助程序类 ActivityOptions 来创建和控制启动 Activity 时显示的动画。通过辅助程序类,您可以指定在启动 Activity 时要使用的自定义动画资源,或者请求新的缩放动画,此类动画从您在屏幕上指定的任何矩形启动且可以选择性地包含缩略图位图。
转换到关灯和全屏模式
通过视图中新的系统界面标记,您可以从常规的应用界面(操作栏、导航栏以及系统栏显示)彻底转换到“关灯模式”(状态栏和操作栏隐藏,导航栏变暗)或“全屏模式”(状态栏、操作栏和导航栏全部隐藏)。
新的远程可用视图类型
开发者现在可以在主屏幕微件和通知中使用 GridLayout 和 ViewStub 视图。借助 GridLayout,您可以设置远程视图内容的结构,并使用浅层界面层次结构管理子视图的对齐方式。ViewStub 是一个不可见、零大小的视图,可用于在运行时延迟扩充布局资源。
动态壁纸预览
Android 4.1 让用户可以更轻松地从提供动态壁纸的应用中查找和安装动态壁纸。如果您的应用包含动态壁纸,您现在可以启动一个 activity (ACTION_CHANGE_LIVE_WALLPAPER),向用户显示您自己应用中的动态壁纸预览。用户可以在预览中直接加载动态壁纸。
分辨率更高的联系人照片
在 Android 4.1 中,您可以存储大小为 720 x 720 的联系人照片,让联系人形象更加丰富、更具个性化。应用可以存储和检索这一大小的联系人照片,也可以根据需要使用任何其他尺寸。特定设备上支持的照片大小上限可能会有所不同,因此,应用应在运行时查询内置联系人提供程序,以获取当前设备支持的照片大小上限。
新的输入类型和功能
了解有关正在添加和移除的设备的信息
应用可以进行注册,以便在任何新的输入设备通过 USB、蓝牙或任何其他连接类型连接时收到通知。它们可以根据需要使用该信息来更改状态或功能。例如,游戏可以收到关于有新的键盘或操纵杆连接(表明有新的玩家出现)的通知。
查询输入设备的功能
Android 4.1 包含的 API 可让应用和游戏充分利用所有连接的和可用的输入设备。
应用可以查询设备管理器,以列举当前连接的所有输入设备,并了解每台设备的功能。
控制输入设备上的振动器
除了其他功能之外,应用现在可以利用与连接的输入设备相关联的任何振动器服务,例如 Rumble Pak 控制器。
动画和图形
应用的 Vsync
跨 Android 框架扩展 vsync 可以实现更一致的帧速率和流畅稳定的界面。为了让应用也能从中受益,Android 4.1 将 Vsync 计时功能扩展到了由应用启动的所有绘图和动画中。这可以让应用优化界面线程上的操作,并为同步提供稳定的时基。
应用可以通过 Android 的动画框架免费利用 Vsync 计时。现在,动画框架可以使用 Vsync 计时功能自动处理动画程序之间的同步。
对于专门用途,应用可以通过由新的 Choreographer 类提供的 API 访问 Vsync 计时。应用可以请求下一个 Vsync 帧无效,这是一种当应用没有使用动画框架时安排动画的绝佳方法。对于更高级的用途,应用可以发布一个 Choreographer 类会在下一帧上运行的回调。
新的动画操作和转换类型
现在,动画框架允许您定义运行 ViewPropertyAnimator 动画时要执行的开始和结束操作,以使这些动画与应用中的其他动画或操作同步。该操作可以运行任何可运行的对象。例如,可运行的对象可指定上一个动画结束时要启动的下一个动画。
现在,您还可以指定 ViewPropertyAnimator 在其动画过程中使用层。以前,最佳的做法是在启动动画之前设置一个层,然后在动画结束时通过处理 onAnimationEnd() 事件来移除该层,从而为复杂的视图添加动画效果。现在,ViewPropertyAnimator 上的 withLayer() 方法通过单次方法调用简化了该过程。
借助 LayoutTransition 中的新转换类型,您可以根据 ViewGroup 中的所有布局更改自动处理动画。
新的连接类型
Android Beam
Android Beam 是一种基于 NFC 的热门技术,借助它,用户只需同时轻触两个支持 NFC 的手机即可进行即时共享。
在 Android 4.1 中,Android Beam 利用蓝牙进行数据传输,可让您更轻松地分享图片、视频或其他负载。当用户触发传输时,Android Beam 将其从 NFC 转至蓝牙,让您可以非常轻松地管理设备间的文件传输。
WLAN 网络服务发现
Android 4.1 引入了对基于多播 DNS 的服务发现的支持,通过它,应用可以通过 WLAN 网络找到并连接到对等设备(包括移动设备、打印机、相机和媒体播放器等)提供的服务。开发者可以利用 WLAN 网络服务发现来打造跨平台或多人游戏和应用体验。
通过使用服务发现 API,应用可以创建和注册任何类型的服务,供任何其他支持 NSD 的设备发现。该服务由多播使用可人工读取的字符串标识符在整个网络中公布,而这可以让用户更轻松地识别服务类型。
消费类设备可以使用该 API 来扫描和发现连接到本地 WLAN 网络的设备提供的服务。发现服务之后,应用可以使用该 API 将相应服务解析到一个可通过其建立套接字连接的 IP 地址和端口。
您可以利用该 API 将新的功能构建到您的应用中。例如,您可以让用户连接到支持 WLAN 点对点连接的其他移动设备上的网络摄像头、打印机或应用。
WLAN 点对点服务发现
Ice Cream Sandwich 引入了对 Wi-Fi 点对点 (P2P) 的支持,该技术可让应用通过高带宽点对点连接(符合 Wi-Fi 联盟的 Wi-Fi 直连 TM认证计划)发现并直接配对。Wi-Fi 点对点是分享媒体、照片、文件和其他类型的数据和会话的理想方式,即使没有移动网络或 Wi-Fi 可用也是如此。
Android 4.1 进一步完善了 WLAN 点对点,为预先关联的服务发现添加了 API 支持。通过预先关联的服务发现,您的应用可以先从附近的设备获取有关它们支持的服务的更多实用信息,然后再尝试进行连接。应用可以针对某些具体的服务启动发现,并对发现的设备列表进行过滤,以仅显示实际支持目标服务或应用的设备。
例如,这意味着您的应用可以仅发现“打印机”或包含特定游戏的设备,而不是发现附近所有的 WLAN 点对点设备。另一方面,您的应用可以将其提供的服务公布给其他设备,而这些设备可以发现相应服务,然后协商连接。这极大地为用户简化了发现和配对的流程,并使应用能够更有效地利用 WLAN 点对点。
借助 WLAN 点对点服务发现,您可以打造能够分享照片、视频、游戏、得分或几乎任何其他内容的应用和多人游戏,而完全不必使用任何互联网或移动网络。您的用户可以只使用直接的点对点连接进行连接,这可以避免使用移动带宽。
网络带宽管理
Android 4.1 可帮助应用在设备连接到按流量计费的网络(包括连接到移动热点)时以适当的方式管理流量消耗。应用可以在开始下载大量内容(对用户来说,费用可能相对较高)之前查询当前网络是否为按流量计费。通过该 API,您现在可以清楚地了解哪些网络对流量消耗比较敏感,并相应地管理您的网络 Activity。
新的媒体功能
媒体编解码器访问
Android 4.1 提供对平台硬件和软件编解码器的底层访问权限。应用可以查询系统,以了解设备上提供哪些底层媒体编解码器,然后以所需的方式使用这些编解码器。例如,您现在可以创建媒体编解码器的多个实例、将输入缓冲区添加到队列并反过来接收输出缓冲区。此外,媒体编解码器框架支持受保护的内容。应用可以查询符合以下条件的可用编解码器:能够使用设备上提供的数字版权管理解决方案播放受保护的内容。
USB 音频
通过 USB 音频输出支持,硬件供应商可以构建音频基座(能够与 Android 设备连接)等硬件。此功能还随 Android 开放配件开发套件 (ADK) 一起提供,让所有开发者都有机会构建自己的硬件。
录音功能触发
Android 现在可让您根据音频播放曲目的完成情况触发录音功能。这对于通过播放提示音来提示用户开始讲话以记录其声音等情况非常有用。此功能可帮助您同步录制,因此您不会录制当前正在播放的音频,且可以避免录制开始时间过晚的情况。
多声道音频
Android 4.1 在通过 HDMI 端口提供硬件多声道音频输出的设备上支持多声道音频。借助多声道音频功能,您可以针对游戏、音乐应用和视频播放器等应用为用户提供丰富的媒体体验。对于没有受支持的硬件的设备,Android 会自动将音频降混成相应设备支持的声道数(通常为立体声)。
此外,Android 4.1 还添加了对编码/解码 AAC 5.1 音频的内置支持。
音频预处理
开发者可以对正在录制的音频应用预处理效果,例如应用降噪以提高语音录制质量,针对声学回声应用回声消除,以及针对具有不同音量的音频应用自动增益控制。需要高质量的纯净录音的应用将受益于这些预处理工具。
音频链接
MediaPlayer 支持将音频流链接到一起,以不间断地播放音频文件。对于需要在音频文件之间无缝切换的应用(例如播放包含连续曲目的专辑的音乐播放器或游戏)来说,这会非常有用。
媒体路由器
新的 API MediaRouter、MediaRouteActionProvider 以及 MediaRouteButton 提供用于选择媒体播放位置的标准机制和界面。内置了对有线耳机和 a2dp 蓝牙耳机及扬声器的支持,并且您可以在自己的应用内添加自己的路由选项。
Renderscript 计算
Android 4.1 扩展了 Renderscript 计算,可为您提供更大的灵活性。您现在可以对 Renderscript 计算脚本中的纹理进行采样,并且可以使用新的 pragma 来设定您的脚本所需的浮点精确率。这让您可以启用 NEON 指令(例如 CPU 路径上的快速矢量数学运算),这是使用完整 IEEE 754-2008 标准无法实现的。
您现在可以在基于 x86 的模拟器和硬件设备上调试您的 Renderscript 计算脚本。您还可以在一个 Renderscript 来源文件中定义多个根型内核。
Android 浏览器和 WebView
在 Android 4.1 中,Android 浏览器和 WebView 包含以下增强功能:
- 更出色的 HTML5 视频用户体验,包括轻触播放/暂停以及从内嵌模式到全屏模式的顺畅转换。
- 提高了渲染速度并减少了内存使用量,可提供更好的滚动和缩放性能。
- 改进了 HTML5/CSS3/画布动画性能。
- 改进了文本输入。
- 更新了 JavaScript 引擎 (V8),以实现更好的 JavaScript 性能。
- 支持更新后的 HTML5 媒体捕获规范(输入类型上的“capture”属性=文件元素)。
Google API 和服务
为了进一步扩展 Android 功能,我们提供了多项新的 Android 服务。
Android 版 Google 云消息传递
Google 云消息传递 (GCM) 服务可以让开发者向用户的 Android 设备发送短消息数据,而无需拥有专门的同步解决方案。
GCM 会处理有关将消息加入队列并高效地提供给目标 Android 设备的所有细节。它支持消息多播,通过单个请求可以同时覆盖多达 1000 台已连接的设备。它还支持消息载荷,这意味着除了向设备上的应用发送 tickle 消息之外,开发者还可以发送高达 4K 的数据。
Google 云消息传递完全免费向所有开发者提供,并且易于注册。有关注册、下载和文档的信息,请参阅 Google 云消息传递页面。
应用加密
从 Android 4.1 开始,Google Play 会在所有付费应用交付和存储到设备之前,使用设备专用密钥对其进行加密,从而帮助保护应用资产。
智能应用更新
智能应用更新是 Google Play 的一项新功能,它引入了一种更好的向设备提供应用更新的方式。当开发者发布更新时,Google Play 现在仅向设备提供已更改的位,而非整个 APK。在大多数情况下,这使得更新更轻量,因此它们的下载速度更快,节省设备的电量,并节省用户移动流量套餐的带宽用量。平均而言,智能应用更新的大小约为完整 APK 更新的 1/3。
Google Play 服务
Google Play 服务可帮助开发者将身份验证等 Google 服务集成到通过 Google Play 交付的应用中。
Google Play 服务由 Google Play 自动配置到最终用户的设备,因此您只需要在应用中包含瘦客户端库即可。
由于您的应用仅包含瘦客户端库,因此您可以充分利用这些服务,而应用下载大小和存储占用空间并不会大幅增加。此外,Google Play 会定期更新这些服务,开发者无需发布应用更新即可利用它们。
要详细了解 Google Play 服务中包含的 API,请参阅 Google Play 服务开发者页面。