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 Lock API,以便有效支援高效能模式和低延遲模式。系統在高效能和低延遲模式下,會停用 Wi-Fi 省電功能。視數據機支援而定,我們可能會在低延遲模式下啟用進一步的延遲時間最佳化功能。
只有在應用程式取得鎖定功能於前景執行,且螢幕已開啟時,系統才會啟用低延遲模式。低延遲模式特別適合用於即時行動遊戲應用程式。
DNS 解析器中的特殊查詢
Android 10 透過明文查詢和 DNS-over-TLS 模式,為特殊 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 輕鬆連線」。
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 中,應用程式和遊戲可以使用 The Thermal API 監控裝置變化,並採取相關措施以維持較低的耗電量,讓裝置恢復一般溫度。應用程式在 PowerManager 中註冊監聽器,系統會透過該事件回報進行中的熱力狀態,從輕度到中度到嚴重、嚴重、緊急和關閉等。
裝置回報熱壓力時,應用程式和遊戲可以藉由消除持續進行的活動來降低各種耗電量,舉例來說,串流應用程式可降低解析度/位元速率或網路流量、相機應用程式可能會停用閃光燈或大量圖片強化功能、遊戲可以降低影格速率或多邊形密合度、媒體應用程式可以降低喇叭音量,且地圖應用程式可能會關閉 GPS。
Thermal API 需要新的裝置 HAL 層,目前搭載 Android 10 的 Pixel 裝置目前支援這個層。我們正與裝置製造商合作夥伴合作,希望能盡快將廣泛支援納入這個生態系統。
相機和圖片
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:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
:讓您查詢傳遞的工作階段設定是否可用於建立相機擷取工作階段。LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
:可讓您決定支援邏輯相機裝置的有效實體相機 ID。您可以使用傳回的 ID 要求邏輯串流和實體子相機串流,以提升電源效率。
Accessibility 服務 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 的互動
您可以在儲存對話方塊中設定及隱藏密碼欄位,方法是在對話方塊中設定動作事件監聽器,並變更對應密碼遠端檢視畫面的顯示設定。
支援更新資料集
自動填入功能可以更新現有密碼。舉例來說,如果使用者已儲存密碼,然後儲存新密碼,自動填入功能就會提示使用者更新現有密碼,而非儲存新密碼。
改善欄位分類
針對 Field Classification API,Android 10 包含下列改善項目。
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 的Pop Frame 參考資料頁面。
Surface Control API
Android 10 提供 SurfaceControl
API,用於低階存取系統合成器 (SurfaceFlinger
)。對於大多數使用者,SurfaceView 是運用合成器的正確方式。SurfaceControl
API 在某些情況下非常實用,例如:
- 同步處理多個途徑
- 跨程序介面嵌入
- 低階生命週期管理
SDK 和 NDK 繫結都可使用 SurfaceControl
API。NDK 實作項目包含 API,可手動與合成器交換緩衝區。如果使用者已違反 BufferQueue
限制,這可以提供替代方案。
WebView 懸掛轉譯器偵測
Android 10 引入 WebViewRenderProcessClient
抽象類別,應用程式可用於偵測 WebView
是否沒有回應。如何使用這個類別:
- 定義自己的子類別,並實作其
onRenderProcessResponsive()
和onRenderProcessUnresponsive()
方法。 - 將
WebViewRenderProcessClient
的執行個體附加至一或多個WebView
物件。 - 如果
WebView
沒有回應,系統會呼叫用戶端的onRenderProcessUnresponsive()
方法,並傳遞WebView
和WebViewRenderProcess
。(如果WebView
為單一程序,WebViewRenderProcess
參數為空值)。應用程式可以採取適當行動,例如向使用者顯示對話方塊,詢問是否要停止轉譯程序。
如果 WebView
仍然沒有回應,系統會定期呼叫 onRenderProcessUnresponsive()
(每五秒最多一次),但不會採取其他動作。如果 WebView
再次回應,系統只會呼叫 onRenderProcessResponsive()
一次。
設定面板
Android 10 導入了設定面板,這個 API 可讓應用程式依照應用程式的內容向使用者顯示設定。這樣一來,使用者不必前往「設定」變更「NFC」或「行動數據」等項目才能使用應用程式。
![](https://developer.android.com/static/images/about/versions/10/settings-wifi-part1.png?authuser=0000&hl=zh-tw)
![](https://developer.android.com/static/images/about/versions/10/settings-wifi-part2.png?authuser=0000&hl=zh-tw)
舉例來說,假設使用者在裝置處於飛航模式時開啟網路瀏覽器。在 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 為分享功能提供多項改善:
分享捷徑 API
Share Shortcuts API 可讓應用程式預先發布直接分享目標,不必隨要求擷取結果。ShortcutManager
的運作方式就是這樣。由於這兩個 API 很類似,因此我們已擴充 ShortcutInfo
API,讓使用這兩項功能更加輕鬆。使用 Shared Shortcuts API,即可直接為共用目標指派類別或使用者。共用目標會保留在系統中,直到同一個應用程式更新或解除安裝應用程式為止。
舊版直接分享機制仍可運作,但相較於使用 Share 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 改善了 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,可協助找出及修正檔案描述元擁有權問題。
與檔案描述元擁有權的處理方式錯誤相關的錯誤 (傾向「使用後關閉」和「雙重關閉」),類似於記憶體配置「使用已釋放後使用」和「重複釋放」錯誤,但往往會更難診斷及/或防止檔案描述元。
如要進一步瞭解與這些問題相關的當機問題,請參閱「fdsan 偵測到的錯誤」一文。如要進一步瞭解 fdsan,請參閱 fdsan 的 Google 原始碼頁面。
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 是一套用於執行效能檢測和追蹤的開放原始碼專案。您可以將 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 的開發人員也已直接向開發人員提供這個 API。詳情請參閱 TextClassifier 改善項目一節。
如果您的應用程式有專屬的建議,平台就不會產生任何自動建議。如果您不希望應用程式的通知顯示任何建議的回覆或動作,可以使用 setAllowGeneratedReplies()
和 setAllowSystemGeneratedContextualActions()
,選擇不採用系統產生的回覆和動作。