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 设备上已提供相应支持。
增强的蓝牙连接
与蓝牙智能设备和传感器的连接
现在,您可以设计和构建能够与最新一代小型低功耗设备和传感器进行交互的应用,这些设备和传感器均使用蓝牙智能技术。
Android 4.3 内置对于发挥核心作用的 Bluetooth Smart Ready 的平台支持,并提供一组标准 API,应用可以使用这些 API 发现附近的设备、查询 GATT 服务以及读取/写入特征。
借助这些新 API,您的应用可以高效地搜索感兴趣的设备和服务。对于每种设备,您可以按 UUID 查看支持的 GATT 服务,还可以按设备 ID 和信号强度管理连接。您可以连接到设备上托管的 GATT 服务器并读取或写入特征,或注册监听器以在这些特征发生更改时收到通知。
您可以实现对任何 GATT 配置文件的支持,还可以读取或写入标准特征,或根据需要添加对自定义特征的支持。您的应用可以充当客户端,也可以充当服务器,并且在两种模式下都可以传输和接收数据。这些 API 是通用的,因此您可以支持与各种设备(例如,Proximity Tag、手表、健身计量器、游戏控制器、遥控器以及健康设备等)的交互。
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。除了在通过蓝牙连接的远程设备上提供播放控件之外,现在应用还可以传输元数据,例如曲目名称、作曲家和其他类型的媒体元数据。
Google 推出的 Bluedroid Bluetooth 堆栈和 Android 4.2 中的 Broadcom 均内置 AVRCP 1.3 平台支持。Nexus 设备和其他提供 A2DP/AVRCP 功能的 Android 兼容设备即将提供此项支持。
对受限配置文件的支持
Android 4.3 针对设置了受限配置文件(一种管理单台设备上的多位用户及其权能的新方法)的平板电脑扩展了多用户功能。借助受限配置文件,平板电脑所有者可以快速为每位用户设置单独的环境,并能在可于这些环境中运行的应用内管理更精细的限制。受限个人资料非常适合朋友和家人、访客用户、自助服务终端以及销售终端设备等。
每个受限个人资料都提供一个孤立的安全空间,这些空间有自己的本地存储、主屏幕、微件和设置。与用户不同,配置文件是根据平板电脑所有者安装的应用和系统账号从所有者环境创建的。所有者可以控制在新的配置文件中启用哪些已安装的应用,并且对所有者账号的访问权限默认处于停用状态。
需要访问所有者账号的应用(出于登录、偏好设置或其他使用原因)可以通过声明清单属性选择启用该权限,并且所有者可以从配置文件配置设置查看和管理这些应用。
对于开发者,受限配置文件提供了一种新方法来授予用户更多价值和控制力。您可以实现应用限制(您的应用支持的内容或权能控制),并在配置文件配置设置中向平板电脑所有者公布这些限制。
您可以使用预先定义的布尔值、单选和多选类型将应用限制直接添加到配置文件配置设置中。如果您希望获得更大的灵活性,则可以从配置文件配置设置中启动自己的界面,以提供所需的任何类型的限制。
当应用在配置文件中运行时,它可以查看所有者配置的任何限制并相应地强制执行这些限制。例如,媒体应用可能会提供一项限制,让所有者为配置文件设置心智成熟度级别。在运行时,应用可以查看心智成熟度设置,然后根据首选心智成熟度级别管理内容。
如果您的应用不适合在受限配置文件中使用,您可以选择完全退出。这样,应用便不会在任何受限配置文件中启用。
优化的位置和传感器功能
Google Play 服务提供您可以在应用中使用的高级 Location API。Android 4.3 在受支持的设备上优化了这些 API,添加了新的硬件和软件功能,以最大限度地减少电量消耗。
硬件地理围栏针对耗电效率进行了优化,优化方式为在设备硬件而非软件中执行位置计算。在支持硬件地理围栏的设备上,Google Play 服务 Geofence API 将能够利用这项优化在设备移动时节省电量。
WLAN 仅扫描模式是一项新的平台优化,让用户无需连接至 WLAN 网络也可继续进行 WLAN 扫描,从而提高位置信息的准确性并节省电池电量。现在,依赖 WLAN 提供位置信息服务的应用可以让用户通过 WLAN 高级设置启用仅扫描模式。WLAN 仅扫描模式并不依赖于设备硬件,它作为 Android 4.3 平台的一部分提供。
新的传感器类型让应用可以更好地管理传感器读数。通过游戏旋转矢量,游戏开发者可以感知设备的旋转,而无需担心磁场干扰。未校准陀螺仪传感器和未校准磁力计传感器会向应用报告原始测量数据以及估算的偏差。
新的硬件功能已在 Nexus 7(2013 年)和 Nexus 4 设备中提供,任何设备制造商或芯片组供应商都可以将其构建到自己的设备中。
新的媒体功能
模块化数字版权管理框架
为了满足新一代媒体服务的需求,Android 4.3 引入了模块化 DRM 框架,让媒体应用开发者能够更轻松地将 DRM 集成到自己的流式传输协议(例如 MPEG DASH [基于 HTTP 的动态自适应流式传输,ISO/IEC 23009-1])中。
通过将新的 API 与现有 API 的增强功能相结合,媒体数字版权管理框架提供了一套完整的服务,用于管理许可和配置、访问低级别编解码器以及解码加密的媒体数据。借助新的 MediaExtractor API,您可以获取 DASH 媒体的 PSSH 元数据。使用媒体数字版权管理框架的应用可以管理与许可服务器的网络通信,并处理内容库中加密数据的流式传输。
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 定向至编码器,而无需在缓冲区之间进行复制。
媒体复用器
应用可以使用新的 Media Muxer API 将基本音频流和视频流合并到一个输出文件中。目前,应用可以将单个 MPEG-4 音频流和单个 MPEG-4 视频流多路传输至单个 MPEG-4 输出文件中。新的 API 与 Android 4.2 中引入的 Media Demuxing API 相对应。
远程控制客户端中的播放进度和进度调整
从 Android 4.0 开始,媒体播放器和类似应用已经能够通过远程控制客户端(例如设备锁定屏幕、通知和通过蓝牙连接的远程设备)提供播放控件。此外,从 Android 4.3 开始,这些应用现在可以通过其远程控制客户端提供播放进度和速度,还可以接收命令跳转到特定的播放位置。
打造精美应用的新方法
访问通知
通知一直以来都是热门的 Android 功能,因为它们可以让用户在一个位置集中查看来自整个系统的信息和动态。现在,在 Android 4.3 中,应用可以在获得用户许可的情况下查看通知信息流,并以所需的任何方式显示通知,包括将通知发送到通过蓝牙连接的附近设备。
您可以通过新的 API 访问通知,这些 API 可让您注册通知监听器服务,并在获得用户许可的情况下以通知显示在状态栏中的方式接收通知。系统会完整地向您提供通知,连同源应用的所有详细信息、发布时间、内容视图和样式,以及优先级。您可以评估通知中感兴趣的字段,处理上下文或从您的应用中添加上下文,还可以传送通知,使其以您所选的任何方式显示。
通知被添加、更新和移除(由于用户将其关闭,或源应用将其撤回)时,新的 API 会为您提供回调。您将能够启动与通知或其操作相关联的任何 intent,以及从系统中将其关闭,从而使应用能够为通知提供完整的界面。
用户仍对哪些应用可以接收通知拥有控制权。他们可以随时查看“设置”,了解哪些应用具有通知访问权限,并根据需要启用或停用访问权限。通知访问权限默认处于停用状态;应用可以在安装后使用新的 intent 直接将用户转到“设置”,以启用监听器服务。
查看叠加层
现在,您可以在 View 和 ViewGroup 上方创建透明叠加层,以渲染临时视图层次结构或瞬时动画效果,而不会干扰底层布局层次结构。当您需要创建动画(例如,在容器外部滑动视图,或在屏幕上拖动项目)而不影响视图层次结构时,叠加层尤为有用。
光学边界布局模式
通过新的布局模式,您可以根据视图的光学边界(而非剪辑边界)管理 ViewGroup 中 View 的放置。剪辑边界表示微件的实际外边界,而新的光学边界则描述了微件在剪辑边界内看起来所在的位置。您可以使用光学边界布局模式适当地对齐使用外部视觉效果(例如,阴影和发光)的微件。
自定义旋转动画类型
现在,应用可以定义设备旋转时窗口上使用的退出和进入动画类型。您可以设置窗口属性,以启用跳格剪接、交错淡出或标准窗口旋转。当窗口处于全屏模式且未被其他窗口覆盖时,系统可以使用自定义动画类型。
屏幕方向模式
应用可以为 activity 设置新的屏幕方向模式,以确保它们在设备翻转时以正确的方向显示。此外,应用还可以使用新的模式将屏幕锁定到当前方向。这对于使用相机并希望在拍摄视频时停用旋转的应用来说非常有用。
用于处理快速回复的 Intent
Android 4.3 引入了一个新的公共 intent,通过它,任何应用都可以处理快速回复。快速回复是指用户为响应来电而发送的短信(无需接听电话或解锁设备)。您的应用可以监听 intent,并通过消息传送系统将消息发送给来电者。intent 包括接收者(来电者)以及短信本身。
对国际用户的支持
RTL 方面的改进
Android 4.3 提升了 RTL 性能,并提供跨框架界面微件(包括 ProgressBar/Spinner 和 ExpandableListView)的更广泛的 RTL 支持。可通过 uiautomatorviewer
工具查看更多调试信息。此外,现在更多的系统界面组件(例如通知、导航栏和操作栏)可以感知 RTL 语言。
为了用 RTL 脚本提供更出色的系统级体验,现在有更多默认系统应用支持 RTL 布局,包括启动器、快速设置、电话、联系人、设置向导、时钟、下载等。
用于本地化的实用工具
Android 4.3 还包括用于创建更好的 RTL 字符串和测试您的本地化界面的新实用工具和 API。新的 BidiFormatter 类提供一个用于封装 Unicode 字符串的简单 API,以便 RTL 脚本数据在 LTR 语言区域消息中按预期显示,反之亦然。为了便于您在应用中更广泛地运用此实用工具,BidiFormatter API 现在还通过 Android SDK 中的支持套餐面向早期平台版本提供。
为帮助您跨语言区域管理日期格式,Android 4.3 提供一个新的 getBestDateTimePattern() 方法,该方法可针对您指定的语言区域生成尽可能贴切的本地化 Unicode UTS 日期形式。这是为用户提供更出色的本地化体验的便捷方式。
为了帮助您更轻松地用其他语言区域测试应用,Android 4.3 还引入了伪语言区域这一新的开发者选项。伪语言区域会模拟与语言区域或语言组相关联的语言、脚本和显示特征。目前,您可以使用带口音的英语的伪语言区域进行测试,以便了解您的界面对于脚本口音和各种欧洲语言中使用的字符的支持情况。
无障碍服务和界面自动化
从 Android 4.3 开始,无障碍服务可以观察和过滤按键事件(例如),以处理键盘快捷键或提供等同于手势输入的导航功能。该服务会接收事件,并可以在事件传递到系统或其他已安装应用之前根据需要对其进行处理。
无障碍服务可以声明新的 capability 属性,以描述服务可以执行的操作以及所使用的平台功能。例如,无障碍服务可以声明功能来过滤按键事件、检索窗口内容、启用轻触浏览或启用网络无障碍功能。在某些情况下,服务必须先声明功能属性,然后才能访问相关平台功能。系统会使用服务的功能属性为用户生成选择启用对话框,以便他们能够在启动功能之前查看并同意使用功能。
新的界面自动化框架以 Android 4.3 中的无障碍框架为基础,通过它,测试可以通过模拟用户操作和内省屏幕内容,与设备界面进行交互。通过界面自动化框架,您可以执行基本操作、设置屏幕旋转、生成输入事件、截取屏幕截图等等。这是一种在现实用户场景(包括跨多个应用的操作或序列)中自动执行测试的有效方法。
企业和安全
适用于 WPA2-Enterprise 网络的 WLAN 配置
应用现在可以配置连接到 WPA2 Enterprise 接入点所需的 Wi-Fi 凭据。开发者可以使用新的 API 为企业使用的身份验证方法配置可扩展的身份验证协议 (EAP) 和封装的 EAP(第 2 阶段)凭据。具有 WLAN 访问和更改权限的应用可以为各种 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 攻击面,并降低出现潜在安全漏洞的可能性。
分析性能的新方法
增强型 Systrace 日志记录
Android 4.3 支持增强版 Systrace 工具,该工具更易于使用,并且可让您访问更多类型的信息以分析应用性能。您现在可以从硬件模块、内核函数、Dalvik 虚拟机(包括垃圾回收、资源加载等)中收集跟踪数据。
此外,Android 4.3 还提供新的 Trace API,您可以在应用中使用这些 API 来标记特定代码段,以使用 Systrace 开始/结束事件进行跟踪。当标记的代码段执行时,系统会将开始/结束事件写入跟踪日志中。这对应用性能的影响微乎其微,因此您可以通过报告的计时准确了解您的应用正在执行的操作。
您可以在 Systrace 输出文件中以时间轴的形式直观地展示特定于应用的事件,并在其他内核和用户空间跟踪数据环境中分析事件。自定义应用部分结合现有的 Systrace 标记,可为您提供了解应用性能和行为的新方法。
屏幕上的 GPU 分析
Android 4.3 添加了新的开发者选项,可帮助您在任何设备或模拟器上分析应用性能和查明渲染问题。
现在,借助 GPU 渲染模式分析选项,可以在屏幕上直观地展示应用在运行时的有效帧速率。您可以选择在屏幕上以柱状图或折线图的形式显示分析数据,并用颜色指示创建绘制命令(蓝色)、发出命令(橙色)以及等待命令完成(黄色)所用的时间。系统会不断更新屏幕上的图表,从而为每个可见 activity(包括导航栏和通知栏)显示图表。
绿线指示渲染操作的 16 毫秒阈值,以便您可以相对于 60 fps 这一目标评估应用的有效帧速率(因为 1/60 秒约等于 16 毫秒)。如果您看到有操作超出了绿线,可以使用 Systrace 和其他工具对操作进行进一步分析。
在搭载 Android 4.2 及更高版本的设备上,开发者选项默认处于隐藏状态。您可以随时显示这些选项,方法是:在任何兼容的 Android 设备上点按 7 次设置 > 关于手机 > 版本号。
针对文件 URI 的 StrictMode 警告
StrictMode 工具最新添加的内容是一项政策限制,它会在应用向系统或其他应用提供 file://
URI 时发出警告。在某些情况下,接收应用可能无法访问 file://
URI 路径,因此,在应用之间共享文件时,应使用 content://
URI(具有相应权限)。该新政策可帮助您发现和纠正此类情况。如果您正在寻找一种便捷的方法来存储文件以及向其他应用提供文件,不妨尝试使用支持库中提供的 FileProvider
内容提供程序。
Android 4.2
欢迎使用 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 卡存储。此外,用户还拥有自己的主屏幕、微件、账号、设置、文件和应用,系统会将这些内容与其他用户的项目隔离开来。所有用户共用核心系统服务,但系统可以确保每位用户的应用和数据都保持隔离状态。实际上,多位用户中的每一位都拥有自己的 Android 设备。
用户可以随时在自己的环境中安装和卸载应用。为了节省存储空间,只有在设备上的其他用户尚未安装某应用时,Google Play 才会下载其 APK。如果相应应用已安装,则 Google Play 会以常规方式记录新用户的安装行为,但不会下载该应用的又一个副本。多位用户可以运行一个 APK 的同一副本,因为系统会为每位用户创建新的实例(包括特定于用户的数据目录)。
对于开发者来说,多用户支持是透明的 - 您的应用无需执行任何特殊操作即可在多用户环境中正常运行,并且您也不需要对现有或已发布的 APK 进行任何更改。系统会在每个用户空间中管理您的应用,就像在单用户环境中一样。
吸引用户的新方式
锁屏微件
在 Android 4.2 中,用户可以直接将应用微件放在锁定屏幕上,以便即时访问喜爱的应用内容,而无需解锁。用户最多可以添加 5 个锁定屏幕微件,从已安装的应用提供的微件中选择即可。锁定屏幕会将每个微件显示在其自己的面板中,从而允许用户向左和向右滑动来查看不同的面板及其微件。
与所有应用微件一样,锁定屏幕微件可以显示任何类型的内容,并且可以接受直接的用户互动。它们可以是完全独立的(例如提供音乐播放控件的微件),也可以让用户在根据需要解锁后直接跳转到您应用中的 activity。
对于开发者来说,锁定屏幕微件提供了一种吸引用户的崭新方式。它们可以让您在用户经常会看到的位置向其显示您的内容,并为您提供了更多直接将用户转到您的应用的机会。
您可以通过构建新的应用微件或扩展现有的主屏幕微件来利用这项新功能。如果您的应用已有主屏幕微件,则您可以做出少许更改,将其扩展到锁定屏幕。为了给用户提供最佳体验,您可以更新微件,以在较小的屏幕上使用全部锁定屏幕区域(如果可用),并根据需要调整大小。此外,您还可以向微件添加一些在锁定屏幕上尤为有用或者方便的功能。
Daydream
Daydream 是一种互动式屏保模式,它会在用户的设备插入基座或充电时启动。在该模式下,系统会启动 Daydream(一项由已安装的应用提供的远程内容服务)作为设备屏保。用户可以从“设置”应用中启用 Daydream,然后选择要显示的 Daydream。
Daydream 兼具动态壁纸和主屏幕微件的最佳功能,但更加强大。借助它们,您可以在全新的环境中通过用户互动(例如翻阅照片、播放音频或视频或者轻触一下直接跳转到您的应用中)提供任何类型的内容。
由于 Daydream 可以在设备充电或插入基座时自动启动,因此也为您的应用提供了支持新型用户体验的绝佳方式,例如 Leanback 或展览模式、演示或自助服务终端模式和观赏模式,所有这些均无需特殊硬件。
Daydream 与 activity 类似,具有 activity 的所有功能,例如渲染界面层次结构(无需使用 RemoteViews),以及使用 Canvas、OpenGL、SurfaceTexture 等直接进行绘制。它们可以播放视频和音频,甚至可以接受直接的用户互动。但是,Daydream 并不是 activity,因此它们不会影响返回堆栈或出现在“最近用过”中,并且也无法直接从您的应用中启动。
实现 Daydream 非常简单,并且您可以利用已经为应用的其他部分创建的界面组件和资源。您可以在应用中提供多个 Daydream,并为每个 Daydream 提供不同的内容和显示设置。
外部显示屏支持
Android 4.2 引入了对外部显示屏的平台支持,这种支持远远超越了镜像。应用现在可以将独特的内容定位到与 Android 设备相连接的任何一个或多个显示屏。应用可以在此基础上为用户提供新型的互动和娱乐体验。
显示屏管理器
应用可以通过新的显示屏管理器系统服务与显示器进行交互。您的应用可以列举显示屏并查看每个显示屏的功能,包括尺寸、密度、显示名称、ID、安全视频支持等。此外,您的应用还可以在显示屏添加或移除时或显示屏的功能发生更改时收到回调,以便更好地管理外部显示屏上的内容。
演示文稿窗口
为了便于在外部显示屏上显示内容,该框架提供了一个称为演示文稿的新界面对象,它是一种类型的对话框,表示您的应用内容在特定外部显示屏上的窗口。您的应用只需给出要使用的显示屏、窗口主题以及要显示的任何独特内容。演示文稿会根据目标显示屏的特性处理放大的资源并渲染您的内容。
借助演示文稿,您的应用可以完全控制远程显示屏窗口及其内容,且您可以基于用户输入事件(例如,按键、手势和动作事件等)对其进行管理。您可以使用所有常规工具在演示文稿中创建界面并渲染内容,例如构建任意视图层次结构、使用 SurfaceView 或 SurfaceTexture 直接绘制到流媒体内容或相机预览的窗口。
首选显示屏选择
当有多个外部显示屏可用时,您可以根据需要创建任意数量的演示文稿,其中每个演示文稿都会在特定显示屏上显示独特的内容。在许多情况下,您可能只需要在一个外部显示屏上显示您的内容;但始终在最适合演示文稿内容的外部显示屏上显示。为此,系统可以帮助您的应用选择要使用的最佳显示屏。
如需查找要使用的最佳显示屏,您的应用可以向显示屏管理器查询系统的首选演示文稿显示屏,并在该显示屏发生更改时收到回调。或者,您也可以使用在 Android 4.2 中进行了扩展的媒体路由器服务,以便在系统视频路由发生更改时收到通知。您的应用默认可以在主 activity 中显示内容,直到连接首选演示文稿显示屏,这时相应内容可以在首选显示屏上自动切换为演示文稿内容。此外,您的应用还可以使用媒体路由器的 MediaRouteActionProvider 和 MediaRouteButton 提供标准的显示屏选择界面。
受保护的内容
对于会处理受保护内容或加密内容的应用来说,Display API 现在会报告连接的显示屏的安全视频功能。您的应用会查询显示屏,以了解它是否提供安全的视频输出或是否提供受保护的图形缓冲区,然后选择适当的内容流,或解码以使内容可查看。如需针对 SurfaceView 对象提供额外的安全性,您的应用可以设置一个安全标记,指示即使是在镜像时,相应内容也绝不应显示在屏幕截图或不安全的显示屏输出中。
无线显示
从 Android 4.2 开始,使用受支持设备的用户可以通过 WLAN 连接到外部显示屏,从而使用 WLAN 显示屏(一个符合 Miracast™ 认证计划要求的点对点无线显示屏解决方案)。连接无线显示屏后,用户可以将任何类型的内容(包括照片、游戏、地图等)流式传输到大屏幕上。
应用可以像利用其它外部显示屏一样利用无线显示屏,无需进行任何额外操作。系统会管理网络连接,并根据需要将您的演示文稿或其他应用内容流式传输到无线显示屏中。
原生 RTL 支持
Android 4.2 引入了对 RTL(从右向左)布局的完整原生支持,包括布局镜像。借助原生 RTL 支持,您可以向所有用户提供同样出色的应用体验,无论他们的语言使用的是从右向左还是从左向右查看的脚本。
当用户将系统语言切换为从右向左的脚本时,除了针对查看和字符输入提供文字元素的双向镜像之外,系统现在还会提供应用界面布局和所有视图微件的自动镜像。
您的应用可以轻松利用 RTL 布局镜像。如果您希望对应用进行镜像,只需在应用清单文件中声明一个新属性,并将所有“左/右”布局属性更改为新的“开始/结束”等效属性。然后,系统会视情况处理界面的镜像和显示。
为让您可以精确控制应用界面,Android 4.2 提供了新的 API,借助这些 API,您可以在“视图”组件中管理布局方向、文字方向、文字对齐方式、重力和语言区域方向。当使用从右向左的脚本时,您甚至可以创建自定义版本的布局、可绘制资源和其他资源以供显示。
为帮助您调试和优化自定义的从右向左布局,HierarchyViewer 工具现在可让您查看层次结构中所有“视图”的开始/结束属性、布局方向、文字方向和文字对齐方式。
针对国际语言的增强功能
Android 4.2 包含各种针对国际用户的字体和字符优化:
- 面向韩国用户推出了一种新的字体选择 - Nanum (나눔글꼴) Gothic,它是一种专为韩语脚本设计的 Unicode 字体。
- 改进了对 WebView 中显示的日语竖排文本的支持。
- 针对印度语、泰语、阿拉伯语和希伯来语默认字体改进了字体字距调整和位置功能。
默认 Android 键盘还提供一系列经过更新的字典:
- 改进了法语(包含二元语法支持)、英语和俄语字典
- 新增了以下语言的字典:丹麦语、希腊语、芬兰语、立陶宛语、拉脱维亚语、波兰语、斯洛文尼亚语、塞尔维亚语、瑞典语和土耳其语
创建精美界面的新方法
嵌套 Fragment
为了让您更好地控制界面组件,以及让界面组件更加模块化,Android 4.2 允许您在 Fragment 中嵌套 Fragment。对于任何 fragment,新的 fragment 管理器可让您在“视图”层次结构中将其他 fragment 作为子节点插入。
您可以通过多种方式使用嵌套 fragment,但对于在本身为动态且可重用的界面组件中实现动态且可重用的界面组件,它们尤为有用。例如,如果您使用 ViewPager 创建会向左和向右滑动的 fragment,则现在可以将这些 fragment 插入到 ViewPager 的每个 fragment 中。
为了便于您在应用中更广泛地利用嵌套 Fragment,我们将该功能添加到了最新版本的 Android 支持库中。
无障碍
现在,在轻触浏览模式下,系统可以帮助无障碍服务区分轻触浏览和无障碍手势。当用户轻触屏幕时,系统会通知服务常规轻触互动已启动。然后,系统会跟踪轻触互动的速度并确定轻触互动是轻触浏览(速度慢)还是无障碍手势(速度快),并通知服务。当轻触互动结束时,系统会通知服务。
系统提供一个新的全局无障碍选项,该选项可让无障碍服务基于用户执行的操作打开“快捷设置”菜单。此外,Android 4.2 中还新增了一种适用于盲文设备的无障碍反馈类型。
为了使无障碍服务可以出于无障碍目的深入了解视图的意义,该框架提供了新的 API 来将一个视图关联为另一个视图的标签。无障碍服务可以通过 AccessibilityNodeInfo 使用每个视图的标签。
改进的相机与 HDR
Android 4.2 引入了新的相机硬件接口和管道,以提高性能。在受支持的设备上,应用可以使用新的 HDR 相机取景模式利用高动态范围成像技术拍摄图片。
此外,该框架现在提供一个 API,可让应用检查是否可以停用相机快门提示音。然后,应用可以让用户停用提示音,或选择一种备选提示音来代替标准的快门提示音(推荐)。
Renderscript 计算
在 Android 4.2 中,Renderscript 计算引入了新的脚本功能、新的优化和直接的 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 便能够以在单独执行各个脚本时无法使用的方式优化脚本的执行。
Renderscript 图片处理基准,仅在搭载不同 Android 平台版本(Android 4.0、4.1 和 4.2)的 Galaxy Nexus 设备的 CPU 中运行。
Renderscript 图片处理基准,将在同一 Nexus 10 设备的 GPU 和 CPU 中运行的操作与仅在其 CPU 中运行的操作进行比较。
如果您有要运行的 Renderscript 操作的有向无环图,则可以使用 Builder 类创建定义操作的脚本组。在执行时,Renderscript 会优化运行顺序以及这些操作之间的关联,以实现最佳性能。
持续的优化改进
在将 Renderscript 用于计算操作时,您的应用会受益于 Renderscript 引擎本身持续的性能和优化改进,而不会对应用代码产生任何影响,也无需进行重新编译。
随着优化的改进,您的操作将能够在更多的芯片组上更快地执行,而您自己无需执行任何操作。右侧的图表突出显示了 Android 平台后续版本中持续的 Renderscript 优化改进所实现的性能提高。
GPU 计算
Renderscript 计算是首个经过移植可以直接在移动设备 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 - 在 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 引入了对基于 NCI 标准(由 NFC-Forum 提供)的控制器的支持。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
欢迎使用 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 或更高版本)中提供
增强型无障碍服务
借助适用于无障碍服务的新 API,您可以在用户使用无障碍手势、配件和其他输入在屏幕元素和导航按钮之间移动时,处理手势和管理无障碍服务焦点。Talkback 系统和轻触浏览经过重新设计,使得无障碍服务焦点更易于使用,并为开发者提供了一套完整的 API。
无障碍服务可以将自己的教程链接到无障碍服务设置,以帮助用户配置和使用他们的服务。
使用标准“视图”组件的应用会自动继承对新的无障碍功能的支持,无需对代码进行任何更改。使用自定义“视图”的应用可以使用新的无障碍功能节点 API 指明对无障碍服务感兴趣的“视图”部分。
对国际用户的支持
双向文本和其他语言支持
Android 4.1 通过在 TextView 和 EditText 元素中支持双向文本来帮助您覆盖更多用户。应用可以用从左向右或从右向左的脚本显示文本或处理文本编辑。应用可以使用新的阿拉伯语和希伯来语语言区域和相关的字体。
其他类型的新语言支持包括:
- 其他印度语言:卡纳达语、泰卢固语和马拉雅拉姆语
- Unicode 6.0 版中添加了新的表情符号字符
- 为日语用户提供更好的字形支持(当系统语言设置为日语时,呈现日语专用版字形)
- 除了提供适用于 TextView 的阿拉伯语字形之外,还针对 WebView 优化了阿拉伯语字形
- 在 WebView 中提供竖排文本支持,包括 Ruby 文本和其他竖排文本字形
- 合成粗体现在适用于所有没有专用粗体字形的字体
用户可安装的按键映射
平台现在支持用户可安装的键盘映射,例如针对其他国际键盘和特殊的布局类型。默认情况下,Android 4.1 包含 27 个键盘(包括 Dvorak)的国际按键映射。当用户连接某个键盘时,他们可以转到“设置”应用,选择一个或多个他们希望用于该键盘的按键映射。在输入时,用户可以使用快捷键(ctrl-空格键)在按键映射之间切换。
您可以创建一个应用,以将其他按键映射发布到系统中。相应 APK 会基于标准 Android 按键映射格式,在其中包含键盘布局资源。应用可以通过在其清单中为 ACTION_QUERY_KEYBOARD_LAYOUTS 声明合适的广播接收器,为用户提供其他键盘布局。
创建精美界面的新方法
可展开的通知
通知一直以来都是 Android 上的一项独特且热门的功能。开发者可以使用通知,在应用常规界面之外的通知栏中向用户显示重要或基于时间的信息。
Android 4.1 为 Android 通知框架带来了一项重大更新。现在,应用可以向用户显示更大、更丰富的通知,且这些通知能够通过双指张合或滑动展开和收起。通知支持新的内容类型(包括照片),拥有可配置的优先级,甚至可以包含多种操作。
通过经过改进的通知构建工具,应用可以创建占用更大区域(高度最高可达 256 dp)的通知。以下是三种可用的模板化通知样式:
- BigTextStyle - 一种包含多行 TextView 对象的通知。
- BigInboxStyle - 一种显示任何类型的列表(例如消息、标题等)的通知。
- BigPictureStyle - 一种显示图像内容(例如位图)的通知。
除了模板化样式之外,您还可以使用任何远程视图创建自己的通知样式。
应用可以向通知添加多达三种操作,这些操作显示在通知内容的下方。通过这些操作,用户能够以多种方式(例如,通过电子邮件或电话)直接响应通知中的信息,而无需访问应用。
借助展开式通知,应用可以轻松地按需向用户提供更多信息。用户仍拥有控制权,并可以通过长按任何通知来获取关于发送者的信息,还可以选择今后不再收到应用发送的通知。
可调整大小的应用微件
Android 4.1 引入了经过改进的应用微件,这些微件可以根据用户将其拖动到主屏幕上的位置、用户将其扩展到的大小以及主屏幕上的可用空间自动调整大小。新的 App Widget API 让您可以利用这一点在应用微件的大小发生变化时优化微件的内容。
当微件大小发生变化时,系统会通知托管应用的微件提供商,而微件提供商可以根据需要重新加载微件中的内容。例如,微件可以显示更大、更丰富的图形或者其他功能或选项。开发者仍然可以控制微件的最大和最小尺寸,并可以视需要更新其他微件选项。
此外,您还可以为微件提供单独的横向和纵向布局,系统会在屏幕方向发生变化时适当地对其进行扩充。
应用微件现在可以通过新的绑定 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 引入了对 WLAN 点对点 (P2P) 的支持,这项技术可以让应用通过高带宽点对点连接(符合 WLAN 联盟的 Wi-Fi 直连™ 认证计划要求)发现服务并直接配对。WLAN 点对点是分享媒体、照片、文件和其他类型的数据和会话的理想方式,即使是在没有移动网络或 WLAN 可用的情况下,也是如此。
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 服务开发者页面。