原文出處——>[Android 5.0 API](https://developer.android.com/about/versions/android-5.0.html)
API 級別:21
Android 5.0 (LOLLIPOP) 為用戶和應用開發者提供了新功能。本文旨在介紹其中最值得關注的新 API。
如果您有已發布的應用,請務必看一看 Android 5.0 行為變更,了解您的應用應該考慮的變化。即使您不使用新的 API 或者確定新功能目標,這些行為變更仍可能會影響您的應用在 Android 5.0 設備上的表現。
如需詳細了解新平臺功能,請參閱 Android Lollipop 重要內容。
#### **著手開發**
要著手開發 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 的同時仍為舊版本提供支持。要詳細了解如何保持向后兼容性,請閱讀支持不同平臺版本。
如需了解有關 API 級別工作方式的詳細信息,請閱讀什么是 API 級別?
#### **重要的行為變更**
如果您之前發布過 Android 應用,請注意您的應用可能受到 Android 5.0 變化的影響。
如需了解完整信息,請參閱Android 5.0 變更。
### **用戶界面**
#### **Material Design 支持**
Android 5.0 添加了對 Android 的新 Material Design 樣式的支持。您可以創建具有 Material Design 功能的應用,實現動態視覺效果,利用其中的 UI 元素轉換賦予用戶自然的感覺。此支持包括:
* Material Design 主題
* 視圖陰影
* RecyclerView 小部件
* 可繪制動畫和造型效果
* Material Design 動畫和 Activity 轉換效果
* 針對基于視圖狀態的視圖屬性的動畫生成器
* 可自定義的 UI 小部件和具有可由您控制的調色板的應用欄
* 基于 XML 矢量圖形的動畫和非動畫可繪制對象
要詳細了解如何為您的應用添加 Material Design 功能,請參閱 Material Design。
#### **最近使用的應用屏幕中的并發文檔和 Activity**
在之前的版本中,最近使用的應用屏幕只能為最近與用戶交互過的每個應用顯示一項任務。現在,您的應用可以根據需要為其他并發文檔 Activity 打開更多任務。此功能簡化了多任務處理,通過在所有應用中提供一致的切換體驗,讓用戶能夠在最近使用的應用屏幕中的各個 Activity 和文檔之間快速切換。此類并行任務示例可能包括:網絡瀏覽器應用中打開的標簽頁、效率類應用中的文檔、游戲中的并行對局或信息應用中的聊天。您的應用可以通過 ActivityManager.AppTask 類管理它的任務。
為插入邏輯換行符以便系統將您的 Activity 視為新任務,請在使用 startActivity() 啟動 Activity 時使用 FLAG_ACTIVITY_NEW_DOCUMENT。您還可以通過在清單中將 `<activity>` 元素的 documentLaunchMode 屬性設置為 "intoExisting" 或 "always" 來獲得此行為。
為避免使最近使用的應用屏幕變得混亂,您可以在應用中設置該屏幕中可顯示的任務數上限。要實現此目的,請設置 `<application>` 屬性 android:maxRecents。目前可指定的上限為每位用戶 50 個任務(RAM 較低設備為 25 個)。
可將最近使用的應用屏幕中的任務設置為在重啟后保留。要控制持久化行為,請使用 android:persistableMode 屬性。您還可以通過調用 setTaskDescription() 方法,更改 Activity 在最近使用的應用屏幕中的視覺屬性,如 Activity 的顏色、標簽和圖標。
#### **WebView 更新**
Android 5.0 將 WebView 實現更新至 Chromium M37,增強了安全性和穩定性,并修復了一些問題。運行在 Android 5.0 上的 WebView 的默認用戶代理字符串已更新,以納入 37.0.0.0 作為版本號。
此版本引入了 PermissionRequest 類,讓您的應用可以通過 getUserMedia() 等網絡 API 授予 WebView 訪問相機和麥克風之類受保護資源的權限。您的應用必須對這些資源擁有相應的 Android 權限,才能向 WebView 授予權限。
借助新的 onShowFileChooser() 方法,您現在可以在 WebView 中使用輸入表單字段,然后啟動文件選擇器從 Android 設備中選擇圖像和文件。
此外,此版本還提供了對 WebAudio、WebGL 和 WebRTC 開放標準的支持。要詳細了解此版本包含的新功能,請參閱 WebView for Android。
#### **屏幕采集和共享**
Android 5.0 引入了新的 android.media.projection API,讓您可以為應用添加屏幕采集和屏幕共享功能。例如,如果您想在視頻會議應用中啟用屏幕共享,便可使用此功能。
新增的 createVirtualDisplay() 方法允許您的應用將主屏幕(默認顯示)的內容采集到一個 Surface 對象中,然后您的應用便可將其發送至整個網絡。該 API 只允許采集非安全屏幕內容,不允許采集系統音頻。要開始采集屏幕,您的應用必須先使用通過 createScreenCaptureIntent() 方法獲得的 Intent 啟動屏幕采集對話框,請求用戶授予權限。
如需查看新 API 使用方法的示例,請參閱示例項目中的 MediaProjectionDemo 類。
### **通知**
#### **鎖定屏幕通知**
Android 5.0 中的鎖定屏幕可以顯示通知。用戶可以通過“Settings” 選擇是否允許在安全的鎖定屏幕上顯示敏感的通知內容。
您的應用可以控制在安全鎖定屏幕上顯示的通知中可見信息的詳細程度。要控制可見性級別,請調用 setVisibility(),然后指定以下值之一:
* VISIBILITY_PRIVATE:顯示通知圖標等基本信息,但隱藏通知的完整內容。
* VISIBILITY_PUBLIC:顯示通知的完整內容。
* VISIBILITY_SECRET:不顯示任何內容,甚至不顯示通知圖標。
當可視性級別為 VISIBILITY_PRIVATE 時,您還可以提供隱藏個人詳情的刪減版通知內容。例如,短信應用可能會顯示一條通知,指出“您有3 條新短信”,但是隱藏了短信內容和發件人。要提供此替換版本的通知,請先使用 Notification.Builder 創建替換通知。創建專用通知對象時,請通過 setPublicVersion() 方法為其附加替換通知。
#### **通知元數據**
Android 5.0 使用與您的應用通知關聯的元數據,以更智能的方式對通知排序。要設置元數據,請在構建通知時調用 Notification.Builder 中的下列方法:
* setCategory():當設備處于“優先”模式時,指示系統如何處理應用通知(例如,通知代表來電、即時通訊還是鬧鈴)。
* setPriority():標記通知的重要性是高于還是低于普通通知。如果優先級字段設置為 PRIORITY_MAX 或PRIORITY_HIGH 的通知還有聲音或振動,則會將其顯示在小型浮動窗口中。
* addPerson():讓您可以添加一名或多名與通知有關的人員。您的應用可以使用此名單指示系統將指定人員發出的通知歸成一組,或者將這些人員發出的通知視為更重要的通知。
### **圖形**
#### **對 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 接口隨 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 語句便可啟用著色語言功能。)
該擴展包支持:
* 有保證的著色器存儲緩沖區、圖像和原子 Fragment 著色器支持(在 OpenGL ES 3.1 中,Fragment 著色器支持為可選支持)。
* 鑲嵌和幾何著色器
* 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 屬性代表相機的功能級別。
* 所有設備都至少支持 INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY 硬件級別,該級別具有的能力大致與棄用的 Camera API 相當。
* 支持 INFO_SUPPORTED_HARDWARE_LEVEL_FULL 硬件級別的設備可手動控制采集和后期處理,以及以高幀速率采集高分辨率圖像。
要了解如何使用更新后的 Camera API,請參閱此版本中的 Camera2Basic 和 Camera2Video 實現示例。
#### **音頻回放**
此版本加入了對 AudioTrack 的下列更改:
* 您的應用現在可以提供浮點格式 (ENCODING_PCM_FLOAT) 的音頻數據。這可以實現更大的動態范圍、更一致的精度和更多的動態余量。浮點算法在進行中間計算時特別有用。回放端點為音頻數據使用位深度更低的整型格式。(在Android 5.0中,部分內部管道尚未采用浮點格式。)
* 您的應用現在可以提供音頻數據作為 ByteBuffer,數據使用的格式與 MediaCodec 提供的格式相同。
* WRITE_NON_BLOCKING 選項可簡化某些應用的緩沖和多線程處理。
#### **媒體回放控制**
使用新增的通知和媒體 API 可確保系統 UI 了解您的媒體回放情況,并可提取和顯示專輯封面。現在,可以利用新增的 MediaSession 類和 MediaController 類更輕松地在整個 UI 和服務范圍內控制媒體回放。
新增的 MediaSession 類替代了棄用的 RemoteControlClient 類,僅提供一套回調方法來處理傳輸控制和媒體按鈕。如果您的應用提供媒體回放,并運行在 Android TV 或 Wear 平臺上,請使用 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 intent。系統會顯示所有支持子樹選擇的 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、彩信或運營商計費網絡等專業化網絡時,或者您想使用特定類型的傳輸協議發送數據時,就可以使用此功能。
要從您的應用以動態方式選擇并連接網絡,請執行以下步驟:
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 商店下載您的應用時,會被要求向您的應用授予以下權限:“Bluetooth connection information:Allows the app to control Bluetooth, including broadcasting to or getting information about nearby Bluetooth devices.”
要啟動藍牙 LE 廣播,以便其他設備能發現您的應用,請調用 startAdvertising(),并傳入 AdvertiseCallback 類的實現。回調對象會收到廣播操作成功或失敗的報告。
Android 5.0 引入了 ScanFilter 類,讓您的應用可以只掃描其感興趣的特定類型設備。要開始掃描藍牙 LE 設備,請調用 startScan(),并傳入篩選器列表。在方法調用中,您還必須提供 ScanCallback 的實現,以便在發現藍牙 LE 廣播時進行報告。
#### **NFC 增強功能**
Android 5.0 添加這些增強功能是為了擴大 NFC 的使用范圍和提高 NFC 的使用靈活性:
* Android Beam 現已出現在 share 菜單中。
* 您的應用可通過調用 invokeBeam() 來調用用戶設備上的 Android Beam 進行數據分享。這樣一來,用戶不必手動用設備接觸另一臺具有 NFC 功能的設備,便可完成數據傳送。
* 您可以使用新增的 createTextRecord() 方法來創建一條包含 UTF-8 文本數據的 NDEF 記錄。
* 如果您要開發支付應用,現在可以通過調用 registerAidsForService() 動態注冊 NFC 應用 ID (AID)。您還可以使用 setPreferredService() 來設置應在特定 Activity 位于前臺時使用的首選卡模擬服務。
### **Volta 項目**
除了提供新功能外,Android 5.0 還重視電池壽命的改善。可以利用新增的 API 和工具來了解和優化您的應用的功耗。
#### **計劃排定作業**
Android 5.0 新增了一個 JobScheduler API,允許您定義一些系統在稍后或指定條件下(如設備充電時)以異步方式運行的作業,從而優化電池壽命。下列情形下,作業計劃排定功能很有用:
* 應用具有不面向用戶并且可以推遲的作業
* 應用具有您更愿意在設備插入電源時再進行的作業
* 應用具有一項需要接入網絡或連接 WLAN 的任務。
* 應用具有多項您希望定期以批處理方式運行的任務。
一個作業單位由一個 JobInfo 對象封裝。該對象指定計劃排定標準。
使用 JobInfo.Builder 類可配置應如何運行已排計劃的任務。您可以安排任務在特定條件下運行,例如:
* 在設備充電時啟動
* 在設備連入無限流量網絡時啟動
* 在設備空閑時啟動
* 在特定期限前或以最低延遲完成
例如,您可以添加一段如下代碼,在無限流量網絡上運行您的任務:
~~~
JobInfo uploadTask = new JobInfo.Builder(mJobId,
mServiceComponent /* JobService component */)
.setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
.build();
JobScheduler jobScheduler =
(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);
~~~
如果設備有穩定的電源(也就是說,設備已插入電源超過 2 分鐘,并且電池處于健康水平),系統將運行任何已做好運行準備的計劃作業,無論作業期限是否已過。
要查看如何使用 JobScheduler API 的示例,請參閱此版本中的 JobSchedulerSample 實現示例。
#### **電池使用開發者工具**
新增的 dumpsys batterystats 命令可生成值得關注的設備電池使用情況統計數據,這些數據按唯一身份用戶 ID (UID) 加以組織。統計數據包括:
* 電池相關事件的歷史記錄
* 設備的全局統計數據
* 每個 UID 和系統組件的近似耗電情況
* 每個應用的每數據包移動 ms
* 系統 UID 匯總統計數據
* 應用 UID 匯總統計數據
可使用 --help 選項來了解各種輸出定制選項的相關信息。例如,要打印設備上次充電后某個給定應用軟件包的電池使用情況統計信息,請運行以下命令:
~~~
$ adb shell dumpsys batterystats --charged <package-name>
~~~
您可以使用電池耗電歷史工具對 dumpsys 命令輸出的數據進行處理,根據日志生成用電相關事件的 HTML 可視化形式。這些信息可方便您了解和診斷任何電池相關問題。
### **工作場所和教育領域中的 Android**
#### **托管配置**
Android 5.0 提供了用于在企業環境內運行應用的新功能。如果用戶已有個人帳戶,則設備管理員可啟動托管配置進程,向設備添加共存但獨立的托管配置文件。與托管配置文件關聯的應用與非托管應用一并出現在用戶的啟動器、最近使用的應用屏幕和通知中。
要啟動托管配置進程,請通過 Intent 發送 ACTION_PROVISION_MANAGED_PROFILE。如果調用成功,系統會觸發 onProfileProvisioningComplete() 回調。然后您就可以調用 setProfileEnabled() 來啟用此托管配置文件。
默認情況下,托管配置文件中只啟用了一小部分應用。您可以通過調用 enableSystemApp() 在托管配置文件中安裝更多應用。
如果您要開發啟動器應用,可以使用新增的 LauncherApps 類獲取可為當前用戶啟動的 Activity 以及任何關聯托管配置文件的列表。您的啟動器可通過向可繪制圖標追加工作徽章,以醒目方式顯示托管應用。要檢索帶徽章的圖標,請調用 getUserBadgedIcon()。
要查看如何使用新功能,請參閱此版本中的 BasicManagedProfile 實現示例。
#### **設備所有者**
Android 5.0 引入了部署設備所有者應用的功能。設備所有者是一種專業化類型的設備管理員,額外擁有在設備上創建和移除二級用戶以及配置全局設置的能力。您的設備所有者應用可以使用 DevicePolicyManager 類中的方法對托管設備上的配置、安全性和應用進行精細控制。一臺設備在同一時間只能有一名活動的設備所有者。
要部署和激活設備所有者,您必須在設備處于未配置狀態時執行從編程應用到設備的 NFC 數據傳送。此數據傳送發送的信息與托管配置中所述配置 intent 中發送的信息相同。
#### **固定屏幕**
Android 5.0 引入了一個全新的固定屏幕 API,可讓您暫時限制用戶離開您的任務或被通知打斷。舉例來說,如果您要開發一款教育應用來支持 Android 上的高風險評估要求,或者您要開發單一用途或信息亭模式下的應用,便可使用此 API。您的應用激活固定屏幕后,在其退出該模式前,用戶將無法看到通知,無法訪問其他應用,也無法返回主屏幕。
激活固定屏幕的方式有兩種:
* 手動方式:用戶可以在 Settings > Security > Screen Pinning 中啟用固定屏幕,然后通過觸摸最近使用的應用屏幕中的綠色大頭針圖標選擇其想固定的任務。
* 編程方式:要以編程方式激活固定屏幕,請在您的應用內調用 startLockTask()。如果請求應用不是設備所有者,系統會提示用戶進行確認。設備所有者應用可以調用 setLockTaskPackages() 方法,無需執行用戶確認步驟便可使應用變為可固定應用。
激活任務鎖定時,會發生以下行為:
* 狀態欄空白,并隱藏用戶通知和狀態信息。
* “主屏幕”按鈕和“最近用過的應用”按鈕處于隱藏狀態。
* 其他應用無法啟動新 Activity
* 當前應用可以啟動新 Activity,前提是這樣做不會創建新任務。
* 當設備所有者調用固定屏幕時,用戶將一直鎖定于您的應用,直至應用調用 stopLockTask()。
* 如果固定屏幕是由并非設備所有者的其他應用啟動的 Activity,或者是由用戶直接啟動,則用戶可通過同時按住“Back”按鈕和“Recent”按鈕退出。
### **打印框架**
#### **將 PDF 渲染成位圖**
您現在可以利用新增的 PdfRenderer 類,將 PDF 文檔頁面渲染成位圖圖像后進行打印。您必須指定一個可查找(即內容可隨機訪問的) ParcelFileDescriptor,系統會在其上寫入可打印內容。您的應用可通過 openPage() 獲得要渲染的頁面,然后調用 render() 將打開的 PdfRenderer.Page 轉換成位圖。如果您只想將文檔的一部分轉換成位圖圖像(例如,為了實現平鋪渲染以便放大文檔),還可以設置其他參數。
要查看新 API 使用方法的示例,請參閱 PdfRendererBasic 示例。
### **系統**
#### **應用使用情況統計信息**
現在可以利用新增的 android.app.usage API 訪問 Android 設備上的應用使用歷史記錄。此 API 提供比已棄用的 getRecentTasks() 方法更為詳細的使用信息。要使用此 API,您必須先在清單中聲明 "android.permission.PACKAGE_USAGE_STATS" 權限。用戶還必須通過 Settings > Security > Apps 為該應用啟用訪問使用情況的權限。
系統以應用為單位收集使用數據,按天、周、月和年匯總數據。系統保留這些數據的最長持續時間如下:
* 每日數據:7 天
* 每周數據:4 周
* 每月數據:6 個月
* 每年數據:2 年
系統會為每個應用記錄以下數據:
* 最后一次使用應用的時間
* 在該時間間隔(以天、周、月或年為單位)內應用位于前臺的總時長
* 一天之中當組件(以軟件包和 Activity 名稱標識)轉入前臺或后臺時記錄的時間戳
* 設備配置發生變化(如設備屏幕方向因旋轉而發生變化)時記錄的時間戳
### **測試與輔助工具**
#### **測試與輔助工具改進**
Android 5.0 添加了以下測試與無障礙功能支持:
* 新增的 getWindowAnimationFrameStats()和 getWindowContentFrameStats()方法可采集窗口動畫和內容的幀統計信息。這些方法讓您可以編寫儀器測試,以評估應用渲染幀時的刷新頻率是否足以提供流暢的用戶體驗。
* 新增的 executeShellCommand() 方法讓您可以在儀器測試中執行 shell 命令。命令的執行方式與從已連接到設備的主機運行 adb shell 類似,允許您使用 dumpsys、am、content 和 pm 等基于 shell 的工具。
* 使用無障礙功能 API 的無障礙服務和測試工具(如 UiAutomator)現在可以檢索視力健全的用戶可與之交互的屏幕上各窗口屬性的相關詳細信息。要檢索 AccessibilityWindowInfo 對象列表,請調用新增的 getWindows() 方法。
* 新增的 AccessibilityNodeInfo.AccessibilityAction 類允許您定義要在 AccessibilityNodeInfo 上執行的標準或自定義操作。新增的 AccessibilityNodeInfo.AccessibilityAction 類取代了以前在 AccessibilityNodeInfo 中提供的與操作有關的 API。
* Android 5.0 可對您應用內的文本語音轉換合成進行更精細的控制。新增的 Voice 類允許您的應用使用關聯了特定語言區域、質量和延時評級以及文本語音轉換引擎專屬參數的語音配置文件。
### **IME**
#### **更方便的輸入語言切換**
從 Android 5.0 開始,用戶可以更方便地在平臺支持的所有輸入法編輯器 (IME) 之間切換。執行指定的切換操作(通常是觸摸軟鍵盤上的地球圖標)可在所有此類 IME 中循環切換。此行為變更是由 shouldOfferSwitchingToNextInputMethod() 方法實現的。
此外,框架現在會檢查下一個 IME 是否具有切換機制(并進而檢查該 IME 是否支持切換到其后的 IME)。具有切換機制的 IME 將不會循環切換到不具有該機制的 IME。此行為變更是由 switchToNextInputMethod() 方法實現的。
要查看如何使用更新后的 IME 切換 API 的示例,請參閱此版本中更新后的軟鍵盤實現示例。要詳細了解如何實現 IME 切換,請參閱創建輸入法。
### **清單聲明**
#### **可聲明的必備功能**
現在支持在 <uses-feature> 元素中使用以下值,以便您確保只在提供應用所需功能的設備上安裝您的應用。
* FEATURE_AUDIO_OUTPUT
* FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
* FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
* FEATURE_CAMERA_CAPABILITY_RAW
* FEATURE_CAMERA_LEVEL_FULL
* FEATURE_GAMEPAD
* FEATURE_LIVE_TV
* FEATURE_MANAGED_USERS
* FEATURE_LEANBACK
* FEATURE_OPENGLES_EXTENSION_PACK
* FEATURE_SECURELY_REMOVES_USERS
* FEATURE_SENSOR_AMBIENT_TEMPERATURE
* FEATURE_SENSOR_HEART_RATE_ECG
* FEATURE_SENSOR_RELATIVE_HUMIDITY
* FEATURE_VERIFIED_BOOT
* FEATURE_WEBVIEW
#### **用戶權限**
現在,<uses-permission> 元素中支持以下權限,以聲明您的應用訪問特定 API 所需的權限。
* BIND_DREAM_SERVICE:如果針對的是 API 級別 21 及更高級別,則互動屏保服務必須獲得該權限才能確保只有系統可與其綁定。
- 前言
- 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
- 培訓