功能與 API 總覽

Android 12 為開發人員推出了強大的新功能和 API。 以下各節可協助您瞭解應用程式功能並開始使用 與相關 API 整合

如需新增、修改及移除 API 的詳細清單,請參閱 API 差異比較 報表。如要進一步瞭解新版 API,請前往 Android API 參考資料:將新的 API 醒目顯示,方便查看。同時, 如要瞭解平台變更可能影響應用程式的哪些層面,請務必查看 針對指定 Android 12 為目標版本的應用程式,列出其行為異動 Android 12適用於所有使用者 應用程式

使用者體驗

Material You

Android 12 推出了名為 Material 的全新設計語言 協助開發人員 更貼近個人需求的精美應用程式為您提供所有最新的 Material Design 3 更新到應用程式中,不妨試試 Alpha 版的 Material Design 元件

Material You

改善小工具

Android 12 改進了現有的 Widgets API,以改善使用者和開發人員 打造優質的應用程式體驗我們製作了一份指南 請確認您的小工具與 Android 12 相容,並使用新的 接著介紹網際網路通訊層 包括兩項主要的安全防護功能

請參閱以下的 Android 12 小工具改善項目: 瞭解詳情

多媒體內容插入

Android 12 導入了全新的整合式 API,可用於讓應用程式 接收來自任何可用來源的多媒體內容:剪貼簿、鍵盤或拖曳 下降了。

詳情請參閱接收 內容

應用程式啟動畫面 API

Android 12 為所有包含 應用程式圖示、顯示應用程式圖示的啟動畫面、 並轉換至應用程式本身請參閱啟動畫面開發人員 指南

圓角 API

Android 12 導入 RoundedCornerWindowInsets.getRoundedCorner(int position), 可為圓角提供半徑和中心點。

詳情請參閱「圓角」。

豐富的觸覺體驗

Android 12 擴充了多項工具,可為 UI 建立豐富的觸覺回饋 事件、沉浸式遊戲效果,以及玩家注意力的注意力觸覺回饋 工作效率。

執行器效果

Android 12 會增添生動效果,例如低音 勾選 也能善用最新致助器的更廣泛頻率頻寬遊戲 開發人員現在可以存取多個不同的 是獨立遊戲中的演員 以同步或不同的觸覺技術提供相同效果 自動執行這些動作我們建議開發人員使用 常數原始物件 建立豐富觸覺效果的構成元素 - 強化 UI 事件和 使用觸覺撰寫功能排列序列 。這些 API 可在 Pixel 4 上試用 ,我們將持續與裝置製造商合作夥伴合作, 最新的觸覺技術為整個生態系統中的使用者提供支援

音訊耦合觸覺效果

Android 12 應用程式可透過以下方式,產生從音訊工作階段產生的觸覺回饋: 通知。這種做法可以打造更身歷其境的遊戲體驗 以及音訊體驗例如,強化觸覺強化鈴聲 呼叫端或駕駛遊戲可以模擬粗糙地形的感受。

請參閱 HapticGenerator 參考文件

AppSearch

Android 12 推出了 AppSearch 這個高效能裝置端搜尋引擎 做為系統服務AppSearch 可讓應用程式為結構化資料建立索引 並使用內建的全文搜尋功能搜尋資料。此外 AppSearch 支援原生搜尋功能,例如高效率建立索引 包括擷取、擷取、支援多種語言,以及關聯性排名。

圖表:說明 AppSearch 中建立索引和搜尋功能

AppSearch 有兩種類型:一個供您的應用程式使用的本機索引 與舊版 Android 相容 適用於整個系統的 Android 12 系統維護透過中央索引 可讓應用程式的資料顯示在系統 UI 介面上 系統預先安裝的情報元件確切取得哪些資料 系統 UI 介面上的顯示大小取決於原始設備製造商 (OEM)。此外, 應用程式可安全地與其他應用程式共用資料, 也能搜尋這些資料

如要進一步瞭解 AppSearch,請參閱 開發人員指南,並透過 AppSearch Jetpack 程式庫 也提供適合開發人員的 API 介面和註解處理工具 聯絡。

遊戲模式

Game Mode API遊戲模式 這樣您就能 遊戲過程,將特性 (例如效能或電池續航力) 按優先順序排列 或遊戲專屬設定

詳情請參閱「遊戲模式」。

子母畫面 (PiP) 建議功能和改善項目

Android 12 針對子母畫面模式進行以下改善:

支援新的子母畫面手勢

Android 12 現在支援擷取與雙指撥動縮放功能 調整子母畫面模式的手勢 回溯期:

  • 使用者可以將視窗向左或向右拖曳,藉此隱藏視窗 如要取消隱藏視窗,使用者可以輕觸視窗上的可見部分 或將視窗拉出

  • 使用者現在可以透過雙指撥動方式進行縮放,調整子母畫面視窗的大小。

Android 12 新增了大幅改善外觀 與動畫類似 可在全螢幕和子母畫面視窗間切換。強烈建議你 導入所有適用的變更;完成後,這些變更就會 自動配合摺疊式裝置和平板電腦等大螢幕 不需要進行任何額外作業

這些功能包括:

全新來電通知可決定來電的重要性

Android 12 新增了通知樣式 Notification.CallStyle敬上 通話。使用這個範本,就能讓應用程式指出 顯示來電時間,方法是以醒目的方式顯示 狀態列;使用者只要輕觸這個方塊,即可返回通話。

由於來電和進行中的通話對使用者而言最為重要 通知在通知中的排名最高。此排名也讓 系統可能將這類優先來電轉接至其他裝置。

為所有類型的呼叫實作以下程式碼。

Kotlin

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

使用 forIncomingCall() 可以為來電建立呼叫樣式通知。

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

使用 forOngoingCall() 建立通話樣式通知。

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

使用 forScreeningCall() 建立來電樣式通知,用於過濾來電。

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

為通知添加豐富的圖片支援

在 Android 12 中,您可以透過下列方式充實應用程式的通知體驗: 提供「MessagingStyle()」中的動畫圖片 和 BigPictureStyle() 通知。此外,您的應用程式現在可讓使用者在遇到以下情況時傳送圖片訊息: 使用者可以透過通知欄回覆訊息

改善手勢操作的沉浸模式

Android 12 整合了現有行為,讓使用者更容易 在沉浸式體驗中執行手勢操作指令 模式。於 此外,Android 12 針對固定式設計提供回溯相容性行為 沉浸式體驗 模式。

近期分享網址 (僅限 Pixel)

在 Pixel 裝置上,使用者現在可以分享最近瀏覽過的網路內容連結 直接在「最近使用」畫面中使用者在應用程式中瀏覽內容時 可以滑動到「最近使用」畫面 尋找他們查看內容的應用程式 然後輕觸連結按鈕,即可複製或分享網址

詳情請參閱「啟用最近用過的網址」 分享

安全性和隱私權

隱私資訊主頁

垂直時間軸會列出可存取位置資訊的應用程式,以及存取時間
圖 1.位置使用畫面是「隱私權資訊主頁」的一部分。

在支援 Android 12 或以上版本的裝置上,系統設定會顯示「隱私權資訊主頁」畫面。在這畫面,使用者可以透過個別存取其畫面,看到應用程式存取位置、相機和麥克風的資訊。每個畫面都會顯示不同應用程式各自存取特定類型資料的時間軸。圖 1 顯示位置資訊的資料存取時間軸。

應用程式可以提供原因 使用者 ,協助他們瞭解應用程式存取位置資訊、相機或麥克風的原因 可能不準確或不適當原因會顯示在全新的「隱私資訊主頁」畫面、 應用程式的權限畫面,或兩者並用。

藍牙權限

Android 12 導入了 BLUETOOTH_SCANBLUETOOTH_ADVERTISE, 和 BLUETOOTH_CONNECT 授予其要求的權限。這些權限對於指定應用程式目標的應用程式來說 Android 12:可透過藍牙互動 裝置,尤其是不支援作業系統的應用程式 要求存取裝置位置資訊。

更新應用程式的藍牙權限宣告

如要準備指定 Android 12 以上版本的裝置,請更新應用程式 應用程式邏輯而不是宣告舊版藍牙組合 權限, 宣告較現代化的藍牙組合 權限

權限群組查詢

在 Android 12 以上版本,您可以查詢系統的分類方式 平台提供的權限 權限群組:

,瞭解如何調查及移除這項存取權。

隱藏應用程式重疊視窗

為方便開發人員進一步控管使用者與 開發人員的應用程式,Android 12 推出了隱藏功能 疊加顯示這類視窗的應用程式 SYSTEM_ALERT_WINDOW敬上 權限。

當您宣告 HIDE_OVERLAY_WINDOWS敬上 權限時 setHideOverlayWindows()。 來表示所有類型的視窗 TYPE_APPLICATION_OVERLAY 當應用程式本身的視窗顯示時,就要隱藏該面板。應用程式可能會選擇這麼做 這個做法適合在顯示敏感畫面時 例如交易確認流程

顯示「TYPE_APPLICATION_OVERLAY」類型視窗的應用程式應考慮採用 較適合其用途的替代方案,例如 子母畫面泡泡

已知的簽署者權限保護標記

自 Android 12 起, 的 knownCerts 屬性 簽章層級權限 可讓您參照已知簽章的摘要 憑證 讓應用程式從可以最快做出回應的位置 回應使用者要求

您的應用程式可以宣告此屬性,並使用 knownSigner 標記以允許 裝置及應用程式授予簽章權限給其他人 應用程式,不包含 必須在裝置製造和運送時簽署應用程式。

裝置屬性認證

Android 12 擴充了一組可驗證裝置屬性的應用程式 仍在認證階段 認證 產生新金鑰的時機

自 Android 9 (API 級別 28) 起,裝置政策 擁有者 (DPO) Keymaster 4.0 以上版本 並驗證這些認證憑證中的裝置屬性距離開始還有 Android 12,任何指定 Android 12 (API 級別 31) 以上版本的應用程式都能執行 先使用 setDevicePropertiesAttestationIncluded()敬上 方法。

產生的裝置屬性包括: Build 欄位:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

安全螢幕鎖定通知動作

從 Android 12 開始,Notification.Action.Builder 類別 支援 setAuthenticationRequired() 方法,讓應用程式要求 已解鎖 即可。這個方法可協助新增 為通知在鎖定的裝置上提供多一層安全防護。

BiometricPrompt 的本地化字串

Android 12 導入了新的 API,可協助您改善應用程式的生物特徵辨識功能 以及驗證使用者體驗新版 BiometricManager.Strings 巢狀類別包含 getButtonLabel() getPromptMessage(), 和 getSettingName() 方法,讓應用程式擷取使用者可理解的本地化按鈕標籤。 提示訊息或應用程式設定名稱您可以利用這些標籤 生物特徵辨識驗證的使用者面向操作說明 方法,例如「使用人臉解鎖功能」或「使用您的指紋繼續操作」等。

訊息應用程式中的網路釣魚偵測功能 (僅限 Pixel)

使用者看到可疑郵件時,看到類似這則訊息 。

在支援的 Pixel 裝置上,Android 12 會針對訊息執行網路釣魚偵測功能 熱門訊息應用程式) 中常見的訊息。系統使用裝置端機器學習技術 ,藉此偵測可疑活動。偵測到裝置時,系統會顯示安全 並重疊在訊息應用程式的使用者介面上方,警告使用者。例如網路釣魚 偵測功能可能會在出現下列潛在風險時警告使用者:

  • 可疑要求,例如傳送代碼、金錢或類似要求
  • 不信任的網址
  • 惡意附件
  • 連至惡意應用程式的連結

除了警告使用者之外,重疊元素也能讓使用者回報 可疑訊息,並針對系統發出的警告提供意見回饋。

開發人員如不想使用這項功能,可以新增中繼資料標記,包括: 應用程式資訊清單中的字串 com.google.android.ALLOW_PHISHING_DETECTION 檔案。例如:

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

媒體

相容媒體轉碼

從 Android 12 (API 級別 31) 開始,系統可以自動轉碼 HEVC(H.265)HDR (HDR10 和 HDR10+) 透過 AVC 錄製的影片 (H.264) 是普遍使用的 可與標準播放器相容這會使用現代轉碼器 以供使用,而不會犧牲與舊版應用程式的相容性。

詳情請參閱相容的媒體轉碼

效能類別

Android 12 導入了名為「效能類別」的標準。A 罩杯 效能類別指定 Android 基準以外的硬體功能 Google Cloud 就是最佳選擇每部 Android 裝置都會聲明自身的效能類別 支援。開發人員可以在執行階段查看裝置的效能類別,並 提供更優異的體驗,充分發揮裝置的 即便沒有技術背景,也能因這些工具的功能而受益

請參閱「效能類別」 ,掌握更多詳細資訊。

改善影片編碼功能

Android 12 定義了一組標準按鍵來控制 用於影片編碼的量化參數 (QP) 值,可讓開發人員 請避免使用供應商專屬的程式碼

您可以在 MediaFormat API 以及 NDK 媒體庫

從 Android 12 視訊編碼器開始,我們會強制執行最低品質要求 門檻。確保使用者不會遇到極度品質不佳的問題 尤其如此

音訊焦點

自 Android 12 (API 級別 31) 起,當應用程式要求音訊焦點,而 其他應用程式有焦點且正在播放,系統就會淡出正在播放的應用程式。

請參閱「Android 12 以上版本的音訊焦點」 ,掌握更多詳細資訊。

MediaDrm 更新

若要判斷是否需要使用安全解碼器元件, 現行的 MediaDrm API,請務必按照下列步驟進行:

  1. 建立 MediaDrm
  2. 開啟工作階段即可取得工作階段 ID。
  3. 使用工作階段 ID 建立 MediaCrypto
  4. 呼叫 MediaCrypto.requiresSecureDecoderComponent(mimeType)

運用新方法 requiresSecureDecoder(@NonNull String mime)requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) 建立 MediaDrm 後就可以得知

相機

Camera2 廠商擴充功能

我們許多裝置製造商合作夥伴都內建了自訂相機擴充功能,例如 例如散景、HDR、夜間模式等等 打造差異化體驗CameraX 程式庫 自訂供應商擴充功能在 Android 12 中,以下 供應商擴充功能現在會直接在平台中顯示。

這項新增設定有助於處理複雜的應用程式 Camera2敬上 導入供應商擴充功能後,不必 對舊版程式碼的重大變更Camera2 Extension API 會明確公開 同一組 延伸模組 ,而且許多不同的 裝置,因此可直接使用 額外設定

詳情請參閱 CameraExtensionCharacteristics

支援四角鏡頭感應器

現今許多 Android 裝置都搭載超高解析度的相機感應器 這種模式在 Quad 或 Nona Bayer 的模式中運作,相當靈活 比較圖片品質和低光源成效。Android 12 推出 平台 API,讓第三方應用程式能充分利用這些多元功能的平台 感應器。新版 API 支援這些感應器的獨特行為,並將 可以在 Compute Engine 上執行,以支援不同的串流設定和組合 完整解析度或「最大解析度」與「預設」模式的比較。

圖形和圖片

允許應用程式直接存取空值標記追蹤記錄

從 Android 12 開始,您可以透過 Android 12 存取應用程式的原生程式碼錯誤空值標記, 通訊協定緩衝區 ApplicationExitInfo.getTraceInputStream()敬上 方法。通訊協定緩衝區使用這個結構定義進行序列化。 在此之前,您只能透過 Android Debug Bridge (ADB) 存取這項資訊。

詳情請參閱「讓應用程式直接存取空值標記追蹤記錄」。

AVIF 圖片支援

Android 12 支援使用 AV1 圖片檔案格式的圖片 (AVIF)。AVIF 是一種容器格式,適用於編碼後的圖片和序列 這個 AV1 格式AVIF 利用影片中的影格內編碼內容 。這項功能可大幅提升相同檔案大小的影像品質 與舊圖片格式 (如 JPEG) 相比如果想深入瞭解 宣傳這個格式的好處,請見 Jake Archibald 的網誌 文章

模糊相片、色彩濾鏡和其他效果

Android 12 新增了 RenderEffect 可套用常見的圖形效果,例如模糊、色彩濾鏡、Android 著色器 以及其他 View 效果 以及轉譯階層效果可合併為兩種連鎖效果 (產生內外效果) 或混合效果。其他 Android 裝置 裝置處理能力有限,因此不一定會支援這項功能。

效果也可以套用到基礎 RenderNode 呼叫 View.setRenderEffect(RenderEffect),即可使用 View

如何實作 RenderEffect

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

原生動畫圖片解碼

在 Android 12 中,NDK ImageDecoder API 已擴充 解碼器會針對所有影格和時間資料 使用動畫 GIFWebP 檔案格式的動畫。時機 是 Android 11 所導入的,此 API 只會解碼 都採用這種格式

使用 ImageDecoder 取代第三方程式庫,進一步減少 APK 尺寸 ,並享有日後的安全性與效能相關更新。

如要進一步瞭解 API,請參閱 API 參考資料GitHub 範例

連線能力

讓隨附應用程式保持啟用狀態

為了利用隨附應用程式持續執行裝置來管理裝置, Android 12 導入的 API 會執行以下操作:

  • 在隨附裝置在有效範圍內時喚醒應用程式。
  • 確保裝置在 範圍。

如要使用 API,請使用隨附裝置連線裝置 經理。如要 資訊,請參閱 CompanionDeviceManager.startObservingDevicePresence()敬上 和 CompanionDeviceService.onDeviceAppeared()

隨附裝置管理工具設定檔

使用隨附裝置設定檔的權限對話方塊 在單一要求中請求多項權限

Android 12 (API 級別 31) 以上版本的合作夥伴應用程式可使用隨附裝置 設定檔。透過使用設定檔,應用程式能夠整合多種裝置類型專用權限的授予程序,只要一個步驟就能處理完畢,可簡化註冊流程。

連線到裝置時,系統便會授予這些隨附應用程式整合的權限,並只在裝置連線期間有效。刪除應用程式 移除關聯也會一併移除權限。

詳情請參閱 AssociationRequest.Builder.setDeviceProfile()

改善頻寬預估功能

在 Android 12 中, getLinkDownstreamBandwidthKbps()敬上 和 getLinkUpstreamBandwidthKbps()。 都能改善 Wi-Fi 和行動網路連線。目前傳回的值 代表使用者各電信業者或 Wi-Fi 網路的歷來加權平均處理量 裝置上所有應用程式的 SSID、網路類型和訊號等級。 這可以傳回更準確的預期處理量預估結果 可提供應用程式冷啟動的估算值,同時需要的週期更少 與其他處理量估算方法相比的結果

Wi-Fi 偵測 (NAN) 強化功能

Android 12 對 Wi-Fi Aware 新增了幾項強化功能:

  • 在搭載 Android 12 (API 級別 31) 以上版本的裝置上,您可以使用 onServiceLost() 回呼,即可在應用程式因 服務停止或移出範圍外。
  • 設定多個資料路徑 (NAN 資料路徑) 的方式異動 更有效率較舊版本使用 L2 訊息交換功能 初始資訊,這造成延遲執行中的裝置 在 Android 12 以上版本,可設定回應器 (伺服器) 也不例外 預先掌握相關資訊這樣可加快資料路徑的導入速度,並 只有一個網路要求的點對點連結。
  • 可以防止架構在下列情況中拒絕探索或連線要求: 但在搭載 Android 12 和 就可以呼叫 WifiAwareManager.getAvailableAwareResources()。 此方法的傳回值可讓您取得可用資料的數量 路徑、可用的發布工作階段數量,以及可用的 以及訂閱工作階段

同時點對點 + 網際網路連線

如果指定 Android 12 (API 級別 31) 以上版本的裝置在搭載 硬體支援 (使用點對點連線) 連線也不會中斷您的 或現有的 Wi-Fi 連線。目的地: 檢查是否支援此功能,請使用 WifiManager.isMultiStaConcurrencySupported()

啟用螢幕以關閉 NFC 付款

在指定 Android 12 以上版本的應用程式中,您可以啟用 NFC 輕鬆付款 requireDeviceScreenOnfalse。如要進一步瞭解螢幕關閉或鎖定時進行 NFC 付款的相關資訊,請參見 關閉螢幕和螢幕鎖定 行為

儲存空間

Android 12 推出了下列儲存空間管理功能 功能:

核心功能

自動更新應用程式

Android 12 導入了 setRequireUserAction()敬上 方法是使用 PackageInstaller API。 這個方法可讓安裝程式應用程式執行應用程式更新,不需要 確認動作。

裝置晶片組資訊

Android 12 會在 android.os.Build 中加入兩個常數, SoC 晶片組供應商和模型資訊。您可以擷取 並呼叫 Build.SOC_MANUFACTURERBuild.SOC_MODEL

核心 Java API 更新

根據要求以及與開發人員合作,我們新增了下列項目 Android 12 的核心程式庫:

類別 API
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime