原文出處——>[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 的交易的讀取器。

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,讓用戶可以通過任何應用不斷控制打印。打印管理器還確保內容在從一個應用傳遞到打印服務等進程中的安全性。

您可以向應用添加打印支持,也可以開發打印服務,以支持特定類型的打印機。
打印機制造商可以使用新的 API 開發自己的打印服務 — 添加供應商特定邏輯和服務以與特定類型的打印機進行通信的可插入組件。他們可以構建打印服務,并通過 Google Play 發布此類服務,以便于用戶查找并在自己的設備上安裝這些服務。和其他應用一樣,您可以隨時通過無線方式更新打印服務。
客戶端應用可以使用新的 API,在基本不改變代碼的情況下,向應用添加打印功能。在大多數情況下,您應向操作欄添加打印操作和用于選擇打印項目的 UI。您也可以實現 API,以創建打印作業,在打印管理器中查詢打印作業的狀態,以及取消作業。它支持打印幾乎任何類型的內容,包括本地圖像和文檔、網絡數據或渲染到畫布的圖像。
為實現最大范圍的兼容性,Android 使用 PDF 作為主要的打印文件格式。在打印前,您的應用需要生成適當標注頁碼的 PDF 版內容。為了方便起見,Printing API 提供本地和 WebView 輔助程序類,以便您使用標準的 Android 繪圖 API 創建 PDF。如果您的應用知道如何提取內容,則可快速創建用于打印的 PDF。
大多數運行 Android 4.4 的設備包含預裝的 Google 云打印作為打印服務,以及多個支持打印的 Google 應用,包括 Chrome、云端硬盤、圖庫和 QuickOffice 等。
#### **存儲訪問框架**
新的存儲訪問框架讓用戶能夠在其所有首選文檔存儲提供程序中方便地瀏覽并打開文檔、圖像以及其他文件。用戶可以通過易用的標準 UI,以統一方式在所有應用和提供程序中瀏覽文件和訪問最近使用的文件。

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 上可用,我們正在與芯片組合作伙伴合作,以盡快將其推廣至新設備。

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。
要返回沉浸模式,用戶可以觸摸欄界限之外的屏幕或等待一小段時間,讓欄自動隱藏。為提供一致的用戶體驗,新的手勢還與之前隱藏狀態欄的方法配合使用。

新的沉浸模式讓應用可以利用屏幕上的每一個像素顯示內容和捕獲觸摸事件。
#### **用于動畫場景的轉場框架**
大多數應用圍繞幾個顯示不同操作的關鍵 UI 狀態構建流程。許多應用還利用動畫,通過這些狀態和每種狀態下可用的操作,幫助用戶了解其進程。為簡化在您的應用中創建高質量動畫的過程, Android 4.4 引入新的轉場框架。
利用此轉場框架,您可以定義場景、典型視圖層次和轉場,它們描述如何在用戶進入或退出場景時制作場景動畫或轉換場景。您可以使用多種預定義的轉場類型,根據特定屬性(例如布局界限或可見性)制作場景動畫。還有一種自動轉場類型,可以在場景切換時自動淡出淡入、移動視圖和調整視圖大小。此外,您可以定義自定義轉場,為對您的應用最為重要的屬性制作動畫,而且您可以在必要時插入您自己的動畫樣式。
利用轉場框架,您還可以針對 UI 變更動態制作動畫,而無需定義場景。例如,您可以對視圖層次進行一系列更改,然后讓 TransitionManager 對這些更改自動運行延遲轉場。
設置轉場后,即可直接從您的應用調用轉場。例如,您可以調用一種方法開始轉場,在視圖層次中進行各種更改,在下一幀中動畫將自動開始,以動畫形式呈現您指定的更改。
要自定義控制在您的應用流中特定場景之間運行的轉場,您可以使用 TransitionManager。利用 TransitionManager,您可以定義場景和為特定場景更改運行的轉場之間的關系。
**透明系統 UI 樣式**
要使內容發揮最大作用,您現在可以使用新的窗口樣式和主題請求透明系統 UI,包括狀態欄和導航欄。為確保導航欄按鈕或狀態欄信息清晰可辨,在系統狀態欄后面顯示微妙的漸變效果。典型用例是需要顯示出壁紙的應用。

應用可以使用新的窗口樣式請求透明系統狀態欄。
**增強的通知訪問功能**
通知偵聽器服務現在可以查看通過通知生成器 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 內容。

所有運行 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 效果起到壓縮器的作用,其帶有專門針對語音調整的時間常數。

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 中兩種常用芯片組的性能提升情況。

在相同設備(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 讓您可以檢查和監控用戶的字幕首選項。字幕管理器為您提供用戶首選的字幕狀態以及首選的語言區域、縮放系數和文本樣式。文本樣式包括前景和背景顏色、邊緣屬性和字樣。

應用現在可以參考用戶的系統范圍字幕首選項。設置右側顯示預期的顯示樣式示例。
此外,使用 VideoView 的應用現在可以使用新的 API 同時傳輸字幕流和視頻流進行渲染。系統自動根據用戶的系統范圍設置處理視頻幀上的字幕顯示。目前,VideoView 僅支持自動顯示 WebVTT 格式的字幕。
顯示字幕的所有應用應務必檢查用戶的系統范圍字幕首選項,并盡量根據這些首選項渲染字幕。要進一步了解特定設置組合的外觀效果,您可以在 Settings 應用右側查看不同語言、大小和樣式的字幕的預覽。
**增強的無障礙功能 API**
Android 4.4 擴展無障礙功能 API,以支持更加準確的結構和語義描述和觀察屏幕上的元素。利用新的 API,開發者可以提供無障礙服務和更多有關屏幕元素的信息,改善可獲取反饋的質量。
在無障礙功能節點中,開發者現在可以確定節點是否為彈出項,獲得其輸入類型等。您也可以使用新的 API 處理包含網格狀信息(例如列表和表格)的節點。例如,您現在可以指定新的受支持操作、收集信息、實時區域模式等。
新的無障礙事件讓開發者可以更加密切地關注窗口內容發生的變化,他們現在還可以在觸摸探索模式下偵聽設備的變化。
### **支持全球用戶**
#### **RTL 語言區域的可繪制對象鏡像**
如果您的應用針對的是使用 RTL 腳本的用戶,您可以使用新的 API 在用戶的語言區域包含 RTL 語言時聲明應自動鏡像可繪制對象。
將可繪制對象聲明為自動鏡像有助于避免應用中出現重復的資產,從而減少 APK 的大小。當您的可繪制對象可重復用于 LTR 和 RTL 演示時,您可以將默認版本聲明為自動鏡像,然后在您的 RTL 資源中忽略這些可繪制對象。

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 還讓您可以了解應用在前臺運行時的大致情況,使用其在一段時間內的內存使用率數據確定其總體內存使用情況。

通過新的 procstats 工具,您可以檢查應用和服務在一段時間內的內存使用率。

通過改進的 meminfo 工具,您可以查看應用的內存使用率詳情。
您可以通過 Android SDK 中包含的 adb 工具 adb shell dumpsys procstats 訪問 procstats。另外,對于設備內存分析,請查看下面的 Process Stats 開發者選項。
#### **設備內存狀態和分析**
Android 4.4 包含新的開發者選項,不論應用在何種設備或模擬器上運行,均可以更加簡便地分析應用的內存使用情況。它尤其有助于了解應用的內存使用情況和在低內存設備上的運行情況。您可以在 Settings > Developer options > Process stats 中訪問此選項

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
- 培訓