1. 程式人生 > >android 8.0新功能

android 8.0新功能


Android 8.0 為使用者和開發者引入多種新功能。本文重點介紹面向開發者的新功能。

請務必查閱 Android 8.0 行為變更以瞭解平臺變更可能影響您的應用的領域。

使用者體驗

通知

在 Android 8.0 中,我們已重新設計通知,以便為管理通知行為和設定提供更輕鬆和更統一的方式。這些變更包括:

Android 8.0 中的通知長按選單。

圖 1. 使用者可以長按應用啟動器圖示以檢視 Android 8.0 中的通知。

通知渠道:Android 8.0 引入了通知渠道,其允許您為要顯示的每種通知型別建立使用者可自定義的渠道。使用者介面將通知渠道稱之為通知類別。要了解如何實現通知渠道的資訊,請參閱通知渠道指南。通知標誌:Android 8.0 引入了對在應用啟動器圖示上顯示通知標誌的支援。通知標誌可反映某個應用是否存在與其關聯、並且使用者尚未予以清除也未對其採取行動的通知。通知標誌也稱為通知點。要了解如何調整通知標誌,請參閱
通知標誌
指南。休眠:使用者可以將通知置於休眠狀態,以便稍後重新顯示它。重新顯示時通知的重要程度與首次顯示時相同。應用可以移除或更新已休眠的通知,但更新休眠的通知並不會使其重新顯示。通知超時:現在,使用  建立通知時您可以設定超時。您可以使用此函式指定一個持續時間,超過該持續時間後,通知應取消。如果需要,您可以在指定的超時持續時間之前取消通知。通知設定:當您使用 Intent 從通知建立指向應用通知設定的連結時,您可以呼叫 setSettingsText() 來設定要顯示的文字。此係統可以提供以下 Extra 資料和 Intent,用於過濾應用必須向用戶顯示的設定:EXTRA_CHANNEL_ID
NOTIFICATION_TAG 和 NOTIFICATION_ID。通知清除:系統現在可區分通知是由使用者清除,還是由應用移除。要檢視清除通知的方式,您應實現  類的新  函式。背景顏色:您現在可以設定和啟用通知的背景顏色。只能在使用者必須一眼就能看到的持續任務的通知中使用此功能。例如,您可以為與駕車路線或正在進行的通話有關的通知設定背景顏色。您還可以使用  設定所需的背景顏色。這樣做將允許您使用  啟用通知的背景顏色設定。訊息樣式:現在,使用  類的通知可在其摺疊形式中顯示更多內容。對於與訊息有關的通知,您應使用  類。您還可以使用新的  函式,通過向與訊息相關的通知新增歷史訊息為會話提供上下文。

自動填充框架

帳號建立、登入和信用卡交易需要時間並且容易出錯。在使用要求執行此類重複性任務的應用時,使用者很容易遭受挫折。

Android 8.0 通過引入自動填充框架,簡化了登入和信用卡表單之類表單的填寫工作。在使用者選擇接受自動填充之後,新老應用都可使用自動填充框架。

您可以採取某些措施,優化您的應用使用此框架的方式。如需瞭解詳細資訊,請參閱自動填充框架概覽

畫中畫模式

Android 8.0 允許以畫中畫 (PIP) 模式啟動操作元件。PIP 是一種特殊的多視窗模式,最常用於視訊播放。目前,PIP 模式可用於 Android TV,而 Android 8.0 則讓該功能可進一步用於其他 Android 裝置。

當某個 Activity 處於 PIP 模式時,它會處於暫停狀態,但仍應繼續顯示內容。因此,您應確保您的應用在  處理程式中進行處理時不會暫停播放。相反,您應在  中暫停播放視訊,並在  中繼續播放。如需瞭解詳細資訊,請參閱多視窗生命週期

要指定您的 Activity 可以使用 PIP 模式,請在清單中將 android:supportsPictureInPicture 設定為 true。(從 Android 8.0 開始,如果您打算在 Android TV 或其他 Android 裝置上支援 PIP 模式,則無需將 android:resizeableActivity 設定為 true;只有在您的 Activity 支援其他多視窗模式時,才需要設定 android:resizeableActivity。)

API 變更

Android 8.0 引入一種新的物件 ,您可以將該物件傳遞給 PIP 函式來指定某個 Activity 在其處於 PIP 模式時的行為。此物件還指定了各種屬性,例如操作元件的首選縱橫比。

現在,在新增畫中畫中介紹的現有 PIP 函式可用於所有 Android 裝置,而不僅限於 Android TV。此外,Android 8.0 還提供以下函式來支援 PIP 模式:

  • :將操作元件置於畫中畫模式。操作元件的縱橫比和其他配置設定均由 args 指定。如果 args 中的任何欄位為空,系統將使用您上次呼叫  時所設定的值。

    指定的操作元件被置於螢幕的一角,螢幕剩餘部分則被螢幕顯示的上一個操作元件填滿。進入 PIP 模式的 Activity 將進入暫停狀態,但仍保持已啟動狀態。如果使用者點按此 PIP 操作元件,系統將顯示一個選單供使用者操作,而在操作元件處於 PIP 狀態期間,不會理會任何觸控事件。

  • :更新操作元件的 PIP 配置設定。如果操作元件目前處於 PIP 模式,則會更新此設定;如果操作元件的縱橫比發生變化,這非常有用。如果操作元件不處於 PIP 模式,則會使用這些配置設定,而不會考慮您呼叫的 enterPictureInPictureMode() 函式。

可下載字型

Android 8.0 和 Android 支援庫 26 允許您從提供程式應用請求字型,而無需將字型繫結到 APK 中或讓 APK 下載字型。此功能可減小 APK 大小,提高應用安裝成功率,使多個應用可以共享同一種字型。

如需瞭解有關下載字型的詳細資訊,請參閱 可下載字型

XML 中的字型

Android 8.0 推出一項新功能,即 XML 中的字型,允許您使用字型作為資源。這意味著,不再需要以資產的形式捆綁字型。字型在 R 檔案中編譯,並且作為一種資源,可自動用於系統。然後,您可以利用一種新的資源型別 font 來訪問這些字型。

在執行 API 版本 14 及更高版本的裝置中,支援庫 26 對此功能提供完全支援。

如需瞭解有關以資源形式使用字型以及檢索系統字型有關的詳細資訊,請參閱 XML 中的字型

自動調整 TextView 的大小

Android 8.0 允許您根據 TextView 的大小自動設定文字展開或收縮的大小。這意味著,在不同螢幕上優化文字大小或者優化包含動態內容的文字大小比以往簡單多了。如需瞭解有關如何在 Android 8.0 中自動調整 TextView 的大小的詳細資訊,請參閱自動調整 TextView 的大小

自適應圖示

Android 8.0 引入自適應啟動器圖示。自適應圖示支援視覺效果,可在不同裝置型號上顯示為各種不同的形狀。要了解如何建立自適應圖示,請參閱自適應圖示預覽功能指南。

顏色管理

影象應用的 Android 開發者現在可以利用支援廣色域彩色顯示的新裝置。要顯示廣色域影象,應用需要在其清單(每個操作元件)中啟用一個標誌,並載入具有嵌入的廣域彩色配置檔案(AdobeRGB、Pro Photo RGB、DCI-P3 等)的點陣圖。

WebView API

Android 8.0 提供多種 API,幫助您管理在應用中顯示網頁內容的  物件。這些 API 可增強應用的穩定性和安全性,它們包括:

  • Version API
  • Google SafeBrowsing API
  • Termination Handle API
  • Renderer Importance API

要詳細瞭解如何這些 API,請參閱管理 WebView

固定快捷方式和小部件

Android 8.0 引入了快捷方式和微件的應用內固定功能。在您的應用中,您可以根據使用者許可權為支援的啟動器建立固定的快捷方式和小部件。

如需瞭解詳細資訊,請參閱固定快捷方式和微件預覽功能指南。

最大螢幕縱橫比

以 Android 7.1(API 級別 25)或更低版本為目標平臺的應用預設的最大螢幕縱橫比為 1.86。針對 Android 8.0 或更高版本的應用沒有預設的最大縱橫比。如果您的應用需要設定最大縱橫比,請使用定義您的操作元件的清單檔案中的 maxAspectRatio 屬性。

多顯示器支援

從 Android 8.0 開始,此平臺為多顯示器提供增強的支援。如果 Activity 支援多視窗模式,並且在具有多顯示器的裝置上執行,則使用者可以將 Activity 從一個顯示器移動到另一個顯示器。當應用啟動 Activity 時,此應用可指定 Activity 應在哪個顯示器上執行。

注:如果 Activity 支援多視窗模式,則 Android 8.0 將為該 Activity 自動啟用多顯示器支援。您應測試您的應用,確保它在多顯示器環境下可正常執行。

每次只有一個 Activity 可以處於繼續狀態,即使此應用具有多個顯示器。具有焦點的 Activity 將處於繼續狀態,所有其他可見的 Activity 均暫停,但不會停止。如需瞭解有關當多個 Activity 可見時活動生命週期的詳細資訊,請參閱多視窗生命週期

當用戶將 Activity 從一個顯示器移動到另一個顯示器時,系統將調整 Activity 大小,並根據需要發起執行時變更。您的 Activity 可以自行處理配置變更,或允許系統銷燬包含該 Activity 的程序,並以新的尺寸重新建立它。如需瞭解詳細資訊,請參閱處理配置變更

對 adb shell 進行了擴充套件,以支援多個顯示器。shell start 命令現在可用於啟動操作元件,並指定操作元件的目標顯示器:

adb shell start <activity_name> --display <display_id>

統一的佈局外邊距和內邊距

Android 8.0 讓您可以更輕鬆地指定 View 元素的對邊使用相同外邊距和內邊距的情形。具體來說,您現在可以在佈局 XML 檔案中使用以下屬性:

指標捕獲

某些應用(例如遊戲、遠端桌面和虛擬化客戶端)將大大受益於滑鼠指標控制。指標捕獲是 Android 8.0 中的一項新功能,可以通過將所有滑鼠事件傳遞到您的應用中焦點檢視的方式提供此類控制。

從 Android 8.0 開始,您的應用中的 View 可以請求指標捕獲並定義一個偵聽器來處理捕獲的指標事件。滑鼠指標在此模式下將隱藏。如果不再需要滑鼠資訊,該檢視可以釋放指標捕獲。系統也可以在檢視丟失焦點時(例如,當用戶開啟另一個應用時)釋放指標捕獲。

如需瞭解有關如何在您的應用中使用此功能的資訊,請參閱指標捕獲

應用類別

在適當的情況下,Android 8.0 允許每個應用宣告其所屬的類別。這些類別用於將應用呈現給使用者的用途或功能類似的應用歸類在一起,例如按流量消耗、電池消耗和儲存消耗將應用歸類。您可以在 <application> 清單標記中設定 android:appCategory 屬性,定義應用的類別。

Android TV 啟動器

Android 8.0 添加了一種以內容為中心的全新 Android TV 主螢幕體驗,支援 Android TV 模擬器和 Nexus Player Android 8.0 裝置映像。新的主螢幕在對應於頻道的行中組織視訊內容,這些頻道在系統上通過應用填充各個節目。應用可以釋出多個頻道,使用者可以配置他們希望在主螢幕上看到哪些頻道。Android TV 也包含一個 Watch Next 行,此行根據使用者的觀看習慣從應用填充節目。應用也可以提供視訊預覽,這些預覽會在使用者聚焦到節目時自動播放。用於填充頻道和節目的 API 屬於 TvProvider API,這些 API 以 Android 支援庫模組的形式隨 Android 8.0 分發。

AnimatorSet

從 Android 8.0 開始, API 現在支援尋道和倒播功能。尋道功能允許您將動畫的位置設定為指定的時間點處。如果您的應用包含可撤消的操作的動畫,倒播功能會很有用。現在,您不必定義兩組獨立的動畫,而只需反向播放同一組動畫。

輸入和導航

鍵盤導航鍵區

如果您的應用中,某個操作元件使用一種複雜的檢視層次結構(如圖 2 所示),可考慮將多組介面元素組成一個鍵區,簡化鍵盤導航這些元素的操作。使用者可以在 Chromebook 裝置上按 Meta+Tab 或 Search+Tab,在不同鍵區之間導航。鍵區的一些範例包括:側面板、導航欄、主內容區域和可能包含多個子元素的元素。

以一個包含五個導航鍵區的操作元件為例,使用者可以使用鍵盤導航鍵區快捷鍵進行導航。鍵區按以下佈局顯示:頂部面板、左側面板、主內容區域、底部面板和浮動操作按鈕。圖 2. 包含 5 個鍵區的操作元件

:鍵區不能巢狀,不過,非巢狀鍵區可以顯示在層次結構的不同層級。如果您嘗試巢狀鍵區,框架僅會將最頂層的  元素視為鍵區。

在具有觸控式螢幕的裝置中,您可以將某個鍵區指定的  物件的 android:touchscreenBlocksFocus 元素設定為 true,僅允許從鍵區導航進入和離開此鍵區。如果您將此配置應用於某個鍵區,使用者將無法使用 Tab 鍵或箭頭鍵導航進入或離開此鍵區,而是必須按鍵區導航鍵盤組合鍵。

檢視預設焦點

在 Android 8.0 中,您可以指定在(重新)建立的操作元件繼續執行並且使用者按下鍵盤導航鍵(例如 Tab 鍵)之後應接收焦點的 View。要應用“設為預設焦點”設定,請在包含介面元素的佈局 XML 檔案中將 View 元素的 android:focusedByDefault 屬性設定為 true,或者將 true 傳遞至應用介面邏輯中的 。

系統

新的 StrictMode 檢測程式

Android 8.0 添加了三個新的 StrictMode 檢測程式,幫助識別應用可能出現的錯誤:

快取資料

Android 8.0 優化了快取資料的導航和行為。現在,每個應用均獲得一定的磁碟空間配額,用於儲存  返回的快取資料。

當系統需要釋放磁碟空間時,將開始從超過配額最多的應用中刪除快取檔案。因此,如果將您的快取資料量始終保持低於配額的水平,則在必須清除系統中的某些檔案時,您的快取檔案將能堅持到最後。系統在決定刪除您的應用中的哪些快取檔案時,將首先考慮刪除最舊的檔案(由修改時間確定)。

您還可以針對每個目錄啟用兩種新行為,以控制系統如何釋放快取資料:

  • StorageManager.setCacheBehaviorAtomic() 可用於指示某個目錄及其所有內容應作為一個不可分割的整體進行刪除。

最後,在需要為大檔案分配磁碟空間時,可考慮使用新的  API,它將自動清除屬於其他應用的快取檔案(根據需要),以滿足您的請求。在確定裝置是否有足夠的磁碟空間儲存您的新資料時,請呼叫  而不要使用 ,因為前者會考慮系統要為您清除的任何快取資料。

內容提供程式分頁

我們已更新內容提供程式以支援載入大型資料集,每次載入一頁。例如,一個具有大量影象的照片應用可查詢要在頁面中顯示的資料的子集。內容提供程式返回的每個結果頁面由一個 Cursor 物件表示。客戶端和提供程式必須實現分頁才能利用此功能。

內容重新整理請求

現在, 和  類均包含 refresh() 函式,這樣,客戶端可以更輕鬆地知道所請求的資訊是否為最新資訊。

您可以擴充套件  以新增自定義的內容重新整理邏輯。請務必重寫  函式,以返回 true,告知提供程式的客戶端您已嘗試自行重新整理資料。

您的客戶端應用可通過呼叫另一個函式(又稱 ),顯式請求已重新整理的內容。在呼叫此函式時,傳入待重新整理資料的 URI。

:由於您可能通過網路不斷請求資料,您應僅在有明顯跡象表明內容確已過時時才從客戶端呼叫 。執行此類內容重新整理最常見的原因是響應滑動重新整理手勢,該手勢顯式請求當前介面顯示最新內容。

JobScheduler 改進

Android 8.0 引入了對  的多項改進。由於您通常可以使用計劃作業替代現在受限的後臺服務或隱式廣播接收器,這些改進可以讓您的應用更輕鬆地符合新的後臺執行限制

  • 您現在可以將工作佇列與計劃作業關聯。要將一個工作項新增到作業的佇列中,請呼叫 JobScheduler.enqueue()。當作業執行時,它可以將待定工作從佇列中剝離並進行處理。這種功能可以處理之前需要啟動後臺服務(尤其是實現  的服務)的許多用例。
  • 計劃作業現在支援多個新的約束條件:

自定義資料儲存

Android 8.0 允許您為首選項提供自定義資料儲存,如果您的應用將首選項儲存在雲或本地資料庫中,或者如果首選項特定於某個裝置,此功能會非常有用。如需瞭解有關實現資料儲存的詳細資訊,請參閱自定義資料儲存

findViewById() 簽名變更

現在,findViewById() 函式的全部例項均返回 <T extends View> T,而不是 View。此變更會帶來以下影響:

  • 例如,如果 someMethod(View) 和 someMethod(TextView) 均接受呼叫 findViewById() 的結果,這可能導致現有程式碼的返回型別不確定。
  • 在使用 Java 8 源語言時,這需要在返回型別不受限制時(例如,assertNotNull(findViewById(...)).someViewMethod()))顯式轉換為 View
  • 重寫非最終的 findViewById() 函式(例如,Activity.findViewById())將需要更新其返回型別。

媒體增強功能

VolumeShaper

有一個新的 VolumeShaper 類。您可以用它來執行簡短的自動音量轉換,例如淡入、淡出和交叉淡入淡出。

音訊焦點增強功能

音訊應用通過請求和捨棄音訊焦點的方式在裝置上共享音訊輸出。應用通過啟動或停止播放或者閃避音量的方式處理處於聚焦狀態的變更。有一個新的 AudioFocusRequest 類。對於此類,應用在處理音訊焦點變化時會使用新功能自動閃避延遲聚焦

媒體指標

新的 getMetrics() 函式將返回一個包含配置和效能資訊的  物件,用一個包含屬性和值的地圖表示。為以下媒體類定義 getMetrics() 函式:

為每個例項單獨收集指標,並持續到例項的生命週期結束為止。如果沒有可用的指標,則此函式將返回 null。返回的實際指標取決於類。

MediaPlayer

Android 8.0 為 MediaPlayer 類添加了多種新函式。這些函式可以從多個方面增強您的應用處理媒體播放的能力:

  • 搜尋幀時進行精細控制。

MediaPlayer 現在支援取樣級加密

音訊錄製器

  • 音訊錄製器現在支援對流式傳輸有用的 MPEG2_TS 格式:
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
  •  現在可以處理任意數量的音訊和視訊流,而不再僅限於一個音訊曲目和/或一個視訊曲目。使用  可混錄所需的任意數量的曲目。
  •  還可以新增一個或多個包含使用者定義的每幀資訊的元資料曲目。元資料的格式由您的應用定義。僅對 MP4 容器支援元資料曲目。

元資料可以用於離線處理。例如,感測器的陀螺儀訊號可以用於執行視訊穩定操作。

在新增元資料曲目時,曲目的 MIME 格式必須以字首“application/”開頭。除了資料不是來源於 MediaCodec 以外,寫入元資料的操作與寫入視訊/音訊資料相同。相反,應用將包含相關時間戳的 ByteBuffer 傳遞給  函式。時間戳必須和視訊及音訊曲目處於相同的時基。

生成的 MP4 檔案使用 ISOBMFF 的 12.3.3.2 部分定義的 TextMetaDataSampleEntry,指示元資料的 MIME 格式。在使用  提取包含元資料曲目的檔案時,元資料的 MIME 格式將提取到  中。

音訊播放控制

Android 8.0 允許您查詢和請求裝置產生聲音的方式。對音訊播放的以下控制將讓您的服務更輕鬆地僅在有利的裝置條件下產生聲音。

Google 智慧助理的新音訊使用型別

裝置音訊播放的變更

顯式請求音訊焦點

您的服務可以使用  函式提交一個更精細的裝置級音訊焦點接收請求。傳入一個 AudioFocusRequest 物件,您可以使用 AudioFocusRequest.Builder 建立這個物件。在這個構建類中,您可以指定以下選項:

  • 您希望獲得的焦點型別,例如 AUDIOFOCUS_GAIN_TRANSIENT 或 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
  • 當另一個音訊服務獲得裝置焦點時,您的服務應以更安靜的方式繼續,還是完全暫停。
  • 您的服務能否等待獲得焦點,直至裝置就緒。

:構建您的 AudioFocusRequest 例項時,如果您通過呼叫 setAcceptsDelayedFocusGain() 指示您的服務可以等待產生聲音,您也必須呼叫 setOnAudioFocusChangeListener(),以便您的服務瞭解它何時可以開始產生聲音。

增強的媒體檔案訪問功能

儲存訪問框架 (SAF) 允許應用顯示自定義 ,後者可以為其他應用提供訪問資料來源中的檔案的許可權。事實上,文件提供程式甚至可以提供駐留在網路儲存區或使用媒體傳輸協議 (MTP) 等協議的檔案的訪問許可權。

但是,訪問遠端資料來源中的大媒體檔案面臨一些挑戰:

  • 媒體播放器需要以定址方式訪問來自文件提供程式的檔案。當大媒體檔案駐留在遠端資料來源上時,文件提供程式必須事先提取所有資料,並建立快照檔案描述符。媒體播放器無法播放沒有檔案描述符的檔案,因此在文件提供程式完成檔案下載前,無法開始播放。
  • 照片應用等媒體集合管理器必須通過作用域資料夾遍歷一系列訪問 URI 才能訪問儲存在外部 SD 卡上的媒體。這種訪問模式會讓媒體上的批量操作(例如移動、複製和刪除)變得非常緩慢。
  • 媒體集合管理器無法根據文件的 URI 確定其位置。這就讓這些型別的應用難以允許使用者選擇媒體檔案的儲存位置。

Android 8.0 通過改進儲存訪問框架解決了各個挑戰。

自定義文件提供程式

從 Android 8.0 開始,儲存訪問框架允許自定義文件提供程式為駐留在遠端資料來源中的檔案建立可定址的檔案描述符。SAF 可開啟檔案,獲取原生可定址的檔案描述符。然後 SAF 向文件提供程式提交離散位元組請求。此功能使文件提供程式可以返回媒體播放器應用請求的準確位元組範圍,而不必事先快取整個檔案。

直接文件訪問

從 Android 8.0 開始,您可以使用  函式獲得與給定 mediaUri 引用相同文件的 URI。不過,由於返回的 URI 由 提供支援,媒體集合管理器可以直接訪問文件,不用遍歷作用域目錄樹。因此,媒體管理器能夠以明顯加快的速度對文件執行檔案操作。

注意: 函式僅可以定位媒體檔案;無法授予應用訪問這些檔案的許可權。要詳細瞭解如何獲取媒體檔案的訪問許可權,請參閱參考文件。

文件路徑

在 Android 8.0 中使用儲存訪問框架時,您可以根據文件的 ID,使用 findDocumentPath() 函式(存在於  和 類中)從檔案系統的根目錄中確定路徑。該函式將在  物件中返回此路徑。如果檔案系統對相同文件有多個定義的路徑,該函式將返回訪問具有給定 ID 的文件時最常使用的路徑。

此功能在下列情況下特別有用:

  • 您的應用使用可以顯示特定文件位置的“另存為”對話方塊。
  • 您的應用在搜尋結果檢視中顯示資料夾並且如果使用者選擇某個資料夾,應用必須載入此特定資料夾內的子文件。

:如果您的應用僅具有路徑中某些文件的訪問許可權,那麼 findDocumentPath() 的返回值將僅包含您的應用可以訪問的資料夾和文件。

連線

WLAN 感知

Android 8.0 新增了對 WLAN 感知的支援,此技術基於周邊感知聯網 (NAN) 規範。在具有相應 WLAN 感知硬體的裝置上,應用和附近裝置可以通過 WLAN 進行搜尋和通訊,無需依賴網際網路接入點。我們正在與硬體合作伙伴合作,以儘快將 WLAN 感知技術應用於裝置。要了解有關如何將 WLAN 感知整合到您的應用中的資訊,請參閱 WLAN 感知

藍芽

Android 8.0 通過增加以下功能,增強了平臺對藍芽的支援:

  • 支援 AVRCP 1.4 標準,該標準支援音樂庫瀏覽。
  • 支援藍芽低功耗 (BLE) 5.0 標準。
  • 將 Sony LDAC 編解碼器整合到藍芽堆疊中。

配套裝置配對

在嘗試通過藍芽、BLE 和 WLAN 與配套裝置配對時,Android 8.0 提供的 API 允許您自定義配對請求對話方塊。如需瞭解詳細資訊,請參閱配套裝置配對

如需瞭解有關在 Android 上使用藍芽的詳細資訊,請參閱藍芽指南。有關對藍芽所作的特定於 Android 8.0 的變更,請參閱 Android 8.0 行為變更頁面的藍芽部分。

共享

智慧共享

Android 8.0 瞭解使用者的個性化分享首選項,在通過哪些應用分享各個型別的內容方面,也有著更好的把握。例如,如果使用者為一張收據拍照,Android 8.0 可以建議費用跟蹤應用;如果使用者自拍,一款社交媒體應用可以更好地處理影象。Android 8.0 可以根據使用者的個性化首選項自動學習所有這些模式。

智慧分享適用於 image 之外的內容型別,例如 audiovideotext 和 URL 等。

要啟用智慧分享,請將具有最多三個字串註釋的  新增到分享內容的 intent。這些註釋應說明內容中的主要部分或主題。下面的程式碼示例顯示瞭如何向 intent 添加註釋:

ArrayList<String> annotations =newArrayList<>();

annotations.add("topic1");
annotations.add("topic2");
annotations.add("topic3");

intent.putStringArrayListExtra(Intent.EXTRA_CONTENT_ANNOTATIONS,
    annotations
);

智慧文字選擇

在相容裝置上,Android 8.0 讓應用可以幫助使用者以更有意義的方式與文字互動。當用戶長按某個實體中可識別格式的單詞(例如某個地址或餐館名稱)時,系統會選中整個實體。使用者會看到一個浮動工具欄,該工具欄包含可以處理所選文字實體的應用。例如,如果系統識別出某個地址,它可以將使用者導向地圖應用。

系統識別的實體包括地址、網址、電話號碼和電子郵件地址。如需瞭解詳細資訊,請參閱 。

無障礙功能

Android 8.0 支援開發者使用以下無障礙功能建立自己的無障礙服務。如需瞭解有關如何讓您的應用更便於訪問的更多資訊,請參閱無障礙功能

無障礙功能按鈕

:此功能僅適用於提供軟體渲染導航區域的裝置。請始終使用 ,並通過實現 根據無障礙功能按鈕的可用性來響應變更。通過該方式,使用者可以始終訪問您的服務功能,即使該無障礙功能按鈕不受支援或變得不可用。

獨立的音量調整

Android 8.0 引入了  音量類別,允許您單獨控制無障礙服務音訊輸出的音量,而不會影響裝置上的其他聲音。

指紋手勢

您的無障礙服務也可以響應替代的輸入機制,即沿裝置的指紋感測器按特定方向滑動(上、下、左和右)。要接收有關這些互動的回撥,請完成以下一系列步驟:

字詞級突出顯示

如果您的服務使用  物件朗讀螢幕上出現的內容,您可以獲取有關文字到語音轉換引擎何時開始朗讀單個合成字詞時的準確時間資訊,前提是文字到語音轉換引擎提供此資訊。當引擎即將開始播放特定範圍文字的音訊時,Text-to-Speech API 會通知您的服務,將使用  函式開始朗讀此範圍的文字。

標準化單端範圍值

提示文字

Android 8.0 包含可用於與文字可編輯物件的提示文字進行互動的多個函式:

連續的手勢分派

安全性與隱私

許可權

Android 8.0 引入了多個與電話有關的新許可權:

這些許可權均被劃分為危險類別,屬於 PHONE 許可權組。

新的帳號訪問和 Discovery API

Android 8.0 對應用訪問使用者帳號的方式引入多項改進。對於由身份驗證器管理的帳號,身份驗證器在決定對應用隱藏帳號還是顯示帳號時可以使用自己的策略。Android 系統跟蹤可以訪問特定帳號的應用。

API 變更

AccountManager 提供六個新函式以幫助身份驗證器管理哪些應用可以檢視某個帳號:

Google Safe Browsing API

 類現在添加了一個 Safe Browsing API 來增強網路瀏覽的安全性。如需瞭解詳細資訊,請參閱 Google Safe Browsing API

測試

儀器測試

Android 8.0 為應用的儀器測試提供以下幾項額外支援。

針對非預設應用程序執行

現在,您可以指定針對您的應用的預設程序以外的程序執行特定儀器測試。如果您的應用包含多個在不同程序中執行的操作元件,此配置非常有用。

要定義非預設程序儀器測試,請導航至您的清單檔案,然後導航至所需的 <instrumentation> 元素。新增 android:targetProcess 屬性,並將它的值設定為以下值之一:

  • 特定程序的名稱。
  • 以逗號分隔的程序名稱列表。
  • 萬用字元("*"),允許針對任何執行 android:targetPackage 屬性中指定的軟體包中的程式碼的已啟動程序執行儀器測試。

在執行儀器測試時,您可以通過呼叫  檢查正在測試哪個程序。

在測試過程中報告結果

現在,通過呼叫 ,您可以在執行儀器測試時(而不用等到測試後)報告結果。

用於測試的模擬 Intent

為了更輕鬆地為您應用的操作元件建立隔離、獨立的介面測試,Android 8.0 引入了  函式。要處理您的測試類呼叫的特定 intent,您可以在  類的自定義子類中替換此函式。

當您的測試類呼叫 intent 時,該函式將返回一個存根  物件,而不是執行 intent 本身。通過在您的測試中使用這種模擬 intent 邏輯,您可以側重於自己的操作元件如何準備和處理您傳遞到不同操作元件或完全不同的應用中的 intent。

執行時和工具

平臺優化

Android 8.0 為平臺引入了執行時優化和其他優化,這些優化將帶來多項效能改進。這些優化包括併發壓縮垃圾回收、更有效的記憶體利用和程式碼區域。

它們可以加快啟動時間,併為 OS 和應用帶來更好的效能。

更新的 Java 支援

Android 8.0 添加了對更多 OpenJDK Java API 的支援:

要詳細瞭解這些新新增的軟體包中的類和函式,請參閱 API 參考文件。

更新的 ICU4J Android Framework API

Android 8.0 擴充套件了 ICU4J Android 框架 API—,它是 ICU4J API 的子集—,供應用開發者在 android.icu 軟體包中使用。這些 API 使用裝置上具有的本地化資料。因此,您無需在 APK 中編譯 ICU4J 庫,從而減少 APK 佔用空間。

表 1. Android 中使用的 ICU、CLDR 和 Unicode 版本。

Android API 級別 ICU 版本 CLDR 版本 Unicode 版本
Android 7.0(API 級別 24),Android 7.1(API 級別 25) 56 28 8.0
Android 8.0 58.2 30.0.3 9.0
如需詳細瞭解針對受支援的 ICU4J API 的更新,請閱讀版本說明

Android 企業版

已為執行 Android 8.0 的裝置引入新的企業功能和 API。重要功能包括如下:

  • 完全託管的裝置中的工作資料使企業可以在管理工作資料與個人資料的同時,將它們分離開來。
  • API 委派允許裝置所有者和個人資料所有者將應用管理分配給其他應用。
  • 配置流程中的使用者體驗改進措施(包含新的自定義選項)縮短了設定時間。
  • 藍芽、WLAN、備份和安全性方面的新增控制選項使企業可以更精細地管理裝置。網路操作元件日誌記錄可幫助企業追查問題。

如需詳細瞭解上述及其他新增 Android 企業版 API 和功能,請參閱企業中的 Android