原文出处——>[Android KitKat](https://developer.android.com/about/versions/kitkat.html)
欢迎使用 Android 4.4 KitKat!
Android KitKat 将 Android 所有最具创新、最美妙和最有用的功能推广至全球更多的设备。
本文概述面向开发者的新功能。
访问 www.android.com ,了解更多 KitKat 面向消费者功能的内容。
### **让 Android 适用于所有人**
Android 4.4 设计用于在比以往更多类型的设备(包括全球数百万台低至 512MB RAM 的入门级设备)上快速、平稳和高速响应地运行。
KitKat 简化每个主要组件,减少内存使用率,并引入新的 API 和工具,帮助您开发极具创新、响应快速且内存效率高的应用。
开发下一代 Android 设备的原始设备制造商可以利用有针对性的建议和选项有效运行 Android 4.4 ,即使在小内存设备上亦是如此。Dalvik JIT 代码缓存优化、内核同页合并 (KSM)、zRAM 交换和其他优化有助于管理内存。原始设备制造商可以利用新的配置选项优化进程的内存溢出水平,设置图表缓存大小,控制内存回收等。
对于 Android 本身,系统变更可以改善内存管理和减少内存占用。减少核心系统进程,以减少对堆栈的使用,现在它们更加积极地保护系统内存,防止其被消耗大量 RAM 的应用占用。现在,当多项服务同时启动时,例如当网络连接状态改变时,Android 分小组依次启动服务,避免出现高峰内存需求。
对于开发者, Android 4.4 可帮助交付在所有设备上均能保持高效和响应迅速的应用。新增的 API ActivityManager.isLowRamDevice()让您可以优化应用行为,以便匹配设备的内存配置。您可以在需要时根据您要在入门级设备上支持的用例,修改或禁用占用较大内存的功能。在此处了解有关针对小内存设备优化应用的更多信息。
利用新工具,您还可以深入了解应用内存使用情况。procstats 工具详细列出一段时间内的内存使用率,以及前台应用和后台服务的运行时间及内存占用量。还提供设备上视图,作为新的开发者选项。meminfo 工具得到增强,可以更加容易地发现内存趋势和问题,它还可以显示其他之前不可见的内存开销。
#### **通过主机卡模拟实现新的 NFC 功能**
Android 4.4 为通过主机卡模拟 (HCE) 进行的基于 NFC 的安全交易、支付、忠诚计划、卡存取、过境通行证和其他自定义服务引入新的平台支持。利用 HCE,Android 设备上的任何应用均可以模拟 NFC 智能卡,这让用户可以通过点按触发与他们所选应用的交易 — 无需在设备中配置安全元素。应用也可以使用新的读取器模式作为 HCE 卡和其他基于 NFC 的交易的读取器。
![](https://box.kancloud.cn/e69f881ed36ff2b8fce97617882b2fc9_227x148.png)
Android HCE 模拟基于 ISO/IEC 7816 的智能卡,此卡使用非接触式 ISO/IEC 14443-4 (ISO-DEP) 传输协议。现在,这些卡应用于多种系统,包括现有的 EMVCO NFC 支付基础架构。Android 以 ISO/IEC 7816-4 中定义的应用标识符 (AID) 为基础,将交易路由至相应的 Android 应用。
除了表示可支持类型(例如,“支付”)的类别标识符外,应用还在其清单文件中声明其支持的 AID。当相同类别的多个应用支持同一个 AID 时,Android 会显示一个对话框,让用户选择要使用的应用。
当用户在销售点终端通过点按方式支付时,系统会提取首选的 AID,并将交易路由至相应的应用。应用读取交易数据,并可以使用任何本地或基于网络的服务进行验证,然后完成交易。
Android HCE 要求设备具有 NFC 控制器。目前大多数为 HCE 和 SE 交易提供动态支持的 NFC 控制器均已广泛支持 HCE。 Android 4.4 设备(支持 NFC )具备触碰付款功能,便于使用 HCE 轻松付款。
#### **打印框架**
现在,Android 应用可以通过 WLAN 或云托管服务(例如 Google 云打印)打印任何类型的内容。在支持打印的应用中,用户可以发现可用的打印机,更改纸张尺寸,选择要打印的特定页面,打印几乎任何种类的文档、图像或文件。
Android 4.4 引入了本地平台打印支持,以及用于管理打印和添加新的打印机类型支持的 API。平台提供打印管理器,用于在请求打印的应用和已安装的处理打印请求的打印服务之间进行协调。打印管理器提供共享服务和系统打印 UI,让用户可以通过任何应用不断控制打印。打印管理器还确保内容在从一个应用传递到打印服务等进程中的安全性。
![](https://box.kancloud.cn/1c4f50143751325deaf4073de290583c_475x246.png)
您可以向应用添加打印支持,也可以开发打印服务,以支持特定类型的打印机。
打印机制造商可以使用新的 API 开发自己的打印服务 — 添加供应商特定逻辑和服务以与特定类型的打印机进行通信的可插入组件。他们可以构建打印服务,并通过 Google Play 发布此类服务,以便于用户查找并在自己的设备上安装这些服务。和其他应用一样,您可以随时通过无线方式更新打印服务。
客户端应用可以使用新的 API,在基本不改变代码的情况下,向应用添加打印功能。在大多数情况下,您应向操作栏添加打印操作和用于选择打印项目的 UI。您也可以实现 API,以创建打印作业,在打印管理器中查询打印作业的状态,以及取消作业。它支持打印几乎任何类型的内容,包括本地图像和文档、网络数据或渲染到画布的图像。
为实现最大范围的兼容性,Android 使用 PDF 作为主要的打印文件格式。在打印前,您的应用需要生成适当标注页码的 PDF 版内容。为了方便起见,Printing API 提供本地和 WebView 辅助程序类,以便您使用标准的 Android 绘图 API 创建 PDF。如果您的应用知道如何提取内容,则可快速创建用于打印的 PDF。
大多数运行 Android 4.4 的设备包含预装的 Google 云打印作为打印服务,以及多个支持打印的 Google 应用,包括 Chrome、云端硬盘、图库和 QuickOffice 等。
#### **存储访问框架**
新的存储访问框架让用户能够在其所有首选文档存储提供程序中方便地浏览并打开文档、图像以及其他文件。用户可以通过易用的标准 UI,以统一方式在所有应用和提供程序中浏览文件和访问最近使用的文件。
![](https://box.kancloud.cn/3377a419ba204e2c4221a4784f5b976b_488x461.png)
Box 以及其他应用已将其服务整合到存储访问框架中,让用户可以通过系统中的应用轻松访问文档。
云存储服务或本地存储服务可以通过实现封装其服务的新文档提供程序类参与此生态系统。此提供程序类包含向系统注册提供程序以及管理在提供程序中浏览、读取和写入文档所需的所有 API。此文档提供程序可以让用户访问任何可以文件形式呈现的远程或本地数据 — 包括文本、照片和壁纸以及视频和音频等。
如果您针对云服务或本地服务开发文档提供程序,可以将它作为现有 Android 应用的一部分提供给用户。下载并安装应用后,用户将可以即时通过参与此框架的任何应用访问您的服务。这可以帮助您提升曝光度和用户参与度,因为用户可以更加容易地找到您的服务。
如果您开发用于管理文件或文档的客户端应用,则可集成存储访问框架,方法是只需使用新的 CREATE_DOCUMENT 或 OPEN_DOCUMENT intent 打开或创建文件即可 — 系统自动显示用于浏览文档(包括所有可用的文档提供程序)的标准 UI。
无需任何供应商特定代码,您就可以一次为所有提供程序集成客户端应用。用户在添加或移除提供程序时,可以继续通过您的应用访问首选服务,而无需更改或更新您的代码。
存储访问框架与现有的 GET_CONTENT intent 集成,这样用户还可以通过新的系统浏览 UI 访问他们之前的所有内容和数据源。应用可以继续通过 GET_CONTENT 让用户可以导入数据。存储访问框架和系统浏览 UI 使用户可以更加轻松地查找和导入更多来源的数据。
大多数运行 Android 4.4 的设备将包含预集成为文档提供程序的 Google Drive 和本地存储,并且各种处理文件的 Google 应用也使用这种新框架。
#### **低功耗传感器**
**传感器批处理**
Android 4.4 针对硬件传感器批处理引入平台支持,这是一项新的优化功能,可以显著降低传感器持续活动所消耗的电量。
借助传感器批处理功能,Android 与设备硬件配合,分批有效地收集和传递传感器事件,而不是在检测到这些事件时单独收集和传递。这样,在传递批处理事件之前,设备的应用处理器可一直保持低功耗空闲状态。您可以使用标准事件侦听器向任何传感器请求批处理事件,还可以控制接收批处理事件的时间间隔。您还可以请求立即传递批处理周期之间的事件。
传感器批处理适用于低功耗、长时间运行的用例,例如健身、位置跟踪、监控等。它能使您的应用更加高效,让您可以持续跟踪传感器事件 — 即使在屏幕关闭和系统处于睡眠状态。
传感器批处理功能目前在 Nexus 5 上可用,我们正在与芯片组合作伙伴合作,以尽快将其推广至更多的设备。
**步测器和计步器**
Android 4.4 还增加对了两种新的复合传感器 — 步测器和计步器 — 的平台支持,它们让您的应用可以在用户行走、跑步或攀爬楼梯时跟踪步数。这些新的传感器在硬件中实现,以降低耗电量。
步测器分析加速度计输入,识别用户何时迈出步子,然后每一步会触发一个事件。计步器跟踪设备上一次重新启动以来的总步数,步数的每次变化会触发一个事件。由于平台和基础硬件内置逻辑和传感器管理,因此您无需在应用中保留自己的检测算法。
步测器和计步器传感器目前在 Nexus 5 上可用,我们正在与芯片组合作伙伴合作,以尽快将其推广至新设备。
![](https://box.kancloud.cn/c3a2557712f723df6476f7e30d2e6176_495x468.png)
Moves 和 Runtastic Pedometer 正使用硬件步速检测器提供长时间运行的低功耗服务。
#### **短信提供程序**
如果您开发使用短信或彩信的消息传递应用,现在您可以使用共享短信提供程序和新的 API 管理您的应用的消息存储和检索。新的短信提供程序和 API 定义了一个适用于所有短信或彩信处理应用的标准交互模式。
除了新的提供程序和 API 外, Android 4.4 还引入新的语义来接收消息和写入提供程序。接收到消息后,系统使用新的 SMS_DELIVER intent 直接将它路由到用户的默认消息传递应用。其他应用仍然可以使用 SMS_RECEIVED intent 侦听传入的消息。此外,系统现在还允许默认应用将消息数据写入提供程序,但其他应用可以随时读取这些数据。不是用户默认应用的应用仍然可以发送消息 - 系统为应用处理将这些消息写入提供程序的工作,以便用户可以在默认应用中看到消息。
新的提供程序和语义有助于提升安装多个消息传递应用时的用户体验,它们可以帮助您使用完全支持、向前兼容的 API 构建新的消息传递功能。
### **开发漂亮应用的新方式**
#### **全屏沉浸模式**
现在,您的应用可以利用设备屏幕上的每一个像素显示内容和捕获触摸事件。 Android 4.4 添加了新的全屏沉浸模式,让您可以在手机和平板电脑上创建从一个边缘延伸到另一个边缘的全出血 UI,隐藏所有系统 UI,例如状态栏和导航栏。它适用于鲜艳的视觉内容,例如照片、视频、地图、书本和游戏。
在新模式中,系统 UI 保持隐藏状态,即使在用户与您的应用或游戏交互时 - 您可以从屏幕上的任何位置(甚至在系统栏占据的其他位置)捕获触摸事件。这是您在应用或游戏中创建更大、更加丰富和更加沉浸式的 UI 并减少视觉分散的绝佳方式。
为确保用户在全屏沉浸模式中始终能轻松、一致地访问系统 UI, Android 4.4 支持新的手势。现在,在沉浸模式中,从屏幕顶部或底部边缘滑动手指可以显示系统 UI。
要返回沉浸模式,用户可以触摸栏界限之外的屏幕或等待一小段时间,让栏自动隐藏。为提供一致的用户体验,新的手势还与之前隐藏状态栏的方法配合使用。
![](https://box.kancloud.cn/71db7b0598e7e76cc54287a774f9286c_240x466.png)
新的沉浸模式让应用可以利用屏幕上的每一个像素显示内容和捕获触摸事件。
#### **用于动画场景的转场框架**
大多数应用围绕几个显示不同操作的关键 UI 状态构建流程。许多应用还利用动画,通过这些状态和每种状态下可用的操作,帮助用户了解其进程。为简化在您的应用中创建高质量动画的过程, Android 4.4 引入新的转场框架。
利用此转场框架,您可以定义场景、典型视图层次和转场,它们描述如何在用户进入或退出场景时制作场景动画或转换场景。您可以使用多种预定义的转场类型,根据特定属性(例如布局界限或可见性)制作场景动画。还有一种自动转场类型,可以在场景切换时自动淡出淡入、移动视图和调整视图大小。此外,您可以定义自定义转场,为对您的应用最为重要的属性制作动画,而且您可以在必要时插入您自己的动画样式。
利用转场框架,您还可以针对 UI 变更动态制作动画,而无需定义场景。例如,您可以对视图层次进行一系列更改,然后让 TransitionManager 对这些更改自动运行延迟转场。
设置转场后,即可直接从您的应用调用转场。例如,您可以调用一种方法开始转场,在视图层次中进行各种更改,在下一帧中动画将自动开始,以动画形式呈现您指定的更改。
要自定义控制在您的应用流中特定场景之间运行的转场,您可以使用 TransitionManager。利用 TransitionManager,您可以定义场景和为特定场景更改运行的转场之间的关系。
**透明系统 UI 样式**
要使内容发挥最大作用,您现在可以使用新的窗口样式和主题请求透明系统 UI,包括状态栏和导航栏。为确保导航栏按钮或状态栏信息清晰可辨,在系统状态栏后面显示微妙的渐变效果。典型用例是需要显示出壁纸的应用。
![透明系统 UI](https://box.kancloud.cn/9bd14784ab63195b121c642ac49f0926_349x221.png)
应用可以使用新的窗口样式请求透明系统状态栏。
**增强的通知访问功能**
通知侦听器服务现在可以查看通过通知生成器 API 创建的传入通知的更多信息。侦听器服务可以访问通知操作以及新的额外的字段(文本、图标、图片、进程、精密计时器等其他多种字段),提取有关通知的更加简练的信息,并以不同的方式显示信息。
#### **Chromium WebView**
Android 4.4 包含基于 Chromium 的 WebView 的全新实现。新的 Chromium WebView 为创建和显示基于 Web 的内容提供最新的标准支持、性能和兼容性。
Chromium WebView 为 HTML5、CSS3 和 JavaScript 提供广泛支持。它支持 Chrome(Android 版)30 中提供的大部分 HTML5 功能。它还采用更新版本的 JavaScript引擎 (V8),显著提升 JavaScript 性能。
此外,新的 Chromium WebView 支持使用 Chrome DevTools 进行远程调试。例如,您可以在开发机器上使用 Chrome DevTools 检测、调试和分析移动设备中存储的 WebView 内容。
![](https://box.kancloud.cn/dbda1ac59188976c75f3722db95f4bf3_147x149.png)
所有运行 Android 4.4 及更高版本的兼容设备中均配备新的 Chromium WebView。您可以立即使用新的 WebView,现有应用和内容基本没有改动。在大多数情况下,您的内容将无缝迁移到新的实现。
### **新的媒体功能**
#### **屏幕录制**
现在,可以轻松地从 Android 设备直接对应用制作高质量视频。 Android 4.4 添加了对屏幕录制的支持,提供屏幕录制实用程序,让您能够在通过 USB 连接到 Android SDK 环境的设备上启动和停止录制。这是一种为应用、测试材料、营销视频等创建演示和教程的绝佳新方式。
利用屏幕录制实用程序,您可以捕获设备屏幕内容的视频,并在设备上将视频存储为 MP4 文件。您可以任何设备支持的分辨率和所需的比特率进行录制,输出保留显示屏的纵横比。默认情况下,此实用程序将选择与当前屏幕方向设备分辨率相同或接近的分辨率。完成录制后,您可以直接从设备共享视频,或将 MP4 文件转移到主计算机进行后期制作。
如果您不希望屏幕录制程序捕获您的应用播放的视频或其他受保护的内容,您可以使用 SurfaceView.setSecure() 将内容标记为安全内容。
您可以通过 Android SDK 中包含的 adb 工具,使用命令 adb shell screenrecord 访问屏幕录制功能。您也可以通过 Android Studio 中的 DDMS 面板启动它。
#### **通过自适应播放切换分辨率**
Android 4.4 将对自适应播放的正式支持引入 Android 媒体框架。自适应播放是 MPEG-DASH 和其他格式视频解码器的一项可选功能,可实现在播放过程中无缝更改分辨率。客户端可以开始馈送新分辨率的解码器输入视频帧,输出缓冲区的分辨率自动变化,但不会出现大间隙。
利用 Android 4.4 中的分辨率切换功能,媒体应用可以显著改善流式视频体验。应用可以在运行时使用现有 API 检查是否支持自适应播放,并使用 Android 4.4中引入的新 API 实现分辨率切换。
#### **DASH 通用加密**
Android 现在支持 MPEG-DASH 通用加密 (CENC),为管理受保护的内容提供标准的多平台 DRM 方案。应用可以通过 Android 的模块化 DRM 框架和平台 API 利用 CENC,为 DASH 提供支持。
#### **HTTP 直播流式传输**
Android 4.4 将平台的 HTTP 直播流式传输 (HLS) 支持更新到第 7 版 HLS 规范(第 4 版协议)的超集。有关详情,请参阅 IETF 草案。
#### **DSP 音频隧道**
为提供高性能、低功耗的音频播放, Android 4.4 添加了对设备芯片组中的数字信号处理器 (DSP) 音频隧道的平台支持。通过隧道处理,音频解码和输出效应转移到 DSP,减少唤醒应用处理器的频率和耗电量。
对于在屏幕关闭时通过耳机聆听音乐等用例,音频隧道可以显著延长电池使用寿命。例如,通过音频隧道,Nexus 5 的离线网络音频播放总时长可以长达 60 个小时,比非隧道音频延长超过 50%。
无需修改代码,媒体应用即可将音频隧道用于支持的设备。只要它在设备上可用,系统就会利用隧道来优化音频播放。
需要设备硬件支持音频隧道。目前 Nexus 5 具备音频隧道功能,我们正在与芯片组合作伙伴合作,以尽快将其推广至更多的设备。
#### **音频监控**
应用可以在 Visualizer 效果中使用新的监控工具,更新设备当前播放的任何音频的峰值和有效值 (RMS) 水平。例如,您可以在音乐可视化工具中以创新的方式使用此工具,或在媒体播放器中实现播放计量。
#### **音量增强器**
媒体播放应用可以使用新的 LoudnessEnhancer 效果增强口述的音量,LoudnessEnhancer 效果起到压缩器的作用,其带有专门针对语音调整的时间常数。
![可视化工具显示音量增强器音效](https://box.kancloud.cn/a7fa72f7b3e94d402c9a143193b93110_364x253.png)
LoudnessEnhancer 效果的可视化可以使说话内容听得更清楚。
#### **用于改善 AV 同步的音频时间戳**
音频框架现在报告从音频输出 HAL 到应用层的显示时间戳,以改善音频-视频同步。音频时间戳让您的应用可以确定某特定音频帧将于(或已经于)何时在脱机状态下向用户显示;您可以使用时间戳信息更加准确地同步音频与视频帧。
#### **Wi-Fi CERTIFIED Miracast™**
Android 4.4 设备现在可以作为 Miracast 合规设备进行 Wi-Fi Alliance Wi-Fi Display Specification 认证。为便于进行测试,新的“Wireless Display developer”选项显示针对 Wireless Display 认证的高级配置控件和设置。您可以在 Settings > Developer options > Wireless display certification 中访问此选项。Nexus 5 是经 Miracast 认证的无线显示设备。
### **RenderScript Compute**
#### **RenderScript 优化图表**
#### **持续性能提升**
当您的应用使用 RenderScript 时,它们将在 RenderScript 运行时受益于持续的性能优化,无需进行重新编译。右侧图表显示 Android 4.4 中两种常用芯片组的性能提升情况。
![](https://box.kancloud.cn/3d51906464db415ce216c0285be56f50_363x244.png)
在相同设备(Nexus7 和 Nexus10)上运行时 Android 4.4 相对于 Android 4.3 的性能评估。
#### **GPU 加速**
任何在支持的设备上使用 RenderScript 的应用均将受益于 GPU 加速,且无需更改或重新编译代码。自 Nexus 10 首先推出 RenderScript GPU 加速功能以来,其他多个硬件合作伙伴都添加了对此功能的支持。
对于 Android 4.4,GPU 加速功能目前在 Nexus 5 以及 Nexus 4、Nexus 7 (2013) 和 Nexus 10 中可用,我们正在与芯片组合作伙伴合作,以尽快将其推广至更多的设备。
#### **Android NDK 中的 RenderScript**
现在,您可以直接从原生代码使用 RenderScript。利用 Android 原生开发工具包 (NDK) 中新的 C++ API,您可以访问与通过框架 API 提供的相同 RenderScript 功能,包括脚本内联、自定义内核等。
如果您有大量性能密集型作业需要使用本机代码处理,您可以使用 RenderScript 执行这些任务,将它们与您的原生代码相集成。RenderScript 在多种设备中提供出色的性能,并自动支持多核 CPU、GPU 和其他处理器。
通过 NDK 开发使用 RenderScript 的应用时,您可以将它分发给任何运行 Android 2.2 或更高版本的设备,就像使用适用于框架 API 的 RenderScript 支持库一样。
### **图形**
#### **GLES2.0 SurfaceFlinger**
Android 4.4 将 SurfaceFlinger 从 OpenGL ES 1.0 升级至 OpenGL ES 2.0。
新的硬件合成器支持虚拟显示
除主显示器和外部(例如 HDMI)显示器外,最新版本的 Android 硬件合成器 HWComposer 1.3 还支持一个虚拟显示器的硬件合成,并改善了 OpenGL ES 互操作性。
#### **新的连接类型**
**新的蓝牙配置文件**
Android 4.4 支持两种新的蓝牙配置文件,让应用能够支持更多类型的低功耗媒体交互。Bluetooth HID over GATT (HOGP) 让应用可以较短的延迟时间与低功耗外围设备(例如鼠标、操纵手柄和键盘)连接。Bluetooth MAP 让您的应用可以与附近的设备(例如无需用手操作的汽车终端或其他移动设备)交换消息。作为对 Bluetooth AVRCP 1.3 的扩展,用户现在可以通过蓝牙设备设置系统的绝对音量。
Google 推出的 Bluedroid Bluetooth 堆栈和 Android 4.2 中的 Broadcom 均内置 HOGP、MAP 和 AVRCP 平台支持。Nexus 设备及其他提供兼容蓝牙功能的 Android 兼容设备即将提供此支持。
**红外发射器**
Android 4.4 引入了对内置红外线增强器的支持,以及一项新的 API 和系统服务,让您可以创建使用它们的应用。
使用新的 API,您可以开发允许用户远程控制附近 TV、调谐器、开关及其他电子设备的应用。此 API 让您的应用可以检查手机或平板电脑是否具有红外发射器,查询其载波频率,然后发送红外信号。
由于此 API 是运行 Android 4.4 或更高版本的 Android 设备的标准配置,您的应用可以支持最大范围的供应商,且无需编写自定义集成代码。
**Wi-Fi TDLS 支持**
Android 4.4 引入一种无缝的方式,通过支持 Wi-Fi Tunneled Direct Link Setup (TDLS),在相同 WLAN 网络中的不同设备之间更快地流式传输媒体数据及其他数据。
#### **无障碍功能**
**系统范围内的隐藏式字幕设置**
Android 4.4 现在添加了适用于整个系统范围的隐藏式字幕首选项,在应用中支持更加出色的无障碍体验。用户可以前往 Settings > Accessibility > Captions,设置全局字幕首选项,例如是否显示字幕以及要使用的语言、文本大小和文本样式。
使用视频的应用现在可以访问用户的字幕设置和调整演示,以符合用户的首选项。新的字幕管理器 API 让您可以检查和监控用户的字幕首选项。字幕管理器为您提供用户首选的字幕状态以及首选的语言区域、缩放系数和文本样式。文本样式包括前景和背景颜色、边缘属性和字样。
![](https://box.kancloud.cn/da9c10335aafd4735d448a85c1fefabd_477x235.png)
应用现在可以参考用户的系统范围字幕首选项。设置右侧显示预期的显示样式示例。
此外,使用 VideoView 的应用现在可以使用新的 API 同时传输字幕流和视频流进行渲染。系统自动根据用户的系统范围设置处理视频帧上的字幕显示。目前,VideoView 仅支持自动显示 WebVTT 格式的字幕。
显示字幕的所有应用应务必检查用户的系统范围字幕首选项,并尽量根据这些首选项渲染字幕。要进一步了解特定设置组合的外观效果,您可以在 Settings 应用右侧查看不同语言、大小和样式的字幕的预览。
**增强的无障碍功能 API**
Android 4.4 扩展无障碍功能 API,以支持更加准确的结构和语义描述和观察屏幕上的元素。利用新的 API,开发者可以提供无障碍服务和更多有关屏幕元素的信息,改善可获取反馈的质量。
在无障碍功能节点中,开发者现在可以确定节点是否为弹出项,获得其输入类型等。您也可以使用新的 API 处理包含网格状信息(例如列表和表格)的节点。例如,您现在可以指定新的受支持操作、收集信息、实时区域模式等。
新的无障碍事件让开发者可以更加密切地关注窗口内容发生的变化,他们现在还可以在触摸探索模式下侦听设备的变化。
### **支持全球用户**
#### **RTL 语言区域的可绘制对象镜像**
如果您的应用针对的是使用 RTL 脚本的用户,您可以使用新的 API 在用户的语言区域包含 RTL 语言时声明应自动镜像可绘制对象。
将可绘制对象声明为自动镜像有助于避免应用中出现重复的资产,从而减少 APK 的大小。当您的可绘制对象可重复用于 LTR 和 RTL 演示时,您可以将默认版本声明为自动镜像,然后在您的 RTL 资源中忽略这些可绘制对象。
![](https://box.kancloud.cn/f74119ae8fe7cf1f61af3a57ebcc30e5_262x227.png)
Force RTL layout 选项可简化您应用的本地化测试工作。
您可以在应用代码中将不同类型的可绘制对象声明为自动镜像,例如位图、九宫格图像、图层、状态列表和其他可绘制对象。您也可以使用新的属性,在资源文件中将可绘制对象声明为自动镜像。
#### **强制实施 RTL 布局**
为在无需切换到 RTL 语言的情况下更加方便地测试和调试布局镜像问题,Android 包含新的开发者选项,强制在所有应用中采用 RTL 布局方向。
“Force RTL layout”选项将设备所有语言区域切换到 RTL 布局,并使用当前语言显示文本。这可以帮助您发现应用中的布局问题,且无需使用 RTL 语言显示应用。您可以在 Settings > Developer options > Force RTL layout direction 中访问此选项。
### **安全增强功能**
#### **SELinux(强制模式)**
Android 4.4 将其 SELinux 配置从“permissive”更新为“enforcing”。这意味着,在具有强制政策的 SELinux 域中,将阻止潜在的政策违规行为。
#### **改进加密算法**
Android 添加了对另外两种加密算法的支持,进一步提升了其安全性。已向密钥库提供程序添加椭圆曲线数字签名算法 (ECDSA) 支持,从而提升了数字签名的安全性,适用于应用签名或数据连接等场景。实现 Scrypt 密钥派生函数,以保护用于全磁盘加密的加密密钥。
#### **其他增强功能**
在多用户设备上,现在根据用户应用 VPN。这使用户可以通过 VPN 路由所有网络流量,且不会影响设备中的其他用户。另外,Android 现在支持 FORTIFY_SOURCE 级别 2,所有代码均使用这些保护措施进行编译。FORTIFY_SOURCE 已得到增强,可与 clang 配合使用。
### **内存使用率分析工具**
#### **Procstats**
一款名为 procstats 的新工具可帮助您分析您的应用使用的内存资源,以及系统中运行的其他应用和服务使用的资源。
Procstats 跟踪应用在一段时间内的运行情况,提供有关它们执行持续时间和内存使用率的数据,帮助确定它们的执行效率。这对于启动在后台运行的服务的应用最为重要,因为它让您可以监控它们运行的时长以及它们运行时使用的内存量。Procstats 还将收集前台应用在一段时间内的内存使用率数据,以确定应用的总体内存使用情况。
Procstats 可以帮助您识别应用启动的后台服务。您可以跟踪这些服务持续运行的时长以及它们运行时使用的内存量。Procstats 还让您可以了解应用在前台运行时的大致情况,使用其在一段时间内的内存使用率数据确定其总体内存使用情况。
![](https://box.kancloud.cn/f44dea92dd000c0d13c4cc6824184722_366x218.png)
通过新的 procstats 工具,您可以检查应用和服务在一段时间内的内存使用率。
![](https://box.kancloud.cn/d498bc1dec4ac6b7a0e8c6656d5dadf0_365x216.png)
通过改进的 meminfo 工具,您可以查看应用的内存使用率详情。
您可以通过 Android SDK 中包含的 adb 工具 adb shell dumpsys procstats 访问 procstats。另外,对于设备内存分析,请查看下面的 Process Stats 开发者选项。
#### **设备内存状态和分析**
Android 4.4 包含新的开发者选项,不论应用在何种设备或模拟器上运行,均可以更加简便地分析应用的内存使用情况。它尤其有助于了解应用的内存使用情况和在低内存设备上的运行情况。您可以在 Settings > Developer options > Process stats 中访问此选项
![](https://box.kancloud.cn/806142788f4204e41901c6bba7488854_489x463.png)
Process stats 是检查应用内存使用情况的一种非常便利的方式。您可以查看您的应用与其他应用的对比情况,详细了解应用或其后台服务的特定数据。
Process Stats 选项基于使用新的 procstats 服务收集的数据,显示有关您的应用内存使用率的各种高级指标。在主屏幕上,您可以查看系统内存状态的概览。绿色表示相对的一段时间内 RAM 使用率低,黄色表示中等 RAM 使用率,红色表示高(临界)RAM 使用率。
概览下面是一个列表,概述每个应用的系统内存负载。对于每个应用,蓝色条表示其进程的相对计算内存负载(运行时间 x avg_pss),百分比数字表示在后台运行的相对时间量。您可以对此列表进行过滤,以仅显示前台、后台或缓存的进程,您也可以包含或排除系统进程。您还可以将数据收集的时长更改为 3、6、12 或 24 小时,而且您可以包含或排除 uss 内存。
要单独、深入地了解特定应用的内存使用情况,请点按应用。对于每个应用,您现在可以查看消耗的内存的概况和应用已运行的收集时间间隔的百分比。您还可以查看在收集期间的平均使用率和最高使用率,在应用的服务下面,您可以查看它们已运行的时间百分比。
使用 Process Stats 中的数据分析应用,可以发现问题和为您的应用提出可能的优化建议。例如,如果您的应用运行时间超过其本应运行的时长或在一段时间内使用的内存过多,则代码可能存在错误,您可以解决此错误,以提升应用的性能,尤其是在低 RAM 的设备上运行时的性能。
- 前言
- Google官网对Android API各版本的介绍
- jelly Bean(果冻豆)Android 4.1、4.2、4.3
- Android 4.1
- Android 4.2
- Android 4.3
- KitKat(Android 4.4.*)巧克力
- Android 4.4 APIS
- Lollipop(棒棒糖)Android 5.*
- Android 5.0 APIs
- Android 5.0 Changes(变更)
- Android 5.1APIs
- Marshmallow(棉花糖)Android 6.0
- Android 6.0 APIs
- Android 6.0 Changes(变更)
- Android 6.0 Samples
- Android 6.0 Testing
- Nougat(牛扎塘)Android 7.*
- Android 7.0
- API
- 行为变更
- 示例
- Android 7.1
- 开发者API
- 示例Sample
- Oreo(奥利奥)8.*
- Android 8.0
- 功能和 API
- Android 8.0 行为变更
- 向 Android 8.0 迁移应用
- Android 8.0 示例
- Android 8.1
- 后台执行限制
- 后台位置限制
- API指南
- Android 简介
- 应用基础知识
- 设备兼容性
- 系统权限
- 请求权限
- 定义权限
- 平台架构
- Java8 概览
- 在ART上验证应用行为
- 应用组件
- Intent 和 Intent 过滤器(Google官网介绍)
- 通用intent
- Activity
- 任务和返回栈(官网译文)
- 概览屏幕
- 活动简介
- 活动生命周期
- 活动状态更改
- 进程和应用程序生命周期
- 包裹和捆绑
- 最近的屏幕
- 片段
- 加载器
- 服务Service
- 绑定服务
- AIDL
- 内容提供程序
- 内容提供程序基础知识
- 创建内容提供程序
- 日历提供程序
- 联系人提供程序
- 存储访问框架
- 使用存储访问框架打开文件
- 创建自定义文档提供程序
- 应用小部件
- 应用小部件主机
- 进程和线程
- 应用资源
- 概览
- 提供资源
- 访问资源
- 处理运行时变更
- 本地化
- ICU4J Android框架API
- Android上的国际化
- 语言和语言区域
- 复杂的XML资源
- 资源类型
- 动画
- 颜色状态列表
- 可绘制对象
- 布局
- 菜单
- 字符串
- 样式
- 其他类型
- 应用清单
- <action>
- <activity>
- <activity-alias>
- <application>
- <category>
- <compatiable-screens>
- <data>
- <grant-uri-permission>
- <intent-filter>
- <manifest>
- <meta-data>
- <path-permission>
- <permission>
- <permission-group>
- <permission-tree>
- <provider>
- <receiver>
- <service>
- <supporte-gl-texture>
- <supports-screens>
- <uses-configuration>
- <uses-feature>
- <uses-library>
- <uses-permission>
- <uses-permission-sdk-23>
- <uses-sdk>
- 用户界面
- 界面概览
- 界面布局
- 线性布局
- 相对布局
- 列表视图
- 网格视图
- 回收站视图
- 外观和感觉
- 可下载的字体
- XML中的字体
- 表情符号兼容性
- 自动调整TextView
- 样式和主题-
- 输入控件
- 按钮
- 文本字段
- 复选框
- 单选按钮
- 切换按钮
- 微调框
- 选取器
- 输入事件
- 菜单Menu
- 设置
- 对话框
- 通知
- Toast
- 自适应图标
- 应用快捷方式
- 搜索
- 创建搜索界面
- 添加近期查询建议
- 添加自定义建议
- 可搜索配置
- 多窗口支持
- 拖放
- 无障碍功能
- 为应用设置无障碍功能
- 无障碍功能开发者检查单
- 构建无障碍服务
- 让应用更容易访问
- 使用节点树调试
- 构建可访问自定义视图
- 样式和主题
- 自定义组件
- 动画和图形
- 概览介绍
- 属性动画
- 视图动画
- 可绘制动画
- 画布和可绘制对象
- 基于物理的动画
- Spring Animation
- Fling Animation
- OpenGL ES
- 硬件加速
- 计算
- RenderScript
- 高级RenderScript
- Runtime API Reference(参考)
- Numerical Types(数字类型)
- Object Types(对象类型)
- Conversion Functions(转换函数)
- Mathematical Constants and Functions(数学常量和函数)
- Vector Math Functions(矢量数学函数)
- Matrix Functions(矩阵函数)
- Quaternion Functions(四元数函数)
- Atomic Update Functions(原子更新函数)
- Time Functions and Types(时间函数和类型)
- Allocation Data Access Functions(分配数据访问函数)
- Object Characteristics Functions(对象特性函数)
- Kernel Invocation Functions and Types(内核调用函数和类型)
- Input/Output Functions(输入输出函数)
- Debugging Functions(调试函数)
- Graphics Functions and Types(图形函数和类型)
- Index(索引)
- Media Apps(媒体应用)
- Media Apps Overview(媒体应用程序概述)
- Working with a Media Session(使用媒体会话)
- Building an Audio App(建立一个音频应用)
- Building a Media Browser Service(构建媒体浏览器服务)
- Building a Media Browser Client(构建媒体浏览器客户端)
- Media Session Callbacks(媒体会话回调)
- Building a Video App(建立一个视频应用)
- Building a Video Player Activity(建立一个视频播放器Activity)
- Media Session Callbacks-(媒体会话回调)
- Responding to Media Buttons(响应媒体按钮)
- Handling Changes in Audio Output(处理音频输出的变化)
- Managing Audio Focus(管理音频焦点)
- The Google Assistant and Media Apps(Google智能助理和媒体应用)
- 媒体和相机
- Supported Media Formats(支持的媒体格式)
- MediaPlayer(媒体播放器)
- MediaRecorder
- ExoPlayer
- Controller Amplitude with VolumeShaper(VolumeShaper控制器振幅)
- Media Routing(媒体路由)
- MediaRouter API
- MediaRouteProvider API
- Camera API(相机API)
- 位置和传感器
- Location and Maps(位置和地图)
- Location Strategies(位置策略)
- Sensors Overview(传感器概览)
- Motion Sensors(运动传感器)
- Position Sensors(位置传感器)
- Environment Sensors(环境传感器)
- Raw GNSS Measurements(原始的GNSS测量)
- 连接
- Bluetooth
- Bluetooth Low Energy(蓝牙低功耗)
- NFC
- NFC Basics(NFC基础知识)
- Advanced NFC(高级NFC)
- Host-based Card Emulation(基于主机的卡模拟)
- Telecom(电信)
- Self-Managed ConnectionServices(自我管理的连接服务)
- Wi-Fi P2P
- Wi-Fi Aware
- Companion Device Pairing
- USB
- Accessory(配件)
- Host(主机)
- SIP
- 文本和输入
- Autofill Framework(自动填充框架)
- Test your app with autofill(使用自动填充测试你的应用)
- Building autofill services(构建自动填充服务)
- Copy and Paste(复制和粘贴)
- Creating an IME(创建IME)
- Image Keyboard(图像键盘)
- Spelling Checker(拼写检查程序)
- 数据存储
- Storage Options(存储选项)
- Data Backup(数据备份)
- Account Transfer API(账户转移API)
- Auto Backup(自动备份)
- Key/Value Backup(键值备份)
- Testing Backup and Restore(测试备份和还原)
- App Install Location(应用安装位置)
- 库
- 支持库
- 功能
- 修订历史记录
- 库设置
- 数据绑定库
- 测试支持库
- 管理
- 设备策略
- 网络应用
- Supporting Different Screens in Web Apps(在网络应用中支持不同屏幕)
- Building Web Apps in WebView(在WebView中构建网络应用)
- Managing WebViews
- Migrating to WebView in Android 4.4(迁移到Android4.4中的WebView)
- Debugging Web Apps(调试网络应用)
- Best Practices for Web Apps(网络应用最佳做法)
- 最佳实践
- Supporting Multiple Screens(支持多种屏幕)
- Distributing to Specific Screens(分配到特定屏幕)
- Screen Compatibility Mode(屏幕兼容性模式)
- Designing for Seamlessness
- Supporting Tablets and Handsets
- 培训