API 級別:21
Android 5.0 (LOLLIPOP) 為使用者和應用程式開發人員提供新功能。本文件提供 介紹最著名的全新 API
如果您已發布應用程式,請務必查看 Android 5.0 行為 這些異動事項在應用程式中。這些行為變更 即使您未使用新的 API,Android 5.0 裝置上的應用程式仍可能受到影響 或是指定新功能
如要大致瞭解新平台功能,請參閱 Android Lollipop 重點。
立即開發
如要開始建構 Android 5.0 應用程式,您必須先取得 Android SDK。接著使用 SDK Manager 下載 Android 5.0 SDK 平台和系統映像檔。
更新目標 API 級別
為了針對搭載 Android 5.0 的裝置進一步最佳化應用程式,
將「targetSdkVersion
」設為
"21"
,請在 Android 裝置上安裝您的應用程式
5.0 系統映像檔測試,然後發布更新過的應用程式。
這項變更。
您可以使用 Android 5.0 API,同時支援舊版,方法是在程式碼中新增條件,在執行 minSdkVersion
不支援的 API 前,先檢查系統 API 級別。如要進一步瞭解如何維持向下相容性,請參閱「支援不同平台版本」。
如要進一步瞭解 API 級別的運作方式,請參閱「什麼是 API? 關卡?
重要行為變更
如果您先前曾發布 Android 應用程式,請注意,Android 5.0 的異動可能會影響該應用程式。
如需完整資訊,請參閱 Android 5.0 變更。
使用者介面
Material Design 支援
Android 5.0 新增了對 Android 新材質設計樣式的支援。您可以使用 Material Design 建立應用程式,讓應用程式具有動態視覺效果,並提供使用者自然的 UI 元素轉場效果。這項支援服務包括:
- 質感主題
- 查看陰影
RecyclerView
小工具- 可繪動畫和樣式效果
- Material Design 動畫和活動轉換效果
- 根據檢視畫面狀態,為檢視畫面屬性提供動畫
- 可自訂的 UI 小工具和應用程式列,並提供可控的調色盤
- 以 XML 向量圖形為基礎的動畫和非動畫可繪項目
如要進一步瞭解如何在應用程式中加入 Material Design 功能,請參閱「Material Design」。
「最近使用」畫面中的並行文件和活動
在先前版本中,
最近螢幕
只能在使用者互動的每個應用程式中顯示一項工作
最新。應用程式現在可視需要開啟更多工作,以便處理文件的其他並行活動。這項功能可讓使用者在「最近使用」畫面中快速切換個別活動和文件,並在所有應用程式中提供一致的切換體驗,方便使用者進行多工處理。這類並行工作的範例包括網頁中開啟的分頁
以及效率提升應用程式中的文件,在
或訊息應用程式中的即時通訊應用程式可以管理工作
透過 ActivityManager.AppTask
類別移除物件。
插入邏輯中斷情形,讓系統將活動視為新活動
工作,請在下列情況下使用 FLAG_ACTIVITY_NEW_DOCUMENT
使用 startActivity()
啟動活動。您也可以在資訊清單中,將 <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 裝置中選取圖片和檔案。
此外,這個版本支援 WebAudio、 WebGL 和 WebRTC 開放標準。 如要進一步瞭解此版本包含的新功能,請參閱 Android 版 WebView。
螢幕畫面擷取與分享
您可以使用 Android 5.0 中的新 android.media.projection
API,為應用程式新增螢幕擷取和螢幕分享功能。這項功能
舉例來說,如果您想啟用影片的分享螢幕畫面功能
會議通訊應用程式。
新的 createVirtualDisplay()
方法可讓應用程式將主畫面 (預設顯示畫面) 的內容擷取至 Surface
物件,然後應用程式可透過網路傳送該物件。這個 API 只允許擷取非安全的螢幕畫面內容,而非系統音訊。如要開始擷取螢幕畫面,應用程式必須先使用透過 createScreenCaptureIntent()
方法取得的 Intent
,啟動螢幕擷取對話方塊,要求使用者授予權限。
如需如何使用新 API 的範例,請參閱 MediaProjectionDemo
部分類別
通知
螢幕鎖定通知
Android 5.0 的螢幕鎖定功能可用於分享 通知。使用者可以透過「設定」選擇是否允許 顯示在安全的螢幕鎖定畫面上。
應用程式可控制其通知在安全螢幕鎖定畫面上顯示的詳細程度。如要控制瀏覽權限層級,請呼叫
「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 介面,並原生支援 OpenGL ES 3.1。OpenGL ES 3.1 提供的主要新功能包括:
- 運算著色器
- 分開著色器物件
- 間接繪圖指令
- 多重取樣和模板紋理
- 陰影語言改善
- 進階混合模式和偵錯的擴充功能
- 與 OpenGL ES 2.0 和 3.0 的回溯相容性
GLES31
提供 Android 適用於 OpenGL ES 3.1 的 Java 介面。使用 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
陳述式啟用著色語言功能)。
擴充功能套件支援以下項目:
- 保證著色器存放區緩衝區、圖片和原子可支援著色器片段 (在 OpenGL ES 3.1 中,可選支援著色器片段)。
- 茶敘和幾何著色器
- ASTC (LDR) 紋理壓縮格式
- 每樣本內插值和著色
- 影格緩衝區中每個顏色附件都有不同的混合模式
我們在
GLES31Ext
。您可以在應用程式資訊清單中宣告,應用程式只能安裝在支援擴充功能包的裝置上。例如:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
媒體
用於進階相機功能的相機 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
硬體等級的裝置可手動進行 掌握拍攝和後置處理,以及拍攝高解析度圖片 因此遊戲能以高畫面更新率運作
想瞭解如何使用
相機
API,請參閱 Camera2Basic
和 Camera2Video
實作
樣本
音訊播放
此版本包含下列變更:
AudioTrack
:
- 您的應用程式現在可以提供浮點格式的音訊資料
(
ENCODING_PCM_FLOAT
)。這個 可允許更大的動態範圍、更加一致的精確度以及更大的進步空間。 在中間計算時,浮點算術特別實用。 播放端點會使用整數格式處理音訊資料,且位元深度較低。(在 Android 5.0 中,內部管道的部分尚未為浮點)。 - 您的應用程式現在可以以
ByteBuffer
的格式提供音訊資料,格式與MediaCodec
提供的相同。 WRITE_NON_BLOCKING
選項可簡化某些應用程式的緩衝和多執行緒功能。
媒體播放控制項
使用新的通知和媒體 API,確保系統 UI 知道您的媒體播放內容,並能擷取及顯示專輯封面。有了新的 MediaSession
和 MediaController
類別,現在就能更輕鬆地在 UI 和服務中控制媒體播放作業。
新的 MediaSession
類別會取代
已淘汰的 RemoteControlClient
類別,並提供
一組用於處理傳輸控制項和媒體按鈕的回呼方法。
如果您的應用程式提供媒體播放功能,並在 Android 裝置上執行
電視節目或
Wear 平台,請使用
用於處理交通方式的 MediaSession
類別
控制項控制項,
您現在可以使用新版應用程式,打造自己的媒體控制器應用程式。
MediaController
類別。這個類別提供
透過符合執行緒安全的做法,從應用程式的 UI 程序監控及控制媒體播放。
建立控制器時,請指定 MediaSession.Token
物件,讓應用程式能夠與指定的 MediaSession
互動。您可以使用 MediaController.TransportControls
方法,傳送 play()
、stop()
、skipToNext()
和 setRating()
等指令,以便控制該工作階段的媒體播放。您也可以使用控制器註冊 MediaController.Callback
物件,以便監聽工作階段的中繼資料和狀態變更。
此外,你可以建立資訊豐富的通知,允許播放控制項
繫結於使用新版Notification.MediaStyle
的媒體工作階段
類別
媒體瀏覽
Android 5.0 推出了應用程式瀏覽媒體內容的功能
安裝新的應用程式庫
android.media.Browsing
也能使用 Google Cloud CLI 或
Compute Engine API如要在應用程式中公開媒體內容,請擴充
MediaBrowserService
類別。您實作 MediaBrowserService
時應提供 MediaSession.Token
的存取權,讓應用程式能夠播放透過服務提供的媒體內容。
如要與媒體瀏覽器服務互動,請使用
MediaBrowser
類別。指定元件
建立 MediaSession
名稱時
MediaBrowser
執行個體。應用程式可以使用該瀏覽器執行個體,連線至相關服務,並取得 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 或電信代扣網路。 或是想使用特定類型的傳輸通訊協定傳送資料
如要從應用程式動態選取並連線至網路,請按照下列步驟操作:
- 建立
ConnectivityManager
。 - 使用
NetworkRequest.Builder
類別建立NetworkRequest
物件,然後指定網路功能 以及應用程式感興趣的傳輸類型 - 如要掃描適合的網路,請呼叫
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 的彈性使用方式:
- Android Beam 現已在「分享」選單中提供。
- 您的應用程式可以呼叫
invokeBeam()
,在使用者的裝置上叫用 Android Beam 來分享資料。這樣一來,使用者就不必手動將裝置與其他支援 NFC 的裝置輕觸,才能完成資料傳輸。 - 您可以使用新的
createTextRecord()
方法建立包含 UTF-8 文字資料的 NDEF 記錄。 - 如果您正在開發付款應用程式,現在可以透過呼叫
registerAidsForService()
動態註冊 NFC 應用程式 ID (AID)。您也可以使用setPreferredService()
來設定偏好卡片模擬服務 當特定活動在前景運作時。
Project 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()
方法,讓應用程式不必經過使用者確認步驟即可固定。
啟用工作鎖定功能後,會發生下列行為:
- 狀態列空白,使用者通知和狀態資訊 隱藏。
- 隱藏「Home」和「最近使用的應用程式」按鈕。
- 其他應用程式無法啟動新活動。
- 只要不會建立新工作,目前的應用程式就能啟動新活動。
- 當裝置擁有者叫用螢幕固定功能時,使用者會一直鎖定在您的應用程式,直到應用程式呼叫
stopLockTask()
為止。 - 如果螢幕固定功能是由非裝置擁有者的其他應用程式啟用,或由使用者直接啟用,使用者可以同時按住「返回」和「近期」按鈕來退出。
列印架構
將 PDF 轉譯為點陣圖
您現在可以透過
使用新的 PdfRenderer
類別。您必須指定
可搜尋的 ParcelFileDescriptor
(即內容)
隨機存取),系統就會寫入可列印的內容。
您的應用程式可透過以下方式取得轉譯頁面:
openPage()
,然後撥號
render()
將開啟的 PdfRenderer.Page
轉換成點陣圖。如果您只想將文件的部分內容轉換為位圖圖片 (例如實作平鋪算繪以放大文件),也可以設定其他參數。
如需使用新 API 的範例,請參閱 PdfRendererBasic
範例。
系統
應用程式使用統計資料
你現在可以透過以下程式,在 Android 裝置上存取應用程式使用記錄:
全新 android.app.usage
API。這個 API 提供的用量資訊比已淘汰的 getRecentTasks()
方法更為詳盡。如要使用這個 API,您必須先在資訊清單中宣告 "android.permission.PACKAGE_USAGE_STATS"
權限。使用者也必須透過「設定」頁面啟用這個應用程式的存取權。安全性 >應用程式
授予使用權限
系統會針對個別應用程式收集使用資料, 按月、每週、每月和每年間隔內的資料。系統保留這類資料的時間上限如下:
- 每日資料:7 天
- 每週資料:4 週
- 每月資料:6 個月
- 年度資料:2 年
系統會針對每個應用程式記錄下列資料:
- 上次使用應用程式的時間
- 應用程式在該時間間隔內前景運作的總時間長度 (以天、週、月或年為單位)
- 擷取元件 (透過套件和活動名稱識別) 的時間戳記 1 天移至前景或背景
- 擷取裝置設定變更的時間戳記 (例如 裝置螢幕方向因旋轉而變更)
測試與無障礙功能
測試及無障礙功能改善
Android 5.0 新增下列測試支援 無障礙功能:
- 新的
getWindowAnimationFrameStats()
和getWindowContentFrameStats()
方法可擷取視窗動畫和內容的框架統計資料。這些方法 可用來撰寫檢測設備測試,評估應用程式是否轉譯 保持適當重新整理頻率,提供流暢的使用者體驗。 - 新的
executeShellCommand()
方法可讓您透過檢測設備測試執行 Shell 指令。指令執行作業類似於從連接至裝置的主機執行adb shell
,可讓您使用dumpsys
、am
、content
和pm
等殼層工具。 - 使用無障礙 API (例如
UiAutomator
) 的無障礙服務和測試工具,現在可以擷取有關螢幕上視障者可互動的視窗屬性的詳細資訊。如要擷取AccessibilityWindowInfo
物件,則呼叫新的getWindows()
方法。 - 新的
AccessibilityNodeInfo.AccessibilityAction
類別可讓您定義要對應用程式執行的標準或自訂動作AccessibilityNodeInfo
。 新的AccessibilityNodeInfo.AccessibilityAction
類別會取代先前在AccessibilityNodeInfo
。 - Android 5.0 讓您更精細地控管文字轉語音合成功能
新的
Voice
類別可讓應用程式 使用與特定語言、品質和延遲時間相關聯的語音設定檔 評分和文字轉語音引擎專屬參數
輸入法編輯器
更輕鬆地切換輸入語言
從 Android 5.0 開始,使用者可以更輕鬆切換
所有輸入內容
方法編輯器 (IME)。執行指定的
切換動作 (通常輕觸螢幕鍵盤上的地球圖示)
經由所有這類輸入法編輯器這項行為變更是由 shouldOfferSwitchingToNextInputMethod()
方法實作。
此外,架構現在會檢查下一個 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 及以上等級,則需要這項權限才能執行 Daydream 服務、 藉此確保只有系統可以繫結至該資料夾。