面向開發(fā)者的 Android 10
(https://developer.android.google.cn/about/versions/10/highlights#top_of_page)
-
創(chuàng)新技術(shù)和新體驗
- 可折疊設(shè)備
- 5G 網(wǎng)絡(luò)
- 通知中的智能回復(fù)</devsite-toc>
Android 10 圍繞三個重要主題構(gòu)建而成。首先,Android 10 以其先進的機器學(xué)習(xí)和對新興設(shè)備(如可折疊設(shè)備和支持 5G 的手機)的支持走在移動創(chuàng)新領(lǐng)域的前沿。其次,Android 10 的主要關(guān)注點之一就是隱私權(quán)和安全性,其中近 50 項功能可為用戶提供更好的保護、更高的透明度以及讓用戶更好地控制相關(guān)數(shù)據(jù)。最后,Android 10 可讓用戶更好地控制數(shù)字健康,因此個人和家庭都可以更好地利用此項技術(shù)。
下面,我們來介紹一下 Android 10 為開發(fā)者提供了哪些功能以及您現(xiàn)在能如何利用這些功能。
創(chuàng)新技術(shù)和新體驗
借助 Android 10,您可以充分利用最新的硬件和軟件創(chuàng)新,從而為用戶打造出色的應(yīng)用體驗。

借助 Android 10,您可以針對可折疊設(shè)備和其他大屏幕設(shè)備優(yōu)化應(yīng)用。
可折疊設(shè)備
Android 10 基于強大的多窗口支持構(gòu)建而成,擴展了跨應(yīng)用窗口的多任務(wù)處理能力,還提供了屏幕連續(xù)性,可以在設(shè)備折疊或展開時維持應(yīng)用狀態(tài)。Android 10 在 onResume 和 onPause 中添加了多項改進,用于支持多項恢復(fù),并在應(yīng)用獲得焦點時通知應(yīng)用。它還更改了 resizeableActivity 清單屬性的工作方式,以幫助您管理應(yīng)用在可折疊設(shè)備和大屏幕設(shè)備上的顯示方式。為幫助針對可折疊設(shè)備進行編譯,您可以在 Android Studio 中配置可折疊模擬器來用作虛擬設(shè)備 (AVD)。如需詳細了解如何針對可折疊設(shè)備優(yōu)化應(yīng)用,請參閱開發(fā)者指南。
5G 網(wǎng)絡(luò)
5G 有望在穩(wěn)定提升速度的同時降低延遲,Android 10 新增了針對 5G 的平臺支持,并擴展了現(xiàn)有 API 來幫助您充分利用這些增強功能。您可以使用連接 API 來檢測設(shè)備是否具有高帶寬連接,還可以檢查連接是否按流量計費。借助這些功能,您的應(yīng)用和游戲可以為使用 5G 的用戶量身打造豐富的沉浸式體驗。
通知中的智能回復(fù)
Android 10 使用設(shè)備上的機器學(xué)習(xí)在通知中提供上下文操作建議,如智能回復(fù)消息或在通知中打開某個地址的地圖。您的應(yīng)用可以立即充分利用此功能,而您無需執(zhí)行任何操作。系統(tǒng)提供的智能回復(fù)和操作默認直接插入到通知中。您仍可以根據(jù)需要自行提供回復(fù)或操作。使用 setAllowGeneratedReplies() 和 setAllowSystemGeneratedContextualActions() 即可針對每則通知選擇停用智能回復(fù)。

智能回復(fù)可以根據(jù)通知內(nèi)容提供操作建議。
深色主題
Android 10 新增了一個系統(tǒng)級的深色主題,非常適合光線較暗的場景并能幫助節(jié)省電量。用戶轉(zhuǎn)至“設(shè)置”進行相應(yīng)設(shè)置或開啟“省電模式”即可激活新的系統(tǒng)級深色主題。這會將系統(tǒng)界面更改為深色,并為支持深色主題的應(yīng)用啟用深色主題。您可以為應(yīng)用構(gòu)建自定義深色主題,也可以選擇使用新的 Force Dark 功能,讓系統(tǒng)根據(jù)現(xiàn)有主題動態(tài)創(chuàng)建深色版本。您還可以充分利用 AppCompat 的 DayNight 功能,為使用早期版本的 Android 的用戶提供深色主題。如需了解詳情,請參閱開發(fā)者指南。

Android 10 可以利用 Force Dark 為應(yīng)用動態(tài)創(chuàng)建深色主題。
手勢導(dǎo)航

手勢導(dǎo)航可讓應(yīng)用全屏顯示內(nèi)容。
Android 10 引入了全手勢導(dǎo)航模式,該模式不顯示通知欄區(qū)域,允許應(yīng)用使用全屏來提供更豐富、更讓人沉浸的體驗。它通過邊緣滑動(而不是可見的按鈕)保留了用戶熟悉的“返回”、“主屏幕”和“最近”導(dǎo)航。要與手勢導(dǎo)航無縫融合,您應(yīng)順著邊緣在導(dǎo)航欄后方繪制,以打造沉浸式體驗。要實現(xiàn)這一點,應(yīng)用應(yīng)使用 setSystemUiVisibility() API 以全屏模式布局,然后相應(yīng)地處理 WindowInsets,以確保重要的界面區(qū)域未被遮擋。立即開始優(yōu)化您的應(yīng)用,并查看我們的博文系列,以了解詳情。
設(shè)置面板
現(xiàn)在,您可以通過新的設(shè)置面板 API 在應(yīng)用上下文中直接顯示關(guān)鍵系統(tǒng)設(shè)置。設(shè)置面板是浮動界面,您可以通過調(diào)用它來顯示用戶可能需要使用的設(shè)置,如互聯(lián)網(wǎng)連接、NFC 和音量。例如,瀏覽器可以顯示具有飛行模式、WLAN(包括附近網(wǎng)絡(luò))和移動數(shù)據(jù)等連接設(shè)置的面板。要顯示設(shè)置面板,只需發(fā)出具有某個新 Settings.Panel 操作的 intent。
共享快捷方式
共享快捷方式功能可使共享更加輕松快捷,讓用戶能夠直接跳轉(zhuǎn)到其他應(yīng)用來共享內(nèi)容。開發(fā)者可以發(fā)布能在應(yīng)用中啟動特定 Activity 的共享目標(biāo),同時附上內(nèi)容;這些共享目標(biāo)會在共享界面中向用戶顯示。因為共享目標(biāo)是提前發(fā)布的,所以共享界面會在啟動后立即加載它們。共享快捷方式類似于應(yīng)用快捷方式,都使用同一個 ShortcutInfo API。ShareTarget AndroidX 庫也支持此 API。如需了解詳情,請參閱示例應(yīng)用。

共享快捷方式可讓用戶直接跳轉(zhuǎn)到應(yīng)用中的特定 Activity,同時附上內(nèi)容。
用戶隱私設(shè)置
隱私權(quán)是 Android 10 的其中一個主要關(guān)注點,相關(guān)改進包括在平臺中提供更強大的保護措施以及在設(shè)計新功能時謹記隱私性。Android 10 基于先前版本構(gòu)建,并引入了大量變更(如改進了系統(tǒng)界面、讓權(quán)限授予更加嚴格以及對應(yīng)用能夠使用哪些數(shù)據(jù)實施了限制),目的是保護隱私權(quán)并賦予用戶更多控制權(quán)。如需詳細了解如何在您的應(yīng)用中支持這些變更,請參閱隱私權(quán)變更。

用戶現(xiàn)在可以選擇在應(yīng)用在前臺運行時授予其訪問位置信息的權(quán)限。
賦予用戶對位置數(shù)據(jù)的更多控制權(quán) - 用戶可以通過新的權(quán)限選項更好地控制他們的位置數(shù)據(jù);現(xiàn)在,他們可以允許應(yīng)用僅在實際使用(在前臺運行)時訪問位置信息。對于大部分應(yīng)用來說,這提供了足夠的訪問級別;而對于用戶來說,這在確保透明度和控制權(quán)方面是一項重大改進。要詳細了解位置信息方面的變更,請參閱開發(fā)者指南或我們的博文。
在掃描網(wǎng)絡(luò)時保護位置數(shù)據(jù) - 用于掃描網(wǎng)絡(luò)的大多數(shù) API 都需要粗略位置權(quán)限。Android 10 改為要求精確位置權(quán)限,由此來增強對這些 API 的防御。
阻止設(shè)備跟蹤 - 應(yīng)用無法再訪問不可重置的設(shè)備標(biāo)識符(可用于跟蹤),包括設(shè)備 IMEI、序列號和類似標(biāo)識符。設(shè)備的 MAC 地址也會默認在連接到 WLAN 網(wǎng)絡(luò)時隨機分配。請閱讀最佳做法,其中的內(nèi)容有助于您為具體使用場景選擇合適的標(biāo)識符;同時點擊此處了解詳情。
保護外部存儲設(shè)備中的用戶數(shù)據(jù) - Android 10 引入了一些變更,目的是讓用戶更好地控制外部存儲設(shè)備中的文件以及其中的應(yīng)用數(shù)據(jù)。應(yīng)用可以將自己的文件存儲在專用沙盒中,但必須使用 MediaStore 來訪問共享媒體文件,并使用系統(tǒng)文件選擇器訪問新的“下載內(nèi)容”集合中的共享文件。如需了解詳情,請點擊此處。
屏蔽意外中斷 - Android 10 可阻止應(yīng)用從后臺啟動,從后臺啟動會使應(yīng)用意外跳轉(zhuǎn)到前臺并從其他應(yīng)用獲得焦點。如需了解詳情,請點擊此處。
安全性
Android 10 引入了多項功能,可通過加密、平臺安全強化和身份驗證方面的改進為用戶提供更高的安全性。請詳細閱讀此處的 Android 10 安全更新。
存儲加密 - 搭載 Android 10 的所有兼容設(shè)備都必須加密用戶數(shù)據(jù);為了提高加密效率,Android 10 引入了我們的新加密模式 Adiantum。
默認啟用 TLS 1.3 - Android 10 還默認啟用 TLS 1.3,它是 TLS 標(biāo)準(zhǔn)的主要修訂版本,具有性能優(yōu)勢和更高的安全性。
平臺安全強化 - Android 10 還引入了針對平臺幾個關(guān)鍵安全區(qū)域的安全強化功能。
改進了生物識別功能 - Android 10 擴展了 BiometricPrompt 框架,以支持被動身份驗證方法,如人臉識別以及添加隱式和顯式身份驗證流程。在顯式流程中,用戶必須在身份驗證期間明確確認 TEE 中的事務(wù)。對于需要被動身份驗證的事務(wù),隱式流程是一種更輕量的替代方案。Android 10 還改進了按需回退設(shè)備憑據(jù)的流程。如需了解詳情,請點擊此處。
攝像頭和媒體
照片的動態(tài)深度
應(yīng)用現(xiàn)在可以請求動態(tài)深度圖片,其中包含與深度相關(guān)元素有關(guān)的 JPEG、XMP 元數(shù)據(jù),以及嵌入在同一文件中的深度和置信度映射。這些功能讓您可以在應(yīng)用中提供專用模糊和散景選項。動態(tài)深度是用于生態(tài)系統(tǒng)的一種開源格式,我們正在與合作伙伴合作,以將其推廣到搭載 Android 10 及更高版本的設(shè)備。



您可以利用動態(tài)深度圖片在應(yīng)用中提供專用模糊和散景選項。
捕獲播放的音頻
現(xiàn)在,播放音頻的任何應(yīng)用都允許其他應(yīng)用使用新的音頻播放捕獲 API 捕獲其音頻流。除了能夠啟用字幕之外,此 API 還可讓您支持常見的使用場景(如直播游戲)。我們在構(gòu)建這項新功能時考慮了隱私性和版權(quán)保護,因此,應(yīng)用捕獲其他應(yīng)用音頻的功能會受限,這會讓應(yīng)用全權(quán)控制其音頻流是否可以被捕獲。如需了解詳情,請閱讀這篇博文。
新的音頻和視頻編解碼器
Android 10 新增了對開源視頻編解碼器 AV1 的支持,這允許媒體提供商使用更少的帶寬向 Android 設(shè)備流式傳輸高品質(zhì)視頻內(nèi)容。此外,Android 10 還支持使用 Opus(一種針對語音和音樂流式傳輸進行了優(yōu)化的開放且免版稅的編解碼器)和 HDR10+(用于支持它的設(shè)備上的高動態(tài)范圍視頻)對音頻進行編碼。MediaCodecInfo API 引入了一種更簡便的方法來確定某個 Android 設(shè)備的視頻渲染功能。對于任何指定的編解碼器,您可以獲取其支持的大小和幀速率列表。
原生 MIDI API
針對使用 C++ 執(zhí)行其音頻處理的應(yīng)用,Android 10 引入了原生 MIDI API,以通過 NDK 與 MIDI 設(shè)備通信。此 API 允許使用非阻塞讀取在音頻回調(diào)內(nèi)檢索 MIDI 數(shù)據(jù),從而以低延遲處理 MIDI 消息。使用示例應(yīng)用和此處的源代碼試試看。
可縮放的定向麥克風(fēng)
Android 10 可讓您通過新的 MicrophoneDirection API 更好地控制音頻捕獲。您可以使用此 API 指定在錄音時麥克風(fēng)的首選方向。例如,當(dāng)用戶在進行視頻“自拍”時,您可以請求前置麥克風(fēng)(如果有)以進行錄音。此外,此 API 還引入了控制可縮放麥克風(fēng)的標(biāo)準(zhǔn)化方法,允許您的應(yīng)用控制錄音字段大小。
Vulkan 無處不在
Android 10 包含用于繪制高性能 3D 圖形的低開銷、跨平臺 API 實現(xiàn),擴大了 Vulkan 的影響范圍。所有搭載 Android 10 及更高版本的 64 位設(shè)備現(xiàn)在都要求使用 Vulkan 1.1,也建議在所有 32 位設(shè)備上使用 Vulkan 1.1。我們已經(jīng)看到整個生態(tài)系統(tǒng)大力支持 Vulkan 的強勁勢頭,在搭載 Android N 或更高版本的設(shè)備中,53% 的設(shè)備都支持 Vulkan 1.0.3 或更高版本。隨著 Android 10 中相關(guān)新要求的推出,我們預(yù)計未來一年 Vulkan 的采用率將進一步提升。
連接性
改進了點對點連接和互聯(lián)網(wǎng)連接
我們重構(gòu)了 WLAN 堆棧,目的是改進隱私設(shè)置和性能,同時改進常見使用場景(如管理 IoT 設(shè)備以及提供互聯(lián)網(wǎng)連接建議),而無需請求位置權(quán)限。網(wǎng)絡(luò)連接 API 針對點對點功能(如配置、下載或打?。┖喕送ㄟ^本地 WLAN 管理 IoT 設(shè)備的操作。網(wǎng)絡(luò)建議 API 可讓應(yīng)用向用戶顯示首選 WLAN 網(wǎng)絡(luò)以進行互聯(lián)網(wǎng)連接。
WLAN 性能模式
應(yīng)用現(xiàn)在可以通過啟用高性能和低延遲模式來請求自適應(yīng) WLAN。如果低延遲對用戶體驗(如實時游戲、活躍語音通話以及類似使用場景)至關(guān)重要,這些模式會極具優(yōu)勢。平臺與設(shè)備固件配合使用,可以滿足最低耗電量的要求。要使用新的性能模式,請調(diào)用 WifiManager.WifiLock.createWifiLock()(使用 WIFI_MODE_FULL_LOW_LATENCY 或 WIFI_MODE_FULL_HIGH_PERF)。在這些模式中,平臺與設(shè)備固件配合使用,可以滿足最低耗電量的要求。
Android 基礎(chǔ)知識
ART 優(yōu)化
在 ART 運行時方面的改進可幫助您的應(yīng)用更快地啟動、占用更少的內(nèi)存并更順暢地運行,而您無需執(zhí)行任何操作。借助 Google Play 提供的 ART 配置文件,ART 在應(yīng)用運行之前就可以預(yù)先編譯應(yīng)用組件。在運行時,Android 10 向 ART 的并發(fā)復(fù)制 (CC) 垃圾回收器添加了分代垃圾回收功能,以節(jié)省垃圾回收的時間并提高 CPU 效率,減少卡頓,同時幫助應(yīng)用在低端設(shè)備上更順暢地運行。

上圖以百分比形式顯示了具體應(yīng)用在使用 Play 配置文件進行測試后啟動時間的縮短幅度。
Neural Networks API 1.2
我們新增了 60 項操作(包括 ARGMAX、ARGMIN 和量化 LSTM),并進行了一系列性能優(yōu)化。這為加速更多模型奠定了基礎(chǔ),比如對象檢測模型和圖像分割模型。我們與硬件供應(yīng)商合作,并使用常見的機器學(xué)習(xí)框架(如 TensorFlow),以針對 NNAPI 1.2 進行優(yōu)化并提供支持。
Thermal API
當(dāng)設(shè)備過熱時,它們可能會限制 CPU 和/或 GPU,而這可能會以意想不到的方式影響應(yīng)用和游戲。現(xiàn)在,在 Android 10 中,應(yīng)用和游戲可以使用 Thermal API 監(jiān)控設(shè)備變化情況,并在設(shè)備過熱時采取措施,使設(shè)備恢復(fù)到正常溫度。例如,影音在線播放應(yīng)用可以降低分辨率/比特率或減少網(wǎng)絡(luò)流量;相機應(yīng)用可以停用閃光燈或密集型圖像增強;游戲可以降低幀速率或減少多邊形曲面細分。如需了解詳情,請點擊此處。
通過公共 API 實現(xiàn)兼容性
Android 10 繼續(xù)增加了對非 SDK 接口的限制,以便應(yīng)用逐步轉(zhuǎn)為僅使用公共 API。如果您目前使用的接口受到限制,則可以選擇針對該接口請求新的公共 API。為了幫助您完成過渡并防止應(yīng)用中斷,我們僅在您的應(yīng)用以 Android 10 (API 29) 為目標(biāo)平臺時實施這些限制。如需詳細了解這些限制,請參閱開發(fā)者指南。
更新速度更快,代碼更新頻率更高
Android 10 可通過 Treble 計劃加快更新速度,這可在 Android 與設(shè)備制造商和芯片制造商提供的底層設(shè)備代碼之間提供一致的可測試接口。借助 Treble 計劃,設(shè)備制造商能夠以更快的速度和更低的費用將 Android 10 引入符合 Treble 標(biāo)準(zhǔn)的設(shè)備中。
Android 10 也是首個支持 Project Mainline(官方名稱為“Google Play 系統(tǒng)更新”)的版本;這是我們用于保護 Android 用戶并通過重要的代碼變更及時更新設(shè)備的新技術(shù),可通過 Google Play 直接獲取。借助 Google Play 系統(tǒng)更新,我們能夠更新所有搭載 Android 10 及更高版本的設(shè)備中的特定內(nèi)部組件,無需設(shè)備制造商全面更新系統(tǒng)。
對于開發(fā)者來說,我們希望 Android 10 中的這些更新能夠廣泛幫助提升設(shè)備間平臺實現(xiàn)的一致性,并隨時間提供更高的統(tǒng)一性,從而降低您的開發(fā)和測試費用。
開始使用
如需獲取適用于 Android 10 的完整開發(fā)者資源,請訪問 developer.android.com/10。