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.2 相比,TLS 1.3 建立安全連線的速度最多可快 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 新增原生支援,可同時透過明文查詢和「透過 TLS 執行 DNS」模式專門處理 DNS 查詢。先前,平台 DNS 解析器僅支援 A 和 AAAA 記錄,只能查詢與名稱相關聯的 IP 位址,不支援其他記錄類型。DnsResolver API 提供一般的非同步解析,可讓您查詢 SRV、NAPTR 和其他記錄類型。請注意,剖析回應會留在應用程式中執行。
如需以 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
Android 10 更新了 WifiP2pConfig 和 WifiP2pManager API 類別,可使用預先確定的資訊,支援 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);
藍牙 LE 連線導向通道 (CoC)
Android 10 可讓應用程式使用 BLE CoC 連線,在兩個 BLE 裝置之間傳輸較大的資料串流。這個介面會抽象化藍牙和連線能力機制,簡化實作程序。
電話功能
Android 10 包含多項與電話通訊相關的改善項目。
提升通話品質
Android 10 新增了一項功能,可在支援該功能的裝置上,收集進行中的 IP 多媒體子系統 (IMS) 通話品質資訊,包括往返網路的品質。
來電過濾和來電顯示
Android 10 可讓應用程式將不在使用者通訊錄中的來電識別為疑似騷擾電話,並代表使用者自動拒接騷擾電話。這類遭封鎖的來電會記錄在通話記錄中,讓使用者更清楚瞭解未接來電。使用這個 API 後,就不需要向使用者取得 READ_CALL_LOG 權限,即可提供來電過濾和來電顯示功能。
來電重新導向服務 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 Native 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。
Thermal API 需要新的裝置 HAL 層,目前支援搭載 Android 10 的 Pixel 裝置,我們正與裝置製造商合作夥伴合作,盡快為生態系統提供廣泛支援。
相機和圖片
Android 10 推出下列與相機和圖片相關的新功能:
單色相機支援
Android 9 (API 級別 28) 首次推出單色相機功能。Android 10 針對單色相機支援功能新增多項強化:
- 支援 Y8 串流格式,提升記憶體效率。
- 支援單色 RAW DNG 擷取。
- 導入 MONO 和 NIR CFA 列舉,區分一般單色相機和近紅外線相機。
您可以使用這項功能拍攝原生單色圖片。邏輯多鏡頭裝置可能會使用單色相機做為實體子相機,以達到更好的低光源影像品質。
動態景深格式
從 Android 10 開始,相機可以使用名為動態景深格式 (DDF) 的新結構定義,將圖片的深度資料儲存在個別檔案中。應用程式可以同時要求 JPG 圖片和深度中繼資料,並使用這些資訊在後製處理中套用任何模糊效果,而不必修改原始圖片資料。
如要閱讀此格式的規格,請參閱「動態景深格式」。
高效率圖片檔案格式
高效率圖片檔案 (HEIF) 格式是一種標準圖片和影片格式,與其他檔案格式相比,可提供更高品質的編碼和更小的檔案大小。
如要進一步瞭解檔案格式,請參閱 HEIC。
改善多鏡頭功能
Android 10 改善了將多部相機融合為單一邏輯相機的功能,這項功能是在 Android 9 (API 級別 28) 中推出。Camera2 API 新增了以下項目:
isSessionConfigurationSupported(SessionConfiguration sessionConfig):可讓您查詢傳遞的工作階段設定是否可用於建立相機擷取工作階段。LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID:可讓您判斷支援邏輯相機裝置的有效實體相機 ID。您可以使用傳回的 ID 要求邏輯串流和實體子相機串流,提高電源效率。
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 旗標,支援應用程式使用多個活動顯示使用者名稱、密碼和其他欄位的情況。
使用者與「儲存」使用者介面的互動
您可以在儲存對話方塊中設定動作事件監聽器,並變更對應密碼遠端檢視畫面的顯示設定,藉此顯示及隱藏密碼欄位。
支援更新資料集
自動填入功能可以更新現有密碼。舉例來說,如果使用者已儲存密碼,並儲存新密碼,自動填入功能會提示使用者更新現有密碼,而不是儲存新密碼。
欄位分類改善
Android 10 對 Field Classification API 進行了以下改善。
UserData.Builder 建構函式
UserData.Builder 建構函式已變更,更符合 Builder 模式。
允許將值對應至多種類型的類別 ID
在 Android 10 中使用 UserData.Builder 時,您現在可以將值對應至多種類型的類別 ID。在先前的版本中,如果多次新增同一個值,系統會擲回例外狀況。
改善信用卡號支援
欄位分類現在可以偵測四位數數字,做為信用卡號碼的末四碼。
支援應用程式專屬欄位分類
Android 10 新增了 FillResponse.setUserData(),可讓您在工作階段期間設定應用程式專屬的使用者資料。這有助於自動填入服務偵測具有應用程式專屬內容的欄位類型。
UI 和系統控制項
Android 10 提供下列使用者介面改善項目:
支援 JVMTI PopFrame 功能
Android 10 在 Android JVMTI 實作中新增對 can_pop_frames 功能的支援。偵錯時,這項功能可讓您在暫停於中斷點,並調整函式的本機、全域或實作後,重新執行函式。詳情請參閱 Oracle 的彈出式框架參考頁面。
Surface Control API
Android 10 提供 SurfaceControl API,可讓您低階存取系統合成器 (SurfaceFlinger)。對大多數使用者來說,SurfaceView 是運用合成器的正確方式。SurfaceControl API 在某些情況下可能很有用,例如:
- 同步處理多個介面
- 跨程序介面嵌入
- 較低層級的生命週期管理
SurfaceControl API 適用於 SDK 和 NDK 繫結。NDK 實作包含一個 API,用於與 compositor 手動交換緩衝區。如果使用者遇到 BufferQueue 的限制,可以改用這個方法。
WebView 停止回應轉譯器偵測
Android 10 推出 WebViewRenderProcessClient 抽象類別,應用程式可使用該類別偵測 WebView 是否沒有回應。如要使用這個類別,請按照下列步驟操作:
- 定義自己的子類別,並實作其
onRenderProcessResponsive()和onRenderProcessUnresponsive()方法。 - 將
WebViewRenderProcessClient的例項附加至一或多個WebView物件。 - 如果
WebView沒有回應,系統會呼叫用戶端的onRenderProcessUnresponsive()方法,並傳遞WebView和WebViewRenderProcess。(如果WebView是單一程序,WebViewRenderProcess參數為空值)。應用程式可以採取適當動作,例如向使用者顯示對話方塊,詢問是否要停止轉譯程序。
如果 WebView 仍未回應,系統會定期呼叫 onRenderProcessUnresponsive() (每五秒不超過一次),但不會採取其他動作。如果 WebView 再次回應,系統只會呼叫 onRenderProcessResponsive() 一次。
設定面板
Android 10 推出設定面板,這是一種 API,可讓應用程式在應用程式情境中向使用者顯示設定。這樣一來,使用者就不需要進入「設定」變更「NFC」或「行動數據」等設定,即可使用應用程式。
舉例來說,假設使用者在裝置處於飛航模式時開啟網路瀏覽器。在 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 會取代直接分享 API。
Sharing Shortcuts API 可讓應用程式預先發布直接分享目標,不必在需要時才被動擷取結果。ShortcutManager 的運作方式如下。由於這兩個 API 相似,我們擴充了 ShortcutInfo API,讓您更輕鬆地使用這兩項功能。使用 Sharing Shortcuts API,您可以直接將類別或使用者指派給分享目標。共用目標會保留在系統中,直到同一個應用程式更新或解除安裝為止。
舊版直接分享機制仍可運作,但使用該機制的應用程式優先順序低於使用 Sharing Shortcuts API 的應用程式。
ShortcutInfo.Builder 新增並強化方法,提供分享目標的額外資訊。
直接分享目標
您可以將動態捷徑發布為「直接分享目標」。請參閱「發布直接分享目標」。
ShortcutManagerCompat 是新的 AndroidX API,可與舊版 DirectShare API 回溯相容。這是發布分享目標的首選方式。
預覽文字
應用程式分享文字內容時,可在 Sharesheet UI 中顯示內容的預覽畫面 (選用)。
請參閱「新增 RTF 格式預覽」
瞭解詳情
如要進一步瞭解應用程式如何共用資料,請參閱「傳送簡單資料給其他應用程式」和「接收其他應用程式傳送的簡單資料」。
深色主題
Android 10 提供深色主題,適用於 Android 系統 UI 和裝置上執行的應用程式。如需完整資訊,請參閱「深色主題」。
前景服務類型
Android 10 推出 foregroundServiceType XML 資訊清單屬性,您可以在多項特定服務的定義中加入這項屬性。您可以將多個前景服務類型指派至特定服務,但這種做法很少適用。
下表列出不同的前景服務類型,以及適合宣告特定類型的服務:
| 前景服務類型 | 應宣告這種類型的服務用途範例 |
|---|---|
connectedDevice
| 監控穿戴式運動智慧手環 |
dataSync
| 從網路下載檔案 |
location
| 繼續執行使用者啟動的操作 |
mediaPlayback
| 播放有聲書、Podcast 或音樂 |
mediaProjection
| 錄製短時間內的裝置螢幕畫面 |
phoneCall
| 處理進行中的通話 |
Kotlin
Android 10 包含下列 Kotlin 開發作業更新。
libcore API 的是否可為空值註解
Android 10 改善了 SDK 中 libcore API 的可為空值註解涵蓋範圍。應用程式開發人員在 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,可協助您更輕鬆地找出及修正檔案描述元擁有權問題。
與檔案描述元擁有權處理不當相關的錯誤,通常會顯示為「關閉後使用」和「重複關閉」,類似於記憶體配置「釋出後使用」和「重複釋出」錯誤,但通常更難診斷和修正。fdsan 會強制執行檔案描述元擁有權,嘗試偵測及/或防止檔案描述元管理不當。
如要進一步瞭解與這些問題相關的當機情形,請參閱「fdsan 偵測到的錯誤」。如要進一步瞭解 fdsan,請參閱 fdsan 的 Googlesource 頁面。
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() 分配的堆積總大小,確保大型 malloc() 堆積分配量一律包含在 GC 觸發計算中。如果應用程式交錯執行大量 C++ 配置和 Java 執行作業,垃圾收集頻率可能會因此增加。其他應用程式則可能略為減少。
測試和偵錯
Android 10 包含下列測試和偵錯改善項目。
改善裝置端系統追蹤功能
自 Android 10 起,您可以在執行裝置端系統追蹤時,指定追蹤記錄的大小和時間長度限制。指定任一值時,系統會執行長時間追蹤,並在記錄追蹤時定期將追蹤緩衝區複製到目的地檔案。達到指定的大小或時間長度限制時,追蹤記錄就會完成。
使用這些額外參數,即可測試與標準追蹤記錄不同的用途。舉例來說,您可能正在診斷效能錯誤,而這個錯誤只會在應用程式執行一段時間後發生。在這種情況下,您可以記錄一整天的長追蹤記錄,然後分析報表中的 CPU 排程器、磁碟活動、應用程式執行緒和其他資料,協助您判斷錯誤原因。
在 Android 10 以上版本中,追蹤檔會以 Perfetto 可開啟的格式儲存,Perfetto 是用於效能檢測和追蹤的開放原始碼專案。您可以將 Perfetto 追蹤記錄檔案轉換為 Systrace 格式。
TextClassifier 改善項目
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() 停用系統產生的回覆和動作。