Android 5.0 API

API 級別:21

Android 5.0 (LOLLIPOP) 為使用者和應用程式開發人員提供新功能。本文件將介紹最重要的新 API。

如果您已發布應用程式,請務必查看應在應用程式中參考的 Android 5.0 行為變更。這些行為變更可能會影響 Android 5.0 裝置上的應用程式,即便你並未使用新的 API 或指定新功能也一樣。

如要大致瞭解新平台功能,請改為參閱 Android Lollipop 重點

成為開發人員

如要開始建構適用於 Android 5.0 的應用程式,您必須先取得 Android SDK。然後使用 SDK Manager 下載 Android 5.0 SDK 平台和系統映像檔。

更新目標 API 級別

如要針對搭載 Android 5.0 的裝置最佳化應用程式,請將 targetSdkVersion 設為 "21",在 Android 5.0 系統映像檔上安裝應用程式,然後進行測試,再透過這項變更發布更新版應用程式。

只要在程式碼中新增條件檢查系統 API 級別,再執行 minSdkVersion 不支援的 API,即可在程式碼中新增條件檢查系統 API 級別,同時使用 Android 5.0 API 同時支援舊版 API。如要進一步瞭解如何維持回溯相容性,請參閱支援不同平台版本

如要進一步瞭解 API 級別的運作方式,請參閱「什麼是 API 級別?」一文。

重要行為變更

提醒您,如果您先前發布了 Android 專用應用程式,您的應用程式可能會受到 Android 5.0 版的異動影響。

如需完整資訊,請參閱 Android 5.0 異動

使用者介面

Material Design 支援

Android 5.0 開始支援 Android 新的質感設計樣式。您可以在建構具有動態效果的質感設計應用程式時,提供使用者自然流暢的 UI 元素轉場效果。這項支援包括:

  • 材質主題
  • 查看陰影
  • RecyclerView 小工具
  • 可繪項目動畫和樣式效果
  • Material Design 動畫和活動轉場效果
  • 根據檢視畫面狀態的檢視畫面屬性動畫器
  • 可自訂 UI 小工具和應用程式列,搭配可控制的調色盤
  • 以 XML 向量圖形為基礎的動畫和非動畫可繪項目

如要進一步瞭解如何為應用程式新增質感設計功能,請參閱「質感設計」。

近期畫面中同時顯示的文件和活動

在先前的版本中,最近使用畫面只能針對使用者最近與使用者互動的每個應用程式,顯示一項任務。現在,應用程式可視需要開啟更多文件,以便為文件的其他並行活動。這項功能可讓使用者在最近使用的畫面中快速切換個別活動和文件,並在所有應用程式間提供一致的切換體驗,因此有助於多工處理。這類並行工作的範例可能包括網路瀏覽器應用程式開啟的分頁、效率提升應用程式的文件、遊戲中的並行比對,或訊息應用程式的即時通訊。應用程式可以透過 ActivityManager.AppTask 類別管理任務。

如要插入邏輯中斷點,讓系統將活動視為新工作,請在透過 startActivity() 啟動活動時使用 FLAG_ACTIVITY_NEW_DOCUMENT。您也可以在資訊清單中將 <activity> 元素的 documentLaunchMode 屬性設為 "intoExisting""always",取得這個行為。

為避免最近的畫面顯得雜亂,可以設定在該畫面顯示的應用程式工作數量上限。方法是設定 <application> 屬性 android:maxRecents。目前最多可指定每位使用者 50 項工作 (低 RAM 裝置為 25 個工作)。

你可以將「最近使用」畫面中的工作設為在重新啟動後保留。如要控制持續性行為,請使用 android:persistableMode 屬性。您也可以呼叫 setTaskDescription() 方法,在近期畫面中變更活動的視覺屬性,例如活動的顏色、標籤和圖示。

WebView 更新

Android 5.0 會將 WebView 實作更新為 Chromium M37,藉此提升安全性和穩定性,並修正多項錯誤。在 Android 5.0 上執行的 WebView,預設使用者代理程式字串已更新,現在以 37.0.0.0 做為版本號碼。

這個版本推出 PermissionRequest 類別,應用程式可透過 getUserMedia() 等網頁 API,授予 WebView 權限,以便存取相機和麥克風等受保護的資源。您的應用程式必須具備這些資源適用的 Android 權限,才能授予 WebView 的權限。

透過新的 onShowFileChooser() 方法,您現在可以使用 WebView 中的輸入表單欄位,並啟動檔案選擇器,從 Android 裝置中選取圖片和檔案。

此外,這個版本還支援 WebAudioWebGLWebRTC 開放標準。如要進一步瞭解此版本包含的新功能,請參閱 Android 版 WebView

螢幕畫面擷取與共享

Android 5.0 可讓您使用新的 android.media.projection API,在應用程式中加入螢幕畫面擷取和螢幕畫面分享功能。舉例來說,當您想在視訊會議應用程式中啟用分享螢幕畫面時,這項功能就能派上用場。

新的 createVirtualDisplay() 方法可讓應用程式將主畫面 (預設顯示) 的內容擷取至 Surface 物件,然後應用程式就可以透過網路傳送該物件。這個 API 僅允許擷取不安全的畫面內容,無法擷取系統音訊。如要開始擷取螢幕畫面,應用程式必須先使用透過 createScreenCaptureIntent() 方法取得的 Intent,啟動螢幕畫面擷取對話方塊,以要求使用者權限。

如需新 API 使用範例,請參閱範例專案中的 MediaProjectionDemo 類別。

通知

螢幕鎖定通知

Android 5.0 的螢幕鎖定畫面可以顯示通知。使用者可以透過「設定」選擇是否要允許在安全螢幕鎖定畫面中顯示敏感通知內容。

應用程式可以控制裝置通知顯示在安全螢幕鎖定畫面上時所顯示的資料精細程度。如要控制瀏覽權限層級,請呼叫 setVisibility() 並指定下列其中一個值:

當瀏覽權限等級為 VISIBILITY_PRIVATE 時,您也可以提供隱藏個人詳細資料的通知內容版本。舉例來說,簡訊應用程式可能會顯示顯示「您有 3 則新簡訊」的通知,但會隱藏訊息內容和傳送者。如要提供這類替代通知,請先使用 Notification.Builder 建立取代通知。建立私人通知物件時,請透過 setPublicVersion() 方法將替換通知附加至該物件。

通知中繼資料

Android 5.0 會使用與應用程式通知相關聯的中繼資料,以更聰明的方式排序通知。如要設定中繼資料,請在建構通知時在 Notification.Builder 中呼叫下列方法:

  • setCategory():告知系統在裝置處於「優先等級」模式時 (例如通知代表來電、即時訊息或鬧鐘時) 如何處理應用程式通知。
  • setPriority():讓通知的重要性高於或低於一般通知。如果通知同時附帶音效或震動,則優先順序欄位設為 PRIORITY_MAXPRIORITY_HIGH 的通知會顯示在小型浮動視窗中。
  • addPerson():可讓您新增一或多位與通知相關的使用者。您的應用程式可以使用此通知向系統表明應該將來自指定使用者的通知分組,或是將這些人的通知排名較高。

圖像

支援 OpenGL ES 3.1

Android 5.0 新增了 Java 介面,並針對 OpenGL ES 3.1 原生支援。OpenGL ES 3.1 提供的主要新功能包括:

  • 運算著色器
  • 個別著色器物件
  • 間接繪圖指令
  • 多重取樣和模板紋理
  • 改善著色語言
  • 適用於進階混合模式和偵錯的擴充功能
  • 與 OpenGL ES 2.0 和 3.0 的回溯相容性

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

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

如要進一步瞭解如何使用 OpenGL ES,包括如何在執行階段檢查裝置支援的 OpenGL ES 版本,請參閱 OpenGL ES API 指南

Android 擴充功能套件

除了 OpenGL ES 3.1 以外,這個版本還提供具備 Java 介面的擴充功能包,並原生支援進階圖形功能。Android 會將這些擴充功能視為單一套件。(如果存在 ANDROID_extension_pack_es31a 擴充功能,應用程式可以取用套件中的所有擴充功能,並透過單一 #extension 陳述式啟用陰影語言功能)。

擴充功能套件支援:

  • 保證對著色器儲存空間緩衝區、圖片和 atomics 保證的片段著色器支援 (OpenGL ES 3.1 可以選擇 Fragment 著色器支援功能)。
  • Tessellation 與幾何圖形著色器
  • ASTC (LDR) 紋理壓縮格式
  • 每樣本的內插和陰影
  • 影格緩衝區中每個顏色附件的不同混合模式

擴充功能套件的 Java 介面會提供 GLES31Ext。在應用程式資訊清單中,您可以聲明應用程式只能安裝在支援擴充功能包的裝置上。例如:

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

媒體

具備進階相機功能的 Camera API

Android 5.0 導入了新的 android.hardware.camera2 API,以提供精細的相片拍攝及影像處理作業。您現在可以使用 getCameraIdList() 以程式輔助方式存取系統可用的相機裝置,並使用 openCamera() 連線至特定裝置。如要開始擷取圖片,請建立 CameraCaptureSession 並指定 Surface 物件,以傳送擷取的圖片。CameraCaptureSession 可設定為拍攝單張相片或連拍多張圖片。

如要在擷取新圖片時收到通知,請實作 CameraCaptureSession.CaptureCallback 事件監聽器,並在擷取要求中設定該事件監聽器。現在系統完成圖片擷取要求時,CameraCaptureSession.CaptureCallback 事件監聽器會收到 onCaptureCompleted() 呼叫,並提供 CaptureResult 中的圖片擷取中繼資料。

CameraCharacteristics 類別可讓應用程式偵測裝置可用的相機功能。物件的 INFO_SUPPORTED_HARDWARE_LEVEL 屬性代表攝影機的功能層級。

如要瞭解如何使用更新後的 Camera API,請參閱這個版本中的 Camera2BasicCamera2Video 實作範例。

音訊播放

這個版本包含下列對 AudioTrack 的變更:

  • 您的應用程式現在可以以浮點格式 (ENCODING_PCM_FLOAT) 提供音訊資料。這項設定允許更進階的動態範圍、更一致的精確度,以及更大的進步空間。浮點算術特別適合用於中繼計算。播放端點使用整數格式處理音訊資料,位元深度也較低。(在 Android 5.0 中,部分內部管道尚未使用浮點)。
  • 應用程式現在可以以 ByteBuffer 的形式提供音訊資料,格式與 MediaCodec 提供的格式相同。
  • WRITE_NON_BLOCKING 選項可簡化某些應用程式的緩衝處理和多執行緒作業。

媒體播放控制項

使用新的通知和媒體 API,確保系統 UI 知道您的媒體播放作業,並能擷取及顯示專輯封面。使用新的 MediaSessionMediaController 類別,更輕鬆地在 UI 和服務中控制媒體播放作業。

新的 MediaSession 類別會取代已淘汰的 RemoteControlClient 類別,並提供一組回呼方法,用於處理傳輸控制項和媒體按鈕。如果您的應用程式提供媒體播放功能,並在 Android TVWear 平台上執行,請使用 MediaSession 類別,使用相同的回呼方法處理傳輸控制項。

您現在可以使用新的 MediaController 類別建構自己的媒體控制器應用程式。這個類別提供安全執行緒的方式,可從應用程式的 UI 程序監控及控制媒體播放。建立控制器時,請指定 MediaSession.Token 物件,讓應用程式可以與指定的 MediaSession 互動。使用 MediaController.TransportControls 方法,您就可以傳送 play()stop()skipToNext()setRating() 等指令,控制該工作階段的媒體播放作業。透過控制器,您也可以註冊 MediaController.Callback 物件,監聽工作階段的中繼資料和狀態變更。

此外,您可以使用新的 Notification.MediaStyle 類別建立複合式通知,允許播放控制項與媒體工作階段綁定。

媒體瀏覽

Android 5.0 引進了新的 android.media.Browse API,讓應用程式瀏覽其他應用程式的媒體內容資料庫。如要在應用程式中公開媒體內容,請擴充 MediaBrowserService 類別。實作 MediaBrowserService 時應提供 MediaSession.Token 的存取權,應用程式才能播放服務提供的媒體內容。

如要與媒體瀏覽器服務互動,請使用 MediaBrowser 類別。建立 MediaBrowser 執行個體時,請為 MediaSession 指定元件名稱。接著,只要使用該瀏覽器執行個體,您的應用程式就能連結至關聯服務並取得 MediaSession.Token 物件,以便播放透過該服務發布的內容。

儲存空間

選取目錄

Android 5.0 擴充了儲存空間存取架構,讓使用者可以選取整個目錄子樹狀結構,應用程式就能讀取/寫入所有內含文件,而不需要使用者確認每個項目。

如要選取目錄子樹狀結構,請建構並傳送 OPEN_DOCUMENT_TREE 意圖。系統會顯示所有支援子樹狀結構選項的 DocumentsProvider 執行個體,讓使用者能夠瀏覽及選取目錄。傳回的 URI 代表所選子樹狀結構的存取權。接著,您可以使用 buildChildDocumentsUriUsingTree()buildDocumentUriUsingTree() 搭配 query() 來探索子樹狀結構。

新的 createDocument() 方法可讓您在子樹狀結構下方的任何位置建立新文件或目錄。如要管理現有文件,請使用 renameDocument()deleteDocument()。請在發出這些呼叫之前,先檢查 COLUMN_FLAGS 以確認供應商支援。

如果您要實作 DocumentsProvider 並支援子樹狀結構選項,請實作 isChildDocument(),並在 COLUMN_FLAGS 中加入 FLAG_SUPPORTS_IS_CHILD

Android 5.0 也在共用儲存空間上引入了新的套件專屬目錄,您的應用程式可在其中放置媒體檔案,納入 MediaStore。新的 getExternalMediaDirs() 會在所有共用儲存裝置上傳回這些目錄的路徑。與 getExternalFilesDir() 類似,應用程式不需要額外權限即可存取傳回的路徑。平台會定期掃描這些目錄中的新媒體,但您也可以使用 MediaScannerConnection 明確掃描新內容。

無線與連線

多個網路連線

Android 5.0 提供全新的多網路 API,可讓應用程式動態掃描具備特定功能的可用網路,並建立與這些網路的連線。如果您的應用程式需要特殊網路 (例如 SUPL、MMS 或電信業者計費網路),或者想使用特定類型的傳輸通訊協定傳送資料,這項功能就非常實用。

如要從應用程式動態選取網路並建立連線,請按照下列步驟操作:

  1. 建立 ConnectivityManager
  2. 使用 NetworkRequest.Builder 類別建立 NetworkRequest 物件,並指定應用程式感興趣的網路功能和傳輸類型。
  3. 如要掃描合適的網路,請呼叫 requestNetwork()registerNetworkCallback(),然後傳入 NetworkRequest 物件和 ConnectivityManager.NetworkCallback 的實作。如要在偵測到適當網路後主動切換至合適的網路,請使用 requestNetwork() 方法;如果想僅接收已掃描網路的通知,而不主動切換,請改用 registerNetworkCallback() 方法。

系統偵測到合適的網路時,會連線至網路並叫用 onAvailable() 回呼。您可以透過回呼中的 Network 物件取得網路的其他相關資訊,或引導流量使用所選網路。

藍牙低功耗

Android 4.3 從中心角色便導入藍牙低功耗 (藍牙 LE) 平台支援。在 Android 5.0 中,Android 裝置現在可以做為藍牙 LE 週邊裝置使用。應用程式可以使用這項功能讓鄰近裝置得知裝置。舉例來說,您可以建構應用程式,讓裝置能夠做為計步器或健康監控器運作,並與其他藍牙 LE 裝置通訊資料。

新的 android.bluetooth.le API 可讓應用程式廣播廣告、掃描回應,以及與附近的藍牙 LE 裝置建立連線。如要使用新的廣告和掃描功能,請在資訊清單中新增 BLUETOOTH_ADMIN 權限。當使用者透過 Play 商店更新或下載應用程式時,系統會要求使用者授予以下權限:「藍牙連線資訊:允許應用程式控制藍牙,包括向鄰近藍牙裝置廣播或取得相關資訊」。

如要開始藍牙 LE 廣告,讓其他裝置能夠找到您的應用程式,請呼叫 startAdvertising() 並傳入 AdvertiseCallback 類別的實作。回呼物件會收到廣告作業成功或失敗的報表。

Android 5.0 推出了 ScanFilter 類別,因此應用程式只能掃描自己感興趣的特定類型的裝置。如要開始掃描藍牙 LE 裝置,請呼叫 startScan() 並傳入篩選器清單。在方法呼叫中,您也必須提供 ScanCallback 的實作方式,在發現藍牙 LE 廣告時回報。

NFC 強化項目

Android 5.0 新增了以下強化功能,讓您更靈活地使用 NFC:

  • 「share」選單現已支援 Android Beam。
  • 應用程式可藉由呼叫 invokeBeam(),在使用者的裝置上叫用 Android Beam 來分享資料。如此一來,使用者就不需要手動將裝置貼近另一台支援 NFC 的裝置,才能完成資料移轉。
  • 您可以使用新的 createTextRecord() 方法建立包含 UTF-8 文字資料的 NDEF 記錄。
  • 如果您正在開發付款應用程式,現在可以呼叫 registerAidsForService() 以動態方式註冊 NFC 應用程式 ID (AID)。您也可以使用 setPreferredService() 設定當特定活動在前景執行時,偏好的卡片模擬服務。

Volta 專案

除了新功能以外,Android 5.0 也重視電池續航力的改善。使用新的 API 和工具瞭解應用程式的耗電量,並進行最佳化。

排定工作

Android 5.0 提供新的 JobScheduler API,可讓您定義系統稍後或在特定條件下 (例如裝置充電時) 以非同步方式執行的工作,盡可能延長電池續航力。工作排程功能在以下情況非常實用:

  • 應用程式有可延後處理的非使用者工作。
  • 應用程式可在裝置接上電源時,依你偏好執行的作業。
  • 應用程式有需要存取網路或 Wi-Fi 連線的工作。
  • 應用程式有幾個您希望定期執行的工作。

作業單元是由 JobInfo 物件封裝。這個物件會指定排程條件。

使用 JobInfo.Builder 類別來設定排程工作的執行方式。您可以排定在特定條件下執行工作,例如:

  • 在裝置充電時啟動
  • 當裝置連上非計量付費網路時啟動
  • 在裝置閒置時啟動
  • 在指定期限或最短延遲前完成

例如,您可以新增像這樣的程式碼,以便在非計量付費網路上執行工作:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

Java

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

如果裝置具備穩定電源 (也就是已接上電源超過 2 分鐘,且電池處於健康水平),即使工作的期限尚未到期,系統仍會執行所有已準備好執行的排程工作。

如要查看 JobScheduler API 的使用範例,請參閱這個版本中的 JobSchedulerSample 實作範例。

電池用量的開發人員工具

新的 dumpsys batterystats 指令會根據專屬使用者 ID (UID) 整理裝置電池用量的相關統計資料。統計資料包括:

  • 電池相關事件記錄
  • 裝置的全域統計資料
  • 每個 UID 和系統元件的概略耗電量
  • 每個封包的個別應用程式行動毫秒數
  • 系統 UID 匯總統計資料
  • 應用程式 UID 匯總統計資料

使用 --help 選項瞭解用於量身打造輸出內容的各種選項。舉例來說,如要列印特定應用程式套件的電池用量統計資料 (自裝置上次充電後),請執行下列指令:

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

您可以使用 dumpsys 指令輸出內容的 Battery Historian 工具,從記錄檔產生電源相關事件的 HTML 視覺化內容。這些資訊可讓您更輕鬆地瞭解及診斷任何電池相關問題。

Android 專為職場與教育領域提供的工具

受管理的佈建作業

Android 5.0 提供在企業環境中執行應用程式的新功能。如果使用者已有個人帳戶,裝置管理員可以啟動代管佈建程序,在裝置上新增共存但獨立的受管理設定檔。與受管理設定檔相關聯的應用程式會顯示在使用者的啟動器、最近使用畫面和通知中,與非受管理應用程式一同顯示。

如要啟動代管佈建程序,請在 Intent 中傳送 ACTION_PROVISION_MANAGED_PROFILE。如果呼叫成功,系統會觸發 onProfileProvisioningComplete() 回呼。接著,您可以呼叫 setProfileEnabled() 來啟用這個代管設定檔。

根據預設,受管理的設定檔只會啟用一小部分的應用程式。 您可以呼叫 enableSystemApp(),在受管理的設定檔中安裝其他應用程式。

如要開發啟動器應用程式,您可以使用新的 LauncherApps 類別取得目前使用者和任何相關聯的受管理設定檔可啟動的活動清單。啟動器可以在圖示可繪項目後方加上工作標記,讓受管理應用程式看起來更顯眼。如要擷取標記圖示,請呼叫 getUserBadgedIcon()

如要瞭解如何使用新功能,請參閱這個版本中的 BasicManagedProfile 實作範例。

裝置擁有者

Android 5.0 推出了部署裝置擁有者應用程式的功能。裝置擁有者是特殊類型的裝置管理員,具有建立及移除次要使用者,以及調整裝置上的全域設定的功能。裝置擁有者應用程式可以使用 DevicePolicyManager 類別中的方法,精確控管受管理裝置上的設定、安全性和應用程式情況。一部裝置一次只能有一位使用中的裝置擁有者。

如要部署及啟用裝置擁有者,當裝置處於未佈建狀態時,您必須執行從程式設計應用程式到裝置上的 NFC 資料移轉作業。這項資料移轉傳送的資訊與代管佈建一節中所述的佈建意圖相同。

螢幕固定

Android 5.0 推出了新的螢幕固定 API,可讓您暫時限制使用者離開工作,或因通知而中斷服務。舉例來說,如果您正在開發教育應用程式來支援 Android 系統的高風險評估要求,或者是單一用途或資訊站應用程式,即可使用這項政策。應用程式啟用螢幕固定功能後,除非應用程式結束模式,否則使用者無法查看通知、存取其他應用程式或返回主畫面。

你可以透過以下兩種方式啟用螢幕固定功能:

  • 手動:使用者可以依序前往「設定」>「安全性」>「螢幕固定」,啟用螢幕固定功能,然後輕觸「最近使用」畫面中的綠色圖釘圖示,選取要固定的工作。
  • 透過程式輔助方式:如要以程式輔助方式啟用螢幕固定功能,請透過應用程式呼叫 startLockTask()。如果要求的應用程式並非裝置擁有者,系統會提示使用者確認。裝置擁有者應用程式可以呼叫 setLockTaskPackages() 方法,讓應用程式不需使用者確認步驟即可固定。

啟用工作鎖定後,會發生以下行為:

  • 狀態列為空白,且隱藏使用者通知和狀態資訊。
  • 「主畫面」和「最近使用的應用程式」按鈕已隱藏。
  • 其他應用程式無法啟動新活動。
  • 目前的應用程式可以啟動新活動,前提是這樣做不會建立新工作。
  • 當裝置擁有者叫用螢幕固定時,使用者會維持鎖定應用程式,直到應用程式呼叫 stopLockTask() 為止。
  • 如果裝置擁有者以外的其他應用程式或由使用者直接啟用螢幕固定功能,使用者只要同時按住「返回」和「最近使用」按鈕,即可退出螢幕。

列印架構

以點陣圖呈現 PDF

您現在可以使用新的 PdfRenderer 類別,將 PDF 文件頁面轉譯為點陣圖圖片,以便列印。您必須指定可供搜尋的 ParcelFileDescriptor (也就是可以隨機存取內容),讓系統在此寫入可列印的內容。應用程式可以使用 openPage() 取得要轉譯的頁面,然後呼叫 render(),將開啟的 PdfRenderer.Page 轉換為點陣圖。如果只想將文件的部分內容轉換為點陣圖圖片 (例如導入圖塊轉譯來放大文件),您也可以設定其他參數。

如需新 API 的使用範例,請參閱 PdfRendererBasic 範例。

系統

應用程式使用統計資料

您現在可以使用新的 android.app.usage API 存取 Android 裝置上的應用程式使用記錄。與已淘汰的 getRecentTasks() 方法相比,這個 API 可提供更詳細的使用資訊。如要使用這個 API,您必須先在資訊清單中宣告 "android.permission.PACKAGE_USAGE_STATS" 權限。使用者也必須依序前往「設定」>「安全性」>「應用程式」,啟用這個應用程式的存取權。

系統會收集各個應用程式的使用資料,並以每日、每週、每月和每年間隔匯總這些資料。系統保留這些資料的時間長度上限如下:

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

系統會記錄每個應用程式的下列資料:

  • 上次使用應用程式的時間
  • 應用程式在前景執行該時間間隔的總時間長度 (按日、週、月或年)
  • 擷取元件 (以套件和活動名稱識別) 於一天內移至前景或背景時的時間戳記擷取
  • 擷取裝置設定變更時間的時間戳記 (例如裝置螢幕方向因旋轉而變更)

測試與無障礙設計

測試及改善無障礙功能

Android 5.0 新增下列測試和無障礙功能支援:

  • 新的 getWindowAnimationFrameStats()getWindowContentFrameStats() 方法會擷取視窗動畫和內容的影格統計資料。這些方法可讓您編寫檢測設備測試,以評估應用程式是否以充足的重新整理頻率轉譯影格,提供順暢的使用者體驗。
  • 新的 executeShellCommand() 方法可讓您透過檢測設備測試執行殼層指令。這個指令與裝置連線主機執行 adb shell 類似,可讓您使用殼層式工具,例如 dumpsysamcontentpm
  • 使用無障礙 API 的無障礙服務和測試工具 (例如 UiAutomator) 現在可擷取螢幕上視窗屬性的詳細資訊,方便視障使用者進行互動。如要擷取 AccessibilityWindowInfo 物件清單,請呼叫新的 getWindows() 方法。
  • 新的 AccessibilityNodeInfo.AccessibilityAction 類別可讓您定義要在 AccessibilityNodeInfo 上執行的標準或自訂動作。新的 AccessibilityNodeInfo.AccessibilityAction 類別會取代先前在 AccessibilityNodeInfo 中找到的動作相關 API。
  • Android 5.0 版可讓您更精細地控管應用程式中的文字轉語音合成功能。新的 Voice 類別可讓您的應用程式使用與特定語言代碼相關聯的語音設定檔、品質和延遲時間評分,以及文字轉語音引擎專用參數。

輸入法編輯器

更輕鬆地切換輸入語言

從 Android 5.0 版開始,使用者可以更輕鬆地切換各種平台支援的輸入法編輯器 (IME)。執行指定的切換動作 (通常輕觸螢幕鍵盤上的地球圖示) 循環執行所有這類 IME。此行為變更是由 shouldOfferSwitchingToNextInputMethod() 方法實作。

此外,架構現在會檢查下一個輸入法編輯器是否包含切換機制 (因此,因此該架構是否支援在之後切換至輸入法編輯器)。採用切換機制的 IME 不會循環至沒有 IME。此行為變更是由 switchToNextInputMethod() 方法實作。

如要查看使用更新版 IME 切換 API 的範例,請參閱這個版本中更新的螢幕鍵盤實作範例。如要進一步瞭解如何實作 IME 切換機制,請參閱「建立輸入法」。

資訊清單聲明

可宣告的必要功能

<uses-feature> 元素現已支援下列值,因此您可以確保應用程式只安裝在提供應用程式所需功能的裝置上。

使用者權限

<uses-permission> 元素現在支援下列權限,可宣告應用程式存取特定 API 所需的權限。

  • BIND_DREAM_SERVICE:如果指定 API 級別 21 以上,則 Daydream 服務需要這項權限,以確保只有系統可繫結該級別。