Android 10 功能與 API

Android 10 為使用者和開發人員推出了多項優異功能。本文將說明開發人員可用的功能。

如要瞭解這些 API,請參閱 API 差異比較表或前往 Android API 參考資料,尋找「在 API 級別 29 中新增」的 API。此外,請務必查看 Android 10 行為變更 (適用於指定 API 級別 29 的應用程式所有應用程式),以及隱私權變更,瞭解平台變更可能對應用程式造成的影響。

安全性增強項目

Android 10 推出多項安全性功能,下列各節會概述這些功能。

改善生物特徵辨識驗證對話方塊

Android 10 針對生物特徵辨識驗證支援功能推出了以下改善措施:

  • 檢查生物特徵辨識驗證功能。
  • 備用機制,可讓使用者在無法使用生物特徵辨識輸入方式驗證時,使用裝置 PIN 碼、解鎖圖案或密碼驗證。
  • 提示,告知系統在使用者使用隱含的生物特徵辨識模式完成驗證後,不必要求使用者確認。舉例來說,您可以告訴系統,在使用者使用臉部驗證進行驗證後,系統不應要求進一步確認。

直接從 APK 執行嵌入式 DEX 程式碼

自 Android 10 起,您可以指示平台直接從應用程式的 APK 檔案執行嵌入式 DEX 程式碼。如果攻擊者利用裝置上的本機編譯程式碼執行竄改攻擊,這種做法可協助防範。

詳情請參閱「直接從 APK 執行嵌入式 DEX 程式碼」。

TLS 1.3 支援

Android 10 新增了對 TLS 1.3 的支援。的支援功能。TLS 1.3 是 TLS 標準的重大改版,效能和安全性都有所提升。根據我們的基準,TLS 1.3 建立安全連線的速度比 TLS 1.2 快 40%。

如要進一步瞭解我們實作 TLS 1.3 的相關資訊,請參閱「所有應用程式的行為變更」頁面中的 TLS 專區。

公用 Conscrypt API

自 Android 10 起,Conscrypt 安全性供應器便包含了 TLS 功能的公開 API。

android.net.ssl 底下的類別集合包含靜態方法,可存取一般 javax.net.ssl API 無法提供的功能。這些類別的名稱可推斷為相應 javax.net.ssl 類別的複數。舉例來說,針對 javax.net.ssl.SSLSocket 例項運作的程式碼可以改用 SSLSockets 的方法。

連線功能

Android 10 包含多項與網路和連線相關的改善項目。

Wi-Fi 網路連線 API

Android 10 新增對點對點連線的支援。這項功能可讓應用程式使用 WifiNetworkSpecifier 描述要求網路的屬性,進而提示使用者變更裝置連線的存取點。點對點連線用於非網路提供目的,例如 Chromecast 和 Google Home 硬體等次要裝置的引導設定。

詳情請參閱「用於點對點連線的 Wi-Fi Network Request API」。

Wi-Fi 網路建議 API

Android 10 新增了支援功能,可讓您的應用程式提示使用者連線至 Wi-Fi 存取點。您可以提供建議,指出要連線至哪個網路。平台最終會根據您和其他應用程式的輸入內容,選擇要接受哪個存取點。

如要進一步瞭解這項功能,請參閱「建議使用 Wi-Fi 網路」。

改善 Wi-Fi 高效能和低延遲模式

在 Android 10 中,您可以向基礎數據機提供提示,以盡量減少延遲時間。

Android 10 擴充 Wi-Fi 鎖定 API,有效支援高效能模式和低延遲模式。在高效能和低延遲模式下,系統會停用 Wi-Fi 省電功能,並視調製解調器支援情況,在低延遲模式下啟用進一步的延遲最佳化功能。

只有在取得鎖定權限的應用程式在前景運作且螢幕開啟時,系統才會啟用低延遲模式。低延遲模式特別適合即時行動遊戲應用程式。

DNS 解析器中的專屬查詢

Android 10 新增原生支援功能,可同時使用明文查詢和 DNS-over-TLS 模式,專門處理 DNS 查詢。先前,平台 DNS 解析器僅支援 A 和 AAAA 記錄,因此只能查詢與名稱相關聯的 IP 位址,但不支援任何其他記錄類型。DnsResolver API 提供一般非同步解析,可讓您查詢 SRVNAPTR 和其他記錄類型。請注意,剖析回應會留在應用程式中執行。

如需以 NDK 為基礎的應用程式,請參閱 android_res_nsend 的說明。

Wi-Fi 輕鬆連線

在 Android 10 中,您可以使用 Easy Connect 為對等裝置設定 Wi-Fi 憑證,取代已淘汰的 WPS。應用程式可以使用 ACTION_PROCESS_WIFI_EASY_CONNECT_URI 意圖,將 Easy Connect 整合至設定和佈建流程。

如要進一步瞭解這項功能,請參閱「Wi-Fi Easy Connect」。

Wi-Fi Direct 連線 API

WifiP2pConfigWifiP2pManager API 類別在 Android 10 中進行更新,以便使用預先決定的資訊,支援快速建立 Wi-Fi Direct 連線的功能。這項資訊會透過藍牙或 NFC 等側邊管道分享。

以下程式碼範例說明如何使用預先設定的資訊建立群組:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

如要使用憑證加入群組,請將 manager.createGroup() 替換為以下內容:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE 連線導向通道 (CoC)

Android 10 可讓應用程式使用 BLE CoC 連線,在兩部 BLE 裝置之間傳輸較大的資料串流。這個介面會擷取藍牙和連線機制,簡化實作程序。

電話功能

Android 10 包含多項與電話相關的改善項目。

改善通話品質

Android 10 新增了收集資訊的功能,可在支援這項功能的裝置上收集 IP Multimedia Subsystem (IMS) 通話的品質資訊,包括通話與網路的品質。

來電過濾和來電顯示

Android 10 為您的應用程式提供一種方法,可將不在使用者通訊錄中的通話視為潛在的垃圾來電,並代表使用者將垃圾來電靜默拒接。系統會將這些遭封鎖的通話資訊記錄為通話記錄中的封鎖通話,以便使用者在錯過通話時獲得更透明的資訊。使用這個 API 後,您就不需要取得使用者的 READ_CALL_LOG 權限,即可提供通話篩選和來電者 ID 功能。

來電轉接服務 API

Android 10 會變更呼叫意圖的處理方式。NEW_OUTGOING_CALL 廣播已淘汰,並由 CallRedirectionService API 取代。CallRedirectionService API 提供介面,可讓您修改 Android 平台發出的呼叫。舉例來說,第三方應用程式可能會取消通話,並透過 VoIP 重新路由通話。

改善在外部儲存空間中建立檔案的功能

除了推出限定範圍儲存空間,Android 10 也新增了下列與外部儲存空間相關的功能:

  • 您可以使用 IS_PENDING 標記,讓應用程式在媒體檔案寫入磁碟時取得專屬存取權。
  • 如果您知道檔案應儲存的位置,可以提示系統要將新寫入的檔案儲存到哪裡。
  • 每個外部儲存裝置都有專屬的磁碟機名稱

媒體和圖形

Android 10 推出下列全新媒體和圖像功能與 API:

分享音訊輸入內容

Android 10 新增了兩個應用程式可同時共用音訊輸入功能。如需完整資訊,請參閱「共用音訊輸入內容」。

音訊播放擷取

Android 10 可讓應用程式擷取其他應用程式的音訊播放內容。如需完整資訊,請參閱「播放內容擷取」。

MediaStyle 通知中的進度條

自 Android 10 起,MediaStyle 通知會顯示進度列。進度列會顯示 PlaybackState.getPosition() 的播放進度,在某些情況下,進度列可用於在播放節目中尋找某個位置。進度列的外觀和行為受到下列規則的控管:

  • 如果有有效的 MediaSession,且其持續時間 (由 MediaMetadata.METADATA_KEY_DURATION 指定) 大於零,就會顯示尋找欄。也就是說,這條長條不會顯示在直播和廣播等不確定的串流中。
  • 如果工作階段實作 ACTION_SEEK_TO,使用者就能拖曳進度列來控制播放位置。

原生 MIDI API

Android 原生 MIDI API (AMidi) 可讓應用程式開發人員透過 C/C++ 程式碼傳送及接收 MIDI 資料,更緊密地整合 C/C++ 音訊/控制邏輯,並盡量減少對 JNI 的需求。

詳情請參閱「Android 原生 MIDI API」。

改善 MediaCodecInfo

Android 10 會在 MediaCodecInfo 中新增方法,揭露更多編解碼相關資訊。

詳情請參閱「媒體編解碼」。

Thermal API

當裝置過熱時,裝置可能會對 CPU 和/或 GPU 進行節流措施,進而以非預期方式影響應用程式和遊戲。如果應用程式使用複雜的圖形、大量運算或持續的網路活動,就更有可能發生問題,而這些問題可能因晶片組和核心頻率、整合程度、裝置封裝和外型而異。

在 Android 10 中,應用程式和遊戲可以使用 Thermal API 監控裝置的變化,並採取相應措施以維持較低的耗電量,以便恢復正常溫度。應用程式會在 PowerManager註冊事件監聽器,系統會透過該事件監聽器回報目前的熱力狀態,從輕度、中度、嚴重、危急、緊急和關機狀態都有。

裝置回報熱應力時,應用程式和遊戲可以透過各種方式結束進行中的活動,以降低耗電量。舉例來說,串流應用程式可以降低解析度/位元率或網路流量;相機應用程式可以停用閃光或圖像強化功能;遊戲可以降低影格速率或多邊形鑲嵌;媒體應用程式可以降低喇叭音量;地圖應用程式可以關閉 GPS。

溫度 API 需要新的裝置 HAL 層,目前搭載 Android 10 的 Pixel 裝置支援這項 API,我們也正與裝置製造商合作夥伴合作,盡快為生態系統提供廣泛支援。

相機和圖片

Android 10 推出了下列與相機和圖片相關的新功能:

支援單色相機

Android 9 (API 級別 28) 首次推出單色相機功能。Android 10 為黑白相機支援功能新增了幾項強化功能:

  • 支援 Y8 串流格式,以提高記憶體效率。
  • 支援黑白原始 DNG 攝影。
  • 引入 MONO 和 NIR CFA 列舉,以區分一般黑白相機和近紅外線相機。

您可以使用這項功能擷取原生黑白圖片。邏輯多相機裝置可能會使用黑白相機做為實體子相機,以便在低光源環境下獲得更優異的圖像品質。

動態景深格式

自 Android 10 起,攝影機可使用名為「動態景深格式」(DDF) 的新結構定義,將圖片的景深資料儲存在個別檔案中。應用程式可以同時要求 JPG 圖片及其深度中繼資料,並利用這些資訊在後製時套用所需的任何模糊效果,而無須修改原始圖片資料。

如要查看此格式的規格,請參閱「動態景深格式」。

高效率圖片檔案格式

高效率圖片檔 (HEIF) 格式是一種標準圖片和影片格式,與其他檔案格式相比,可提供更高品質的編碼和更小的檔案大小。

如要進一步瞭解檔案格式,請參閱 HEIC

改善多相機功能

Android 10 改善了將多部相機融合為單一邏輯相機的功能,這項功能已在 Android 9 (API 級別 28) 推出。以下項目已新增至 Camera2 API

Accessibility Services API

Android 10 推出下列新的無障礙服務功能和 API:

AccessibilityNodeInfo 登錄碼標記

自 Android 10 起,您可以呼叫 isTextEntryKey(),判斷指定 AccessibilityNodeInfo 是否代表鍵盤或小鍵盤中的文字輸入鍵。

無障礙對話方塊的語音回饋

如果使用者需要執行無障礙工具捷徑才能啟動無障礙服務,Android 10 會在服務要求時,允許對話方塊搭配文字轉語音提示。

啟用手勢導覽功能時的無障礙捷徑

在 Android 10 中啟用手勢操作功能時,無障礙按鈕不會顯示或可選取。如要存取無障礙服務選單,使用者必須執行下列其中一種手勢:

  • 雙指向上滑動。
  • 用兩指向上滑動並按住。

實體鍵盤的無障礙捷徑

在 Android 10 中,使用者只要按下 Control + Alt + Z 鍵,即可在實體鍵盤上觸發無障礙快速鍵。

螢幕鍵盤控制器強化功能

在 Android 10 中,即使裝置偵測到已連接實體鍵盤,無障礙服務仍可要求顯示軟體鍵盤。使用者可以覆寫這項行為。

使用者定義的無障礙超時設定

Android 10 推出了 getRecommendedTimeoutMillis() API。此方法可支援使用者定義的互動和非互動 UI 元素逾時時間。傳回值會受到使用者偏好設定和無障礙服務 API 的影響。

自動填入功能改善

Android 10 對自動填入服務進行了以下改善。

相容性相關的自動填入要求

您可以使用 FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST 旗標,判斷是否透過相容性模式產生自動填入要求。

同時儲存使用者名稱和密碼

您可以使用 SaveInfo.FLAG_DELAY_SAVE 旗標,支援應用程式使用多個活動來顯示使用者名稱、密碼和其他欄位的情況。

使用者與「儲存」UI 的互動

您可以在儲存對話方塊中顯示及隱藏密碼欄位,方法是設定對話方塊的動作事件監聽器,並變更對應密碼遠端檢視畫面的顯示/隱藏狀態。

支援更新資料集

自動填入功能可更新現有密碼。舉例來說,如果使用者已儲存密碼,但又儲存新密碼,自動填入功能會提示使用者更新現有密碼,而非儲存新密碼。

欄位分類功能改善

Android 10 包含下列欄位分類 API 改善項目。

UserData.Builder 建構函式

UserData.Builder 建構函式已變更,以便與 Builder 模式保持一致。

允許將值對應至多種類型的 Category ID

在 Android 10 中使用 UserData.Builder 時,現在可以將值對應至多種類型的類別 ID。在先前版本中,如果值已新增多次,系統會擲回例外狀況。

改善信用卡號碼支援功能

欄位分類功能現在可偵測四位數字,做為信用卡號碼的末四碼。

支援應用程式專屬欄位分類

Android 10 新增了 FillResponse.setUserData(),可讓您在工作階段期間設定應用程式專屬的使用者資料。這有助於自動填入服務偵測含有應用程式專屬內容的欄位類型。

UI 和系統控制項

Android 10 提供下列使用者介面改善功能:

支援 JVMTI PopFrame 上限

Android 10 新增了對 Android JVMTI 實作中 can_pop_frames 功能的支援。在偵錯時,這項功能可讓您在暫停在中斷點並調整函式的本機、全域或實作項目後,重新執行函式。詳情請參閱 Oracle 的 Pop Frame 參考頁面

Surface control API

Android 10 提供 SurfaceControl API,可用於對系統合成器 (SurfaceFlinger) 進行低階存取。對大多數使用者而言,SurfaceView 是利用合成器的正確方式。SurfaceControl API 在某些情況下非常實用,例如:

  • 多個平台的同步處理
  • 跨程序介面嵌入
  • 較低層級的生命週期管理

SurfaceControl API 適用於 SDK 和 NDK 繫結。NDK 實作內容包含 API,可用於手動交換緩衝區與合成器。對於遇到 BufferQueue 限制的使用者,這項功能可提供替代方案。

WebView 掛起轉譯器偵測

Android 10 推出了 WebViewRenderProcessClient 抽象類別,應用程式可利用這項類別偵測 WebView 是否停止回應。如要使用這個類別:

  1. 定義您自己的子類別,並實作其 onRenderProcessResponsive()onRenderProcessUnresponsive() 方法。
  2. WebViewRenderProcessClient 的例項附加至一或多個 WebView 物件。
  3. 如果 WebView 停止回應,系統會呼叫用戶端的 onRenderProcessUnresponsive() 方法,並傳遞 WebViewWebViewRenderProcess。(如果 WebView 是單一程序,WebViewRenderProcess 參數為空值)。應用程式可以採取適當的動作,例如向使用者顯示對話方塊,詢問他們是否要停止轉譯程序。

如果 WebView 仍未回應,系統會定期呼叫 onRenderProcessUnresponsive() (每五秒一次,最多一次),但不會採取其他動作。如果 WebView 再次回應,系統只會呼叫 onRenderProcessResponsive() 一次。

設定面板

Android 10 推出了 設定面板 API,可讓應用程式在應用程式內容中向使用者顯示設定。這樣一來,使用者就不必為了使用應用程式,前往「設定」變更 NFC 或「行動數據」 等設定。

圖 1. 使用者嘗試在裝置未連上網路時開啟網頁。Chrome 會彈出「Internet Connectivity」設定面板...

圖 2. 使用者可以開啟 Wi-Fi 並選取網路,無須離開 Chrome 應用程式。

舉例來說,假設使用者在裝置處於飛航模式時開啟網路瀏覽器。在 Android 10 之前,應用程式只能顯示一般訊息,要求使用者開啟「設定」來恢復連線。在 Android 10 中,瀏覽器應用程式可以顯示內嵌式面板,顯示飛航模式、Wi-Fi (包括附近網路) 和行動數據等重要連線設定。使用者可以透過這個面板,在未離開應用程式的情況下恢復連線。

如要顯示設定面板,請使用下列 Settings.Panel 動作之一觸發意圖:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type 可以是下列任一項:

ACTION_INTERNET_CONNECTIVITY
顯示與網際網路連線相關的設定,例如飛航模式、Wi-Fi 和行動數據。
ACTION_WIFI
會顯示 Wi-Fi 設定,但不會顯示其他連線設定。這對需要透過 Wi-Fi 連線執行大量上傳或下載作業的應用程式而言,非常實用。
ACTION_NFC
顯示與近距離無線通訊 (NFC) 相關的所有設定。
ACTION_VOLUME
顯示所有音訊串流的音量設定。

分享功能改善

Android 10 提供多項分享功能改善措施:

Sharing Shortcuts API

Sharing Shortcuts API 會取代 Direct Share API

分享捷徑 API 可讓應用程式預先發布直接共用目標,而非在需要時才回應式擷取結果。ShortcutManager 的運作方式如下。由於這兩個 API 相似,我們擴充了 ShortcutInfo API,方便您同時使用這兩項功能。您可以使用 Sharing Shortcuts API,直接將類別或使用者指派給共用目標。分享目標會持續保留在系統中,直到同一個應用程式更新或解除安裝為止。

舊版的直接分享機制仍可正常運作,但使用這項機制的應用程式優先順序會低於使用「分享捷徑」API 的應用程式。

ShortcutInfo.Builder 新增及強化方法,提供有關共用目標的其他資訊。

直接分享目標

您可以將動態捷徑發布為直接分享目標。請參閱「發布直接分享目標」。

ShortcutManagerCompat 是新的 AndroidX API,可與舊版 DirectShare API 提供回溯相容性。這是發布分享目標的建議做法。

預覽文字

應用程式分享文字內容時,可在 Sharesheet UI 中顯示內容的選用預覽畫面。

請參閱「新增複合式文字預覽畫面

瞭解詳情

如要進一步瞭解應用程式如何分享資料,請參閱「傳送簡單資料給其他應用程式」和「接收其他應用程式傳送的簡單資料」。

深色主題

Android 10 提供深色主題,適用於 Android 系統 UI 和在裝置上執行的應用程式。如需完整資訊,請參閱「深色主題」。

前景服務類型

Android 10 推出 foregroundServiceType XML 資訊清單屬性,可納入多項特定服務的定義。您可以將多個前景服務類型指派至特定服務,但這很少適合。

下表列出各種前景服務類型,以及適合宣告特定類型的服務:

前景服務類型 應宣告此類型的服務用途範例
connectedDevice 監控可穿戴式健身追蹤器
dataSync 從網路下載檔案
location 繼續執行使用者啟動的動作
mediaPlayback 播放有聲書、Podcast 或音樂
mediaProjection 在短時間內錄製裝置螢幕畫面
phoneCall 處理進行中的通話

Kotlin

Android 10 包含下列 Kotlin 開發更新。

libcore API 的空值註解

Android 10 改善了 libcore API 的 SDK 中可為空值註解的涵蓋率。這些註解可讓在 Android Studio 中使用 Kotlin 或 Java 空值分析的應用程式開發人員,在與這些 API 互動時取得空值資訊。

通常,Kotlin 中的是否可為空值合約違規會導致編譯錯誤。為確保與現有程式碼相容,我們只會新增 @RecentlyNullable@RecentlyNonNull 註解。也就是說,可空性違規會導致警告,而非錯誤。

此外,在 Android 9 中新增的任何 @RecentlyNullable@RecentlyNonNull 註解,都會分別變更為 @Nullable@NonNull。也就是說,在 Android 10 以上版本中,可為空值的違規行為會導致錯誤,而非警告。

如要進一步瞭解註解變更,請參閱 Android 開發人員網誌上的「Android Pie SDK 現已更友善地支援 Kotlin」。

NDK

Android 10 包含下列 NDK 變更。

改善檔案描述元擁有權的偵錯功能

Android 10 新增了 fdsan,可協助您更輕鬆地找出並修正檔案描述符擁有權問題。

與檔案描述符擁有權的錯誤處理相關的錯誤,通常會以「關閉後使用」use-after-close 和「雙重關閉」double-close 的形式呈現,類似於記憶體配置的「釋放後使用」use-after-free 和「雙重釋放」double-free 錯誤,但通常更難診斷和修正。fdsan 會嘗試透過強制執行檔案描述符擁有權,來偵測和/或防止檔案描述符管理不當。

如要進一步瞭解與這些問題相關的當機情形,請參閱「fdsan 偵測到的錯誤」。如要進一步瞭解 fdsan,請參閱 Google 開源網站上的 fdsan 頁面

ELF TLS

使用 NDK 建構的應用程式,如果 API 級別至少為 29,則可使用 ELF TLS 而非 emutls。我們已新增動態和靜態連結器支援功能,以支援處理執行緒本機變數的這個方法。

針對以 API 級別 28 以下建構的應用程式,我們已為 libgcc/compiler-rt 實作改善措施,以解決部分 emutls 問題。

詳情請參閱「適用於 NDK 開發人員的 Android 異動」。

執行階段

Android 10 包含下列執行階段變更。

以 Mallinfo 為基礎的垃圾收集觸發機制

當小型平台 Java 物件參照 C++ 堆積中的大型物件時,通常只有在 Java 物件收集並完成最終化時,才能回收 C++ 物件。在先前版本中,平台會估算與 Java 物件相關聯的許多 C++ 物件大小。這項估算值不一定準確,有時還會導致記憶體用量大幅增加,因為平台無法在適當時間進行垃圾收集。

在 Android 10 中,垃圾收集器 (GC) 會追蹤系統 malloc() 所配置堆積的總大小,確保 GC 觸發計算作業一律納入大型 malloc() 配置。應用程式交錯大量 C++ 配置與 Java 執行作業時,垃圾收集頻率可能會因此增加。其他應用程式可能會出現小幅下滑。

測試和偵錯

Android 10 包含以下測試和偵錯功能的改善項目。

改善裝置端系統追蹤功能

自 Android 10 起,您執行裝置端系統追蹤記錄時,可以指定追蹤記錄的大小和時間長度限制。指定任一值時,系統會執行長時間追蹤,並在記錄追蹤時定期將追蹤緩衝區複製到目的地檔案。當追蹤記錄達到您指定的大小或時間限制時,就會完成。

使用這些額外參數測試不同用途,而非使用標準追蹤記錄。舉例來說,您可能要診斷只有在應用程式執行一段長時間後才會發生的效能錯誤。在這種情況下,您可以記錄整天的長時間追蹤記錄,然後分析報表中的 CPU 排程器、磁碟活動、應用程式執行緒和其他資料,以便判斷錯誤的原因。

在 Android 10 以上版本中,追蹤檔會以可透過 Perfetto 開啟的格式儲存,這是一項用於效能檢測和追蹤的開放原始碼專案。您可以將 Perfetto 追蹤記錄檔案轉換為 Systrace 格式

文字分類器改善項目

Android 10 在 TextClassifier 介面中提供額外的文字分類功能。

語言偵測

detectLanguage() 方法的運作方式與先前現有的分類方法類似。它會接收 TextLanguage.Request 物件,並傳回 TextLanguage 物件。

TextLanguage 物件由排序組合清單組成。每個組合都包含語言代碼和分類的對應信心分數。

建議的對話動作

suggestConversationActions() 方法的運作方式與現有分類方法類似。它會接收 ConversationActions.Request 物件,並傳回 ConversationActions 物件。

ConversationActions 物件包含 ConversationAction 物件清單。每個 ConversationAction 物件都包含可能的建議動作和信心分數。

通知中的智慧回覆/動作

Android 9 推出了在通知中顯示建議回覆的功能。Android 10 進一步擴充這項功能,可納入建議的意圖動作。此外,平台還能自動產生這些建議。應用程式仍可提供自己的建議,或選擇停用系統產生的建議。

用於產生這些回覆的 API 是 TextClassifier 的一部分,也已直接向 Android 10 中的開發人員公開。詳情請參閱TextClassifier 改善項目一節。

如果應用程式提供自己的建議,平台就不會產生任何自動建議。如果您不希望應用程式通知顯示任何建議回覆或動作,可以使用 setAllowGeneratedReplies()setAllowSystemGeneratedContextualActions() 停用系統產生的回覆和動作。