1.4 Android5新特性介绍
Android 5.0 Lollipop是迄今为止规模最大的Android版本。该版本为用户推出了各种崭新的功能,为开发者提供了数千个新的API。不仅如此,它还将Android扩展得更广,小到手机、平板电脑和穿戴式设备,大到电视和汽车。
本部分主要介绍Android Lollipop新增的几个特性。
1.4.1 全新的Material design设计
Android 5.0将Material design设计引入Android系统,它自带一个扩展的界面工具包,可以让开发者轻松地将新的设计图案集成到自己的应用中。在新的3D视图中,设置z轴可以让元素从视图层面上“站”起来,甚至可以随着元素的移动投下实时阴影。
1. 内置的Activity Transitions API
内置的Activity Transitions API可以通过优美的动画天衣无缝地让用户从一种状态切换到另一种状态。素材主题为活动提供了各种过渡方式,包括在各个活动中使用共享的可视化元素功能。
要重播影片,可以单击设备屏幕;可以对按钮、复选框以及应用中的其他触摸控件加上涟漪动画;可以在XML文件中定义可动的矢量图,让它们展现出各种不同的动画效果(矢量图在自由缩放的同时不会失真,非常适合用作应用中的纯色图标)。
2. RenderThread
RenderThread是新推出的由系统管理的渲染线程,即使主界面线程出现延迟,它也能保持动画运行流畅。
1.4.2 支持64位ART虚拟机
Android 5.0为用户带来更快、更流畅、更强大的计算体验。
Android现在完全运行在全新构建的ART运行时上,支持混合使用预先编译(AOT)、即时编译(JIT)和编译好的代码。它可以在ARM、x86和MIPS架构上正常运行,并完全兼容64位。
ART改进了应用性能和响应能力。它采用高效的垃圾回收方式,减少了垃圾回收事件的次数和暂停时间,贴合搭配垂直同步窗口,因此应用不会出现掉帧现象。ART还会动态移动内存,针对前台使用情况优化内存。
Android 5.0引入了对64位架构(已应用于Nexus 9的NVIDIA Tegra K1)的平台支持,经过优化后提供更大的寻址空间,提升了针对特定的计算工作负载的性能。以Java编写的应用可自动作为64位应用运行,不需要任何修改。如果应用使用原生代码,也不用担心,Android 5.0扩展了NDK,可支持适用于ARM v8、x86-64和MIPS-64的新ABI。
Android一如既往注重实现更流畅的性能,并在5.0中改进了声音/视频同步方式。音频和图形管道都经过调校,时间戳更为精准,因此视频应用和游戏都能显示流畅的同步内容。
1.4.3 全新的通知设计
在Android 5.0中,用户可以更加方便地查看、使用和配置通知。
用户可以根据需要,在锁屏上显示不同的详细信息的通知,例如,他们可以选择在安全锁屏上完全不显示通知,也可以选择显示部分或全部通知。
像来电这样的重要通知警报会显示在浮动通知中,如图1.2所示。这是一个浮在上方显示的小窗口,方便用户不用退出当前应用就能响应或关闭通知。
图1.2 浮动通知
开发者现在可以在通知中通过新的元数据来收集相关的联系人(用于评级)、类别和优先级。
内置新的媒体通知模板可以设置多达6个控制按钮(包括“thumbs up”之类的自定义控件),以通知方式实现一致的媒体控制,再也不需要用RemoteViews了!
1.4.4 以大屏幕呈现
Android TV打造了一个完整的电视平台,让开发者的应用在大屏幕上运行。它以简洁的主屏幕体验为核心,提供个性化推荐和语音搜索功能,方便客户轻松查找内容。如图1.3所示。
图1.3 大屏幕呈现多个应用
有了Android TV,可以为应用或游戏内容提供更大的发挥空间,并支持与游戏控制器和其他输入设备互动。Android还在v17支持库中提供了Leanback界面框架,帮助开发者构建在25.4厘米处观看的电视界面,给用户一种全新的视觉效果。
Android TV输入框架(TIF)能够让电视应用处理来自HDMI输入、电视调谐器和IPTV接收器等等的视频流。它还通过TV输入框架发布的元数据支持直播电视搜索和推荐功能,并且内置HDMI-CEC控制服务,可以让用户通过单独一个遥控器操控多个设备。
TV输入框架能够让开发者广泛使用大量直播电视输入来源,并将它们汇总在同一个界面中供用户浏览、查看和欣赏内容。如果开发者为内容构建电视输入服务,用户就能更便利地在电视设备上观看这些内容。
1.4.5 以文档为中心
Android 5.0引入了重新设计的“概述”空间Overview space(以前称为“最近事项” Recents),以便更多样化和多任务地处理。
新的API让应用中的活动化身成为独立的文档,与其他最近活动的屏幕并排显示,这样可以充分利用并行文档,让用户及时访问更多内容或服务。例如,可以使用并行文档展现高效的应用文件、游戏中的玩家比赛,或者聊天应用中的即时消息。
1.4.6 改进连接性能
Android 5.0新开发的API可以让应用与低功耗蓝牙(BLE)的扫描內围模式和广告(外围模式)实现并行操作。
新的多网特性允许App查询网络状态的可用性,例如,Wi-Fi网络、蜂窝网络、计量或提供某些网络特性。然后,应用可以请求联网,并在连接断开或出现其他的网络变动时作出响应。
近场通信(NFC)API现在允许应用动态注册NFC应用ID(AID),还可以根据活动状态下的服务设置首选卡模拟服务,并创建NDEF记录(采用UTF-8文本数据)。
1.4.7 高性能图形
Android 5现已支持Khronos OpenGL ES 3.1,因此开发者可以在受支持的设备上为游戏和其他应用采用最高性能的2D和3D图形功能。
OpenGL ES 3.1增加了计算着色器、模版纹理、加速的视觉效果、优质ETC2/EAC纹理压缩、高级纹理渲染、标准化纹理尺寸以及渲染缓冲区格式等功能。
Gameloft开发的《骑士对决》采用了AEP中的ASTC(自适应可伸缩纹理压缩)和ES 3.1中的计算着色器,不仅打造出HDR(高动态范围)泛光效果,而且图形细节更加清楚。如图1.4所示。
图1.4 高性能图形效果
Android 5.0还引入了Android扩展程序包(AEP),这是一组OpenGL ES扩展程序,可让开发者使用镶嵌图案着色器、几何图形着色器、ASTC纹理压缩、按样本插入和着色以及其他高级渲染功能。有了AEP,开发者就可以通过一系列GPU运用高性能图形。
1.4.8 功能更强的音频处理
Android 5.0采用全新的音频捕捉设计,提供低延迟音频输入功能。在此设计中,快速音频捕捉线程只要不是读取则永远不会阻塞,高速客户端采用本地取样频率、通道数和位深度;普通客户端具备重新采样、上/下行通道混合以及上/下位深度的特点。借助多通道音频流混合,专业音频应用可以混音多达八个通道,包括5.1和7.1通道在内。
应用现在可以公开自己的媒体内容,并浏览其他应用的媒体,然后请求播放。内容通过具有查询功能的界面公开,不需要驻留在设备上。应用可以通过与特定区域设置、质量和延迟评级关联的语音配置文件精准控制从文本到语音的合成。新的API还增强了对合成错误检查、网络合成、语言搜索和网络回退的支持。
Android现在支持标准USB音频外设,因此用户可以连接USB耳机、扬声器、麦克风和其他高性能数字外设。Android 5.0更是支持Opus音频编解码器。
在媒体播放控制领域内新开放的MediaSession API,能够在不同屏幕和不同控制器之间保持一致的媒体控制。
1.4.9 进一步完善的摄像头和视频处理
Android 5.0引入了全新的摄像头API,支持开发者以YUV和Bayer RAW等原始格式拍照,并针对每个独立帧控制曝光时间、ISO感光度和帧持续时间。新的完全同步的摄像头管道允许开发者在受支持的设备上以每秒30帧的速率捕获未压缩的全分辨率YUV图片。除了图片之外,开发者还可以通过摄像头捕获元数据,例如,噪声模型和光学信息。
视频如果是通过网络发送视频流,则现在可以利用H265高效视频编码(HEVC)实现视频数据的最佳编码和解码。
Android 5.0还新支持多媒体隧道,以便针对超高清(4K)内容提供最佳体验,并且能够将压缩的音频和视频数据一起播放。
用户可以通过一致的方式查看其个人应用和工作应用,这些应用带有标记,可以轻松识别。如图1.5所示。
图1.5 带标记的应用
1.4.10 配置文件
为了在企业环境中实现自带设备办公,开发者可以借助全新的托管配置流程在设备上创建安全的工作配置文件。在启动器中,应用如果带有工作标记,则表示该应用及其数据是由IT管理员在工作配置文件内管理的。
针对个人配置文件和工作配置文件的通知都显示在一个统一视图中。每个配置文件的数据始终彼此分开,即使当两个配置文件使用同一应用时也是如此。
对于公司自有的设备,IT管理员可以通过设备所有者着手处理新设备并予以配置。雇主可以针对已安装并可配置全局设备设置的设备所有者应用发放这些设备。
1.4.11 屏幕截图和共享
Android 5.0允许开发者在应用中使用屏幕捕获和屏幕共享功能。
只要拥有用户权限,开发者就可以从显示屏捕获非安全视频,并可以选择通过网络发送。
1.4.12 新型传感器
在Android 5.0中,新的倾斜检测传感器能够帮助改善受支持设备上对活动的识别情况,心率传感器则可报告触摸设备的人员的心率。
新的互动复合传感器现在可用来检测特殊互动,例如“唤醒”手势、“拾取”手势和“扫视”手势。
1.4.13 Chromium WebView
Android 5.0的初始版本包括一个适用于WebView的Chromium版本,该版本基于Chromium M37版本,增加了对WebRTC、WebAudio和WebGL的支持。Chromium浏览器图标如图1.6所示。
图1.6 Chromium浏览器
Chromium M37还包括对所有Web组件规范的原生支持:定制元素、Shadow DOM、HTML导入以及模板。也就是说,开发者可以在WebView中使用Polymer及其Material design设计元素,无需polyfills。
虽然自Android 4.4以来WebView已基于Chromium,但现在可以从Google Play更新Chromium层。
当有新的Chromium版本可用时,用户可以从Google Play进行更新以确保获得针对WebView的最新增强功能和错误修复,以便为在Android 5.0和更高版本上使用WebView的应用提供最新的Web API和错误修复。
1.4.14 辅助功能和输入
Android 5新的辅助功能API可以检索屏幕(普通用户可见并可与之互动)上窗口属性的详细信息,并且可以为界面元素定义标准或定制输入操作。
新的输入法编辑器(IME)API支持从输入法更快地直接切换到其他IME。
1.4.15 可构建低电耗应用
新的作业调度API支持开发者将系统作业推迟到后期或特定情况(例如,设备在充电或已连接到Wi-Fi),从而最大延长电池寿命。
新的dumpsys batterystats命令会生成如图1.7所示的耗电量统计信息,方便开发者了解整个系统的用电情况以及应用对设备电池的影响,开发者可以查看电源事件的历史记录、每个UID和系统组件的大致用电量,等等。
图1.7 耗电量统计信息
Battery Historian是一个新工具,可以将dumpsys batterystats的统计信息转成直观的信息,方便电池进行调试。该工具可以到https://github.com/google/battery-historian下载。