1. 程式人生 > >Android開發者福利之--------Android 5.0 API

Android開發者福利之--------Android 5.0 API

Android 5.0 API


Android 5.0 (LOLLIPOP) 為使用者和應用開發者提供了新功能。本文旨在介紹其中最值得關注的新 API。

如果您有已釋出的應用,請務必看一看 Android 5.0 行為變更,瞭解您的應用應該考慮的變化。即使您不使用新的 API 或者確定新功能目標,這些行為變更仍可能會影響您的應用在 Android 5.0 裝置上的表現。

著手開發

要著手開發 Android 5.0 應用,您必須先獲得 Android SDK,然後使用 SDK 管理器下載 Android 5.0 SDK Platform 和系統映像。

更新目標 API 級別

要進一步優化您的應用在執行 Android 5.0 的裝置上的效能,請將您的 

targetSdkVersion 設定為 "21",在 Android 5.0 系統映像上安裝您的應用並進行測試,然後釋出更新了此變更的應用。

您可以通過在程式碼中新增條件,在執行您的 minSdkVersion 不支援的 API 之前檢查系統 API 級別,實現在使用 Android 5.0 API 的同時仍為舊版本提供支援。

重要的行為變更

如果您之前釋出過 Android 應用,請注意您的應用可能受到 Android 5.0 變化的影響。

Material Design 支援

Android 5.0 添加了對 Android 的新 Material Design 樣式的支援。您可以建立具有 Material Design 功能的應用,實現動態視覺效果,利用其中的 UI 元素轉換賦予使用者自然的感覺。此支援包括:

  • Material Design 主題
  • 檢視陰影
  • 可繪製動畫和造型效果
  • Material Design 動畫和 Activity 轉換效果
  • 針對基於檢視狀態的檢視屬性的動畫生成器
  • 可自定義的 UI 小部件和具有可由您控制的調色盤的應用欄
  • 基於 XML 向量圖形的動畫和非動畫可繪製物件

最近使用的應用螢幕中的併發文件和 Activity

在之前的版本中,最近使用的應用螢幕只能為最近與使用者互動過的每個應用顯示一項任務。現在,您的應用可以根據需要為其他併發文件 Activity 開啟更多工。此功能簡化了多工處理,通過在所有應用中提供一致的切換體驗,讓使用者能夠在最近使用的應用螢幕中的各個 Activity 和文件之間快速切換。此類並行任務示例可能包括:網路瀏覽器應用中開啟的標籤頁、效率類應用中的文件、遊戲中的並行對局或資訊應用中的聊天。您的應用可以通過  類管理它的任務。

為插入邏輯換行符以便系統將您的 Activity 視為新任務,請在使用  啟動 Activity 時使用 。您還可以通過在清單中將 <activity> 元素的 documentLaunchMode 屬性設定為 "intoExisting" 或 "always" 來獲得此行為。

為避免使最近使用的應用螢幕變得混亂,您可以在應用中設定該螢幕中可顯示的任務數上限。要實現此目的,請設定 <application> 屬性 。目前可指定的上限為每位使用者 50 個任務(RAM 較低裝置為 25 個)。

可將最近使用的應用螢幕中的任務設定為在重啟後保留。要控制持久化行為,請使用 android:persistableMode 屬性。您還可以通過呼叫  方法,更改 Activity 在最近使用的應用螢幕中的視覺屬性,如 Activity 的顏色、標籤和圖示。

WebView 更新

Android 5.0 將  實現更新至 Chromium M37,增強了安全性和穩定性,並修復了一些問題。執行在 Android 5.0 上的  的預設使用者代理字串已更新,以納入 37.0.0.0 作為版本號。

此版本引入了  類,讓您的應用可以通過 getUserMedia() 等網路 API 授予  訪問相機和麥克風之類受保護資源的許可權。您的應用必須對這些資源擁有相應的 Android 許可權,才能向  授予許可權。

藉助新的  方法,您現在可以在  中使用輸入表單欄位,然後啟動檔案選擇器從 Android 裝置中選擇影象和檔案。

螢幕採集和共享

Android 5.0 引入了新的  API,讓您可以為應用新增螢幕採集和螢幕共享功能。例如,如果您想在視訊會議應用中啟用螢幕共享,便可使用此功能。

新增的  方法允許您的應用將主螢幕(預設顯示)的內容採集到一個  物件中,然後您的應用便可將其傳送至整個網路。該 API 只允許採集非安全螢幕內容,不允許採集系統音訊。要開始採集螢幕,您的應用必須先使用通過  方法獲得的  啟動螢幕採集對話方塊,請求使用者授予許可權。


通知

鎖定螢幕通知

Android 5.0 中的鎖定螢幕可以顯示通知。使用者可以通過“Settings” 選擇是否允許在安全的鎖定螢幕上顯示敏感的通知內容。

您的應用可以控制在安全鎖定螢幕上顯示的通知中可見資訊的詳細程度。要控制可見性級別,請呼叫 ,然後指定以下值之一:

當可視性級別為  時,您還可以提供隱藏個人詳情的刪減版通知內容。例如,簡訊應用可能會顯示一條通知,指出“您有3 條新簡訊”,但是隱藏了簡訊內容和發件人。要提供此替換版本的通知,請先使用  建立替換通知。建立專用通知物件時,請通過  方法為其附加替換通知。

通知元資料

Android 5.0 使用與您的應用通知關聯的元資料,以更智慧的方式對通知排序。要設定元資料,請在構建通知時呼叫  中的下列方法:

  • :當裝置處於“優先”模式時,指示系統如何處理應用通知(例如,通知代表來電、即時通訊還是鬧鈴)。
  • :標記通知的重要性是高於還是低於普通通知。如果優先順序欄位設定為  或 的通知還有聲音或振動,則會將其顯示在小型浮動視窗中。
  • :讓您可以新增一名或多名與通知有關的人員。您的應用可以使用此名單指示系統將指定人員發出的通知歸成一組,或者將這些人員發出的通知視為更重要的通知。

圖形

對 OpenGL ES 3.1 的支援

Android 5.0 添加了 Java 介面和對 OpenGLES 3.1 的原生支援。OpenGL ES 3.1 中提供的主要新功能包括:

  • 計算著色器
  • 單獨的著色器物件
  • 間接繪製命令
  • 多重取樣和模具紋理
  • 著色語言改進
  • 高階混合模式和除錯專用擴充套件
  • 向後相容 OpenGL ES 2.0 和 3.0

Android 上 OpenGL ES 3.1 的 Java 介面隨  提供。使用 OpenGL ES 3.1 時,請務必在清單檔案中使用 <uses-feature> 標記和 android:glEsVersion 屬性對其進行宣告。例如:

<manifest><uses-featureandroid:glEsVersion="0x00030001"/>
    ...
</manifest>

Android 擴充套件包

除了 OpenGL ES 3.1 外,此版本還提供了一個擴充套件包,其中包括 Java 介面和對高階圖形功能的原生支援。Android 將這些擴充套件視作單個軟體包。(如果存在 ANDROID_extension_pack_es31a 擴充套件,您的應用可以假定擴充套件包中的所有擴充套件都存在,只需使用一條 #extension 語句便可啟用著色語言功能。)

該擴充套件包支援:

  • 有保證的著色器儲存緩衝區、影象和原子 Fragment 著色器支援(在 OpenGL ES 3.1 中,Fragment 著色器支援為可選支援)。
  • 鑲嵌和幾何著色器
  • ASTC (LDR) 紋理壓縮格式
  • 每取樣內插和著色
  • 幀緩衝區中每個顏色附件採用不同混合模式

該擴充套件包的 Java 介面隨  提供。在您的應用清單中,您可以將應用宣告為必須安裝在支援該擴充套件包的裝置上。例如:

<manifest><uses-featureandroid:name=“android.hardware.opengles.aep”android:required="true"/>
    ...
</manifest>

媒體

用於高階相機功能的 Camera API

音訊回放

  • 您的應用現在可以提供浮點格式 () 的音訊資料。這可以實現更大的動態範圍、更一致的精度和更多的動態餘量。浮點演算法在進行中間計算時特別有用。回放端點為音訊資料使用位深度更低的整型格式。(在Android 5.0中,部分內部管道尚未採用浮點格式。)
  • 您的應用現在可以提供音訊資料作為 ,資料使用的格式與  提供的格式相同。

媒體回放控制

使用新增的通知和媒體 API 可確保系統 UI 瞭解您的媒體回放情況,並可提取和顯示專輯封面。現在,可以利用新增的  類和  類更輕鬆地在整個 UI 和服務範圍內控制媒體回放。

新增的  類替代了棄用的  類,僅提供一套回撥方法來處理傳輸控制和媒體按鈕。如果您的應用提供媒體回放,並執行在 Android TV 或 Wear 平臺上,請使用  類,通過同樣的回撥方法來處理您的傳輸控制。

此外,您還可以利用新增的  類建立允許將回放控制與媒體會話繫結的豐富通知。

媒體瀏覽

儲存

目錄選擇

Android 5.0 擴充套件了儲存訪問框架,允許使用者選擇整個目錄子樹,從而授予應用對所含全部文件的讀/寫許可權,無需使用者逐項確認。

Android 5.0 還在共享的儲存空間上引入了新的軟體包專屬目錄,您的應用可在其中放置供加入到  中的媒體檔案。新增的  返回所有共享儲存裝置上這些目錄的路徑。您的應用無需額外許可權便可訪問返回的路徑,這與  類似。平臺會定期掃描這些目錄中的新媒體,但您也可利用  顯式掃描新內容。

無線和連線

多個網路連線

Android 5.0 提供了新的多網路 API,允許您的應用動態掃描具有特定能力的可用網路,並與它們建立連線。當您的應用需要 SUPL、彩信或運營商計費網路等專業化網路時,或者您想使用特定型別的傳輸協議傳送資料時,就可以使用此功能。

要從您的應用以動態方式選擇並連線網路,請執行以下步驟:

當系統檢測到合適的網路時,它會連線到該網路並呼叫  回撥。您可以使用回撥中的  物件來獲取有關網路的更多資訊,或者引導通訊使用所選網路。

藍芽低功耗

Android 4.3 為發揮核心作用的藍芽低功耗藍芽 LE)引入了平臺支援。在 Android 5.0 中,Android 裝置現在可以發揮藍芽 LE 外圍裝置的作用。應用可以利用此功能讓附近裝置發現它。例如,您可以開發這樣的應用:讓裝置發揮計步器或健康監測儀的作用,並與其他藍芽 LE 裝置進行資料通訊。

新增的  API 讓您的應用可以釋出廣告、掃描響應以及與附近的藍芽 LE 裝置建立連線。要使用新增的廣告和掃描功能,請在您的清單中新增  許可權。當用戶更新您的應用或從 Play 商店下載您的應用時,會被要求向您的應用授予以下許可權:“Bluetooth connection information:Allows the app to control Bluetooth, including broadcasting to or getting information about nearby Bluetooth devices.”

要啟動藍芽 LE 廣播,以便其他裝置能發現您的應用,請呼叫 ,並傳入  類的實現。回撥物件會收到廣播操作成功或失敗的報告。

Android 5.0 引入了  類,讓您的應用可以只掃描其感興趣的特定型別裝置。要開始掃描藍芽 LE 裝置,請呼叫 ,並傳入篩選器列表。在方法呼叫中,您還必須提供  的實現,以便在發現藍芽 LE 廣播時進行報告。

NFC 增強功能

Android 5.0 新增這些增強功能是為了擴大 NFC 的使用範圍和提高 NFC 的使用靈活性:

  • Android Beam 現已出現在 share 選單中。
  • 您的應用可通過呼叫  來呼叫使用者裝置上的 Android Beam 進行資料分享。這樣一來,使用者不必手動用裝置接觸另一臺具有 NFC 功能的裝置,便可完成資料傳送。
  • 您可以使用新增的  方法來建立一條包含 UTF-8 文字資料的 NDEF 記錄。
  • 如果您要開發支付應用,現在可以通過呼叫  動態註冊 NFC 應用 ID (AID)。您還可以使用  來設定應在特定 Activity 位於前臺時使用的首選卡模擬服務。

Volta 專案

除了提供新功能外,Android 5.0 還重視電池壽命的改善。可以利用新增的 API 和工具來了解和優化您的應用的功耗。

計劃排定作業

Android 5.0 新增了一個  API,允許您定義一些系統在稍後或指定條件下(如裝置充電時)以非同步方式執行的作業,從而優化電池壽命。下列情形下,作業計劃排定功能很有用:

  • 應用具有不面向使用者並且可以推遲的作業
  • 應用具有您更願意在裝置插入電源時再進行的作業
  • 應用具有一項需要接入網路或連線 WLAN 的任務。
  • 應用具有多項您希望定期以批處理方式執行的任務。

一個作業單位由一個  物件封裝。該物件指定計劃排定標準。

使用  類可配置應如何執行已排計劃的任務。您可以安排任務在特定條件下執行,例如:

  • 在裝置充電時啟動
  • 在裝置連入無限流量網路時啟動
  • 在裝置空閒時啟動
  • 在特定期限前或以最低延遲完成

例如,您可以新增一段如下程式碼,在無限流量網路上執行您的任務:

JobInfo uploadTask =newJobInfo.Builder(mJobId,
                                         mServiceComponent /* JobService component */).setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED).build();JobScheduler jobScheduler =(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

如果裝置有穩定的電源(也就是說,裝置已插入電源超過 2 分鐘,並且電池處於健康水平),系統將執行任何已做好執行準備的計劃作業,無論作業期限是否已過。

要檢視如何使用  API 的示例,請參閱此版本中的 JobSchedulerSample 實現示例。

電池使用開發者工具

新增的 dumpsys batterystats 命令可生成值得關注的裝置電池使用情況統計資料,這些資料按唯一身份使用者 ID (UID) 加以組織。統計資料包括:

  • 電池相關事件的歷史記錄
  • 裝置的全域性統計資料
  • 每個 UID 和系統元件的近似耗電情況
  • 每個應用的每資料包移動 ms
  • 系統 UID 彙總統計資料
  • 應用 UID 彙總統計資料

可使用 --help 選項來了解各種輸出定製選項的相關資訊。例如,要列印裝置上次充電後某個給定應用軟體包的電池使用情況統計資訊,請執行以下命令:

$ adb shell dumpsys batterystats --charged <package-name>

您可以使用電池耗電歷史工具對 dumpsys 命令輸出的資料進行處理,根據日誌生成用電相關事件的 HTML 視覺化形式。這些資訊可方便您瞭解和診斷任何電池相關問題。

工作場所和教育領域中的 Android

託管配置

Android 5.0 提供了用於在企業環境內執行應用的新功能。如果使用者已有個人帳戶,則裝置管理員可啟動託管配置程序,向裝置新增共存但獨立的託管配置檔案。與託管配置檔案關聯的應用與非託管應用一併出現在使用者的啟動器、最近使用的應用螢幕和通知中。

預設情況下,託管配置檔案中只啟用了一小部分應用。您可以通過呼叫  在託管配置檔案中安裝更多應用。

如果您要開發啟動器應用,可以使用新增的  類獲取可為當前使用者啟動的 Activity 以及任何關聯託管配置檔案的列表。您的啟動器可通過向可繪製圖標追加工作徽章,以醒目方式顯示託管應用。要檢索帶徽章的圖示,請呼叫 。

要檢視如何使用新功能,請參閱此版本中的 BasicManagedProfile 實現示例。

裝置所有者

Android 5.0 引入了部署裝置所有者應用的功能。裝置所有者是一種專業化型別的裝置管理員,額外擁有在裝置上建立和移除二級使用者以及配置全域性設定的能力。您的裝置所有者應用可以使用  類中的方法對託管裝置上的配置、安全性和應用進行精細控制。一臺裝置在同一時間只能有一名活動的裝置所有者。

要部署和啟用裝置所有者,您必須在裝置處於未配置狀態時執行從程式設計應用到裝置的 NFC 資料傳送。此資料傳送傳送的資訊與託管配置中所述配置 intent 中傳送的資訊相同。

固定螢幕

Android 5.0 引入了一個全新的固定螢幕 API,可讓您暫時限制使用者離開您的任務或被通知打斷。舉例來說,如果您要開發一款教育應用來支援 Android 上的高風險評估要求,或者您要開發單一用途或資訊亭模式下的應用,便可使用此 API。您的應用啟用固定屏幕後,在其退出該模式前,使用者將無法看到通知,無法訪問其他應用,也無法返回主螢幕。

啟用固定螢幕的方式有兩種:

  • 手動方式:使用者可以在 Settings > Security > Screen Pinning 中啟用固定螢幕,然後通過觸控最近使用的應用螢幕中的綠色大頭針圖示選擇其想固定的任務。
  • 程式設計方式:要以程式設計方式啟用固定螢幕,請在您的應用內呼叫 。如果請求應用不是裝置所有者,系統會提示使用者進行確認。裝置所有者應用可以呼叫  方法,無需執行使用者確認步驟便可使應用變為可固定應用。

啟用任務鎖定時,會發生以下行為:

  • 狀態列空白,並隱藏使用者通知和狀態資訊。
  • “主螢幕”按鈕和“最近用過的應用”按鈕處於隱藏狀態。
  • 其他應用無法啟動新 Activity
  • 當前應用可以啟動新 Activity,前提是這樣做不會建立新任務。
  • 當裝置所有者呼叫固定螢幕時,使用者將一直鎖定於您的應用,直至應用呼叫 。
  • 如果固定螢幕是由並非裝置所有者的其他應用啟動的 Activity,或者是由使用者直接啟動,則使用者可通過同時按住“Back”按鈕和“Recent”按鈕退出。

列印框架

將 PDF 渲染成點陣圖

您現在可以利用新增的  類,將 PDF 文件頁面渲染成點陣圖影象後進行列印。您必須指定一個可查詢(即內容可隨機訪問的) ,系統會在其上寫入可列印內容。您的應用可通過  獲得要渲染的頁面,然後呼叫  將開啟的  轉換成點陣圖。如果您只想將文件的一部分轉換成點陣圖影象(例如,為了實現平鋪渲染以便放大文件),還可以設定其他引數。

要檢視新 API 使用方法的示例,請參閱 PdfRendererBasic 示例。

系統

應用使用情況統計資訊

現在可以利用新增的  API 訪問 Android 裝置上的應用使用歷史記錄。此 API 提供比已棄用的  方法更為詳細的使用資訊。要使用此 API,您必須先在清單中宣告 "android.permission.PACKAGE_USAGE_STATS" 許可權。使用者還必須通過 Settings > Security > Apps 為該應用啟用訪問使用情況的許可權。

系統以應用為單位收集使用資料,按天、周、月和年彙總資料。系統保留這些資料的最長持續時間如下:

  • 每日資料:7 天
  • 每週資料:4 周
  • 每月資料:6 個月
  • 每年資料:2 年

系統會為每個應用記錄以下資料:

  • 最後一次使用應用的時間
  • 在該時間間隔(以天、周、月或年為單位)內應用位於前臺的總時長
  • 一天之中當元件(以軟體包和 Activity 名稱標識)轉入前臺或後臺時記錄的時間戳
  • 裝置配置發生變化(如裝置螢幕方向因旋轉而發生變化)時記錄的時間戳

測試與輔助工具

測試與輔助工具改進

Android 5.0 添加了以下測試與無障礙功能支援:

  • 新增的  方法讓您可以在儀器測試中執行 shell 命令。命令的執行方式與從已連線到裝置的主機執行 adb shell 類似,允許您使用 dumpsysamcontent 和 pm 等基於 shell 的工具。
  • 使用無障礙功能 API 的無障礙服務和測試工具(如 UiAutomator)現在可以檢索視力健全的使用者可與之互動的螢幕上各視窗屬性的相關詳細資訊。要檢索  物件列表,請呼叫新增的  方法。
  • Android 5.0 可對您應用內的文字語音轉換合成進行更精細的控制。新增的 Voice 類允許您的應用使用關聯了特定語言區域、質量和延時評級以及文字語音轉換引擎專屬引數的語音配置檔案。

IME

更方便的輸入語言切換

從 Android 5.0 開始,使用者可以更方便地在平臺支援的所有輸入法編輯器 (IME) 之間切換。執行指定的切換操作(通常是觸控軟鍵盤上的地球圖示)可在所有此類 IME 中迴圈切換。此行為變更是由  方法實現的。

此外,框架現在會檢查下一個 IME 是否具有切換機制(並進而檢查該 IME 是否支援切換到其後的 IME)。具有切換機制的 IME 將不會迴圈切換到不具有該機制的 IME。此行為變更是由  方法實現的。

要檢視如何使用更新後的 IME 切換 API 的示例,請參閱此版本中更新後的軟鍵盤實現示例。要詳細瞭解如何實現 IME 切換,請參閱建立輸入法

清單宣告

可宣告的必備功能

現在支援在 <uses-feature> 元素中使用以下值,以便您確保只在提供應用所需功能的裝置上安裝您的應用。

使用者許可權

現在,<uses-permission> 元素中支援以下許可權,以宣告您的應用訪問特定 API 所需的許可權。

  • :如果針對的是 API 級別 21 及更高級別,則互動屏保服務必須獲得該許可權才能確保只有系統可與其繫結。