Android 13 為開發人員推出了強大的新功能和 API。以下各節可協助您瞭解應用程式功能,並開始使用相關的 API。
如需新增、修改及移除 API 的詳細清單,請參閱 API 差異比較表。如要進一步瞭解新的 API,請參閱 Android API 參考資料 - 新的 API 會醒目顯示,以利於查看。以及平台變更 請務必查看 Android 13 中應用程式的行為變更 且且 應用程式。
開發人員工作效率和工具
主題化應用程式圖示
![使用者選擇啟用主題化應用程式圖示](https://developer.android.com/static/images/about/versions/13/themed-app-icons.gif?authuser=9&hl=zh-tw)
從 Android 13 開始,你可以選擇為應用程式圖示套用主題色。使用這項 功能,支援 Android 啟動器中的應用程式圖示會經過調色,以便沿用 使用者所選桌布和其他主題的色彩。
如要支援這項功能,應用程式必須同時提供
自動調整圖示和
單色應用程式圖示,並指向下方的單色應用程式圖示
<adaptive-icon>
元素。如果使用者已啟用主題應用程式
圖示 (也就是在系統設定中開啟「圖示套用主題色」切換按鈕)、
啟動器支援這項功能,並使用
使用者所選的桌布和主題會決定色調顏色
適用於單色應用程式圖示
主畫面不會顯示主題化應用程式圖示,而是顯示 在下列任一情況下,調整自動調整或標準應用程式圖示:
- 如果使用者尚未啟用主題化應用程式圖示
- 如果您的應用程式未提供單色應用程式圖示
- 啟動器不支援主題化應用程式圖示
如需更多詳細資訊和操作說明,請參閱「自動調整圖示」。
個別應用程式語言偏好
![](https://developer.android.com/static/images/about/versions/13/app-languages.png?authuser=9&hl=zh-tw)
在許多情況下,多語言使用者會將系統語言設為某種語言 (例如英文),卻想在特定應用程式中選擇使用其他語言,例如荷蘭文、中文或北印度文。為了讓這類使用者在應用程式中享有更優質的體驗,Android 13 針對支援多種語言的應用程式推出下列功能:
系統設定:提供集中管理各項設定的頁面,使用者可在此為各應用程式選取偏好的語言。
應用程式必須在應用程式資訊清單中宣告
android:localeConfig
屬性,讓系統瞭解應用程式支援多種語言。詳情請參閱這份操作說明,瞭解如何建立資源檔案,並在應用程式的資訊清單檔案中進行宣告。其他 API:利用這類公用 API (例如
LocaleManager
中的setApplicationLocales()
和getApplicationLocales()
方法),應用程式可在執行階段設定與系統語言不同的語言。這些 API 會自動與系統設定保持同步;因此,使用這些 API 建立自訂應用程式內語言選單的應用程式,無論使用者選擇的語言偏好設定為何,都能為使用者提供一致的使用者體驗。公用 API 也有助於減少 通常都支援分割 APK,且支援分割 APK 應用程式自動備份功能:儲存應用程式層級資料 使用者的語言設定
為了提供與 Android 舊版本的回溯相容性,AndroidX 中也提供同等的 API。為求明確,建議採用 API 已在 Appcompat 1.6.0-beta01 中新增 或更高版本。
如果應用程式不支援多種語言,就不會受本次異動影響。
改善文字和語言支援
Android 13 內含多項功能文字和語言改善項目, 您提供的資訊更為完善,以下各節將說明:
加快連字號
連字號可方便閱讀包裝的文字,並使 UI 更實用
自動調整、從 Android 13 開始,系統會透過以下方式最佳化連字號效能:
並增加 200%,因此在 TextView
中啟用該功能,將不會對
轉譯效能如要啟用更快速的連字號,請使用
fullFast
敬上
或
normalFast
。
輸入的頻率
setHyphenationFrequency()
。
文字轉換 API
說日文和中文等語言的使用者會使用拼音 輸入方式,這通常會拖慢搜尋速度,並拖慢自動生成服務等功能。 完成。在 Android 13 中,應用程式可以呼叫新的文字轉換 API,方便使用者找到 讓他們瀏覽的內容更快速輕鬆過去,例如搜尋 要求日本使用者執行下列步驟:
- 輸入「平假名」做為搜尋字詞的拼音 (例如 地點或應用程式名稱)
- 使用鍵盤將平假名字元轉換為漢字
- 使用漢字符號進行重新搜尋
- 最後查看搜尋結果
透過新推出的文字轉換 API,日本使用者就能輸入平假名和 立即看到漢字的搜尋結果,請跳過步驟 2 和 3。
改善非拉丁字母的行高
Android 13 改善了非拉丁文語系 (例如泰米爾文、緬甸文、 泰盧固文和西藏文),並配合各語言修改行高。 新的行高有助於避免裁剪,以及改善字元的位置。 只要指定 Android 13 做為目標版本,應用程式就能使用這些改善功能。 使用新的行距功能時請務必測試應用程式,因為 可能會影響非拉丁語系語言的使用者介面。
![](https://developer.android.com/static/images/about/versions/13/line-heights.png?authuser=9&hl=zh-tw)
改善日文文字換行功能
從 Android 13 開始,TextViews 可以由 Bunsetsu (音色的最小單位) 換行
來代替字元,讓文字更精緻、易讀
日文應用程式。如要充分利用這個包裝,您可以使用
android:lineBreakWordStyle="phrase"
敬上
搭配 TextView。
![](https://developer.android.com/static/images/about/versions/13/japanese-text-wrapping.png?authuser=9&hl=zh-tw)
萬國碼 (Unicode) 程式庫更新
Android 13 新增了下列項目的最新改善、修正和變更: Unicode ICU 70、 Unicode CLDR 40、 和 Unicode 14.0。
以下為幾項重要異動:
- 英文 (加拿大)
en‑CA
和英文 (英國 菲律賓)en‑PH
皆使用英文 (美國)en
沒有可用的翻譯資源時 而不是英文 (英國)en‑GB
。 - 我們為西班牙文
es
、義大利文it
,推出了many
複數類別 葡萄牙文 (葡萄牙文:pt
) 和葡萄牙文 (葡萄牙)pt‑PT
。類似商家 CLDR v38 新增的法文版本。 大型數字。
顏色向量字型
![](https://developer.android.com/static/images/about/versions/13/color-vector-fonts.png?authuser=9&hl=zh-tw)
從 Android 13 開始,系統就提供 COLR 第 1 版的轉譯支援 (COLRv1) 字型,並將系統表情符號更新為 COLRv1 格式。COLRv1 相當適合 字型是小巧的,無論大小為何,都能快速清晰無比。
對於大多數應用程式,系統會處理一切,而 COLRv1 也可正常運作。不過 如果您的應用程式實作自己的文字轉譯並使用系統字型, 建議你測試表情符號算繪
如要進一步瞭解 COLRv1,請參閱下列資源:
快速設定刊登位置 API
通知欄中的「快速設定」能協助使用者輕鬆變更設定 也可以執行快速操作,不必離開應用程式操作環境。收集應用程式資料 提供自訂圖塊、 使用者可以更輕鬆地找到你的圖塊,並新增到「快速」 。使用新的 圖塊刊登位置 API,應用程式現在可以提示使用者直接將自訂圖塊加入 一組使用中的「快速設定」動態磚。新的系統對話方塊可讓使用者新增 資訊方塊,而不必離開應用程式 新增資訊方塊的設定。
剪貼簿預覽
從 Android 13 開始,系統會在 內容就會新增到剪貼簿新的確認作業會執行以下作業:
- 確認已成功複製內容。
- 提供複製內容的預覽畫面。
這項功能可將應用程式複製後顯示的各種通知標準化 讓使用者進一步控管剪貼簿如需其他資訊 造訪複製及貼上功能 頁面。
![複製/貼上小工具](https://developer.android.com/static/images/about/versions/13/new-copy-paste-UI.gif?authuser=9&hl=zh-tw)
預測返回手勢
Android 13 為 Android 裝置推出了預測返回手勢,例如: 手機、大螢幕和摺疊式裝置。如要支援這項功能,你必須符合以下條件: 更新應用程式
如要查看詳細說明文件,請參閱「更新應用程式以支援預測返回手勢 手勢。你也可以試試 程式碼研究室。
藍牙 LE Audio
低功耗 (LE) 音訊技術內建可取代的無線音訊 經典藍牙,並支援特定用途和連線拓撲。這項服務 可讓使用者與親友分享及廣播音訊 訂閱公共廣播訊息,提供資訊、娛樂或無障礙資訊。 我們希望確保使用者在沒有影像的情況下,能收到高保真音訊 犧牲電池續航力,以及能在不同的使用情境之間流暢切換 標準藍牙無法支援的用途自 Android 13 起, 系統內建 LE Audio 支援,因此開發人員可以 相容的裝置。
MIDI 2.0
自 Android 13 起,系統支援 MIDI 2.0 標準。 包括透過 USB 連接 MIDI 2.0 硬體這項標準 提供更多功能,例如提高控制器的解析度、改善對控制器的支援 非西方的國際化,而使用個別註釋來表現出更具體的表現 命名範圍
改善啟動畫面效率
Android 13 改善了啟動畫面動畫啟動畫面的效率 Screen API:
系統會直接從
AnimatedVectorDrawable
。在 Android 13 之前,必須windowSplashScreenAnimationDuration
。使用新的
windowSplashScreenBehavior
屬性進一步掌控 是否一律在 Android 13 的啟動畫面上顯示應用程式圖示 以及更高版本
如需詳細說明文件,請參閱「啟動畫面」。
ART 最佳化
在 Android 13 (API 級別 33) 以上版本中,ART 能夠從原生進行切換
大幅加快程式碼編寫速度,現在 JNI 呼叫速度變快了 2.5 倍。執行階段參考資料
也重新調整後,大多是非阻塞性
可減少資源浪費此外,您可以使用
Reference.refersTo()
敬上
來更快收回無法存取的物件,並且
經過最佳化的類別和方法查詢,翻譯速度會加快。ART 還有
在安裝時執行更多位元碼驗證,避免
在執行階段驗證,並加快應用程式啟動時間。
隱私權與安全性
為已註冊使用情境的接收端提供更安全的匯出服務
為了提高執行階段接收器的安全性,Android 13 推出了 將應用程式指定為 已註冊的廣播接收器 。舊版 裝置上的任何應用程式都能傳送未受保護的廣播訊息給 動態註冊的接收器,除非該接收器受到 簽章權限。
這項匯出設定僅適用於至少 包括:
- 使用
ContextCompat
來自 1.9.0 以上版本的 AndroidX 核心程式庫。 - 指定 Android 13 以上版本。
相片挑選工具
Android 13 (API 級別 33) 以上版本包含 相片挑選工具 無須專人管理當應用程式啟動 相片挑選工具,使用者選取要與應用程式分享的特定圖片和影片 例如個人資料相片 媒體庫。如要取得使用者的相片和 影片。
因為應用程式並未提供 必須宣告任何執行階段權限此外,相片挑選工具另外提供 應用程式內建的標準化 UI,可建立更加一致的使用者 無須專人管理
鄰近 Wi-Fi 裝置的新執行階段權限
Android 13 (API 級別 33) 導入了
執行階段權限
用於管理裝置連線的應用程式的 NEARBY_DEVICES
權限群組
附近的存取點。這些應用程式必須宣告新權限。
NEARBY_WIFI_DEVICES
、
何時
呼叫多個不同的 Wi-Fi API。
此外,前提是應用程式不得透過 Wi-Fi 取得實際位置
API 不需要宣告
ACCESS_FINE_LOCATION
敬上
授予這項權限。
如想進一步瞭解來電目錄、轉接和錄音服務政策, 附近的 Wi-Fi 裝置權限。
具備精確鬧鐘的新權限
如果您的應用程式指定 Android 13 以上版本,您可以使用
USE_EXACT_ALARM
敬上
權限,系統會自動授予應用程式。為了讓應用程式
但這項權限至少必須符合下列其中一項條件
標準:
- 您的應用程式是鬧鐘應用程式或計時器應用程式。
- 您的應用程式是日曆應用程式,可以顯示近期活動的通知。
如果應用程式已設定精確鬧鐘,但不符合《
請繼續宣告
SCHEDULE_EXACT_ALARM
敬上
並做好準備,以因應使用者拒絕的情況
取得應用程式存取權
開發人員可降級的權限
從 Android 13 開始,應用程式可以撤銷未使用的存取權 執行階段權限」一文。這個 API 允許應用程式執行隱私權加強工作,例如:
- 移除未使用的權限。
- 遵循權限最佳做法,提高使用者信任感。您可能會需要 請考慮向使用者顯示對話方塊,顯示您擁有的權限 就會被撤銷
APK 簽署配置 3.1 版
Android 13 現已支援 APK 簽名配置 3.1 版, 則可強化現有模型 APK Signature Scheme v3。 這項配置 說明一些已知的問題 與輪替相關的 APK 簽署配置 v3尤其是 v3.1 簽名配置支援 SDK 版本指定功能,因此可輪播 指定較新版本的平台
v3.1 簽名配置採用的區塊 ID 無法辨識 12L 以下。因此,平台會套用 簽署者行為
- 搭載 Android 13 以上版本的裝置則使用旋轉簽署者登入 v3.1 區塊
- 搭載舊版 Android 的裝置會忽略旋轉簽署者, 請改用 3.0 版區塊中的原始簽署者
應用程式尚未輪替簽署金鑰,不需要其他金鑰 動作。每當這些應用程式選擇旋轉時,系統就會套用 3.1 版 簽章配置預設值
已輪替且想繼續使用輪替簽署的應用程式
就必須更新其金鑰
apksigner
敬上
叫用:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...其中 API_LEVEL
為 32 以下。
改善 KeyStore 和 KeyMint 中的錯誤回報功能
對於會產生金鑰的應用程式,KeyStore 和 KeyMint 現在提供更多詳細資料,
準確來說錯誤指標我們在下方中新增了例外狀況類別階層
java.security.ProviderException
,其中有 Android 特有的例外狀況,包括
Keystore/KeyMint 錯誤代碼、
以及錯誤是否可重試。您也可以修改鍵的方法
,並利用 (簽署、加密) 擲回新的例外狀況。
改善的錯誤報告不侷限於金鑰產生功能,現在應該
以便重新產生金鑰
平板電腦和大螢幕支援
Android 13 是以 Android 12 推出的平板電腦最佳化功能為基礎, 12L 功能推送,包括系統使用者介面最佳化、多工處理效能優異 並改善相容性模式在測試過程中,請確認您的應用程式 在平板電腦及其他大螢幕裝置上呈現最佳視覺效果。
如要進一步瞭解新功能和測試項目,請參閱 平板電腦和大螢幕支援功能 頁面。
圖形
可程式化著色器
![](https://developer.android.com/static/images/about/versions/13/agsl-shader.gif?authuser=9&hl=zh-tw)
從 Android 13 開始,系統會支援程式化
RuntimeShader
物件,其中包含
使用 Android 圖形著色語言定義的行為
(AGSL)。AGSL 共用次數
大多數語法都會搭配 GLSL 運作,但可在 Android 算繪引擎中運作
在 Android 畫布中自訂繪圖,並篩選 View 內容。
Android 內部會使用這些著色器實作
漣漪效果
模糊
和
延展過度捲動。
Android 13 以上版本可讓您為
應用程式。
Choreographer 改良功能
Android 13 推出了公用 API 方法,以便
Choreographer
和
ASurfaceControl
,
為應用程式提供有關可能影格時間軸的詳細資訊,並
更多背景資訊
SurfaceFlinger
關於影格生命週期和過去一樣
張貼回呼
Choreographer
並接收影格時間軸資訊。在 Android 13 (API) 中
第 33 級)),Choreographer
會傳回多個可能的呈現時間,
對應的影格期限應用程式可以選擇簡報時間
隨後
通知SurfaceFlinger
SurfaceFlinger
,則不會嘗試套用交易或
會在所需的呈現時間前緩衝緩衝區。
![](https://developer.android.com/static/images/about/versions/13/13-choreographer.png?authuser=9&hl=zh-tw)
相機
HDR 影片擷取
自 Android 13 起, Camera2 API 支援高動態範圍 (HDR) 影片擷取功能 使用相機錄製 HDR 影片內容相較於標準動態 範圍 (SDR),HDR 可提供更豐富的色彩範圍,並增加動態範圍 (從目前的 100 cd/m2 到 cd/m2 的 1000 秒)。 這讓視訊品質更貼近現實生活,而且影片更豐富 色彩、高亮度和較暗的陰影。
如要進一步瞭解 HDR 影片拍攝功能,請參閱 HDR 影片拍攝說明文件。
媒體
空間音訊
空間音訊功能可帶來身歷其境的聽覺饗宴,為媒體內容帶來聽覺饗宴 提供更切合使用者需求的服務詳情請參閱空間音訊 。
預期音訊轉送
為協助媒體應用程式識別音訊的轉送方式,Android 13
導入音訊路徑 API
AudioManager
類別。
getAudioDevicesForAttributes()
敬上
API 可讓您擷取可能用來
指定的音訊
getDirectProfilesForAttributes()
。
API 可協助您瞭解音訊串流是否能直接播放。使用
這些 API 會決定最佳方案
AudioFormat
,可用於音訊裝置
軌道。
無障礙設定
口述影像
Android 13 (API 級別 33) 推出了新的全系統無障礙功能偏好設定
可讓使用者在所有應用程式中啟用口述影像。音訊
說明是額外的旁白,由講述者談話
說明播放期間畫面的情況
讓音訊自然停頓
應用程式可以按照使用者偏好的口述影像內容運作,方法如下:
使用 isAudioDescriptionRequested()
執行查詢,
如以下程式碼片段所示:
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
應用程式可以新增事件監聽器,監控使用者的偏好設定變更情形
AccessbilityManager
:
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
核心功能
OpenJDK 11 更新
Android 13 會啟動更新 Android 核心程式庫,以配合 同時包含程式庫更新和 Java 11 語言的 OpenJDK 11 LTS 版本 為應用程式和平台開發人員提供支援。核心程式庫異動 Android 13 所推出的功能,也會透過 Google Play 系統更新 ART Mainline 模組。
Android 13 對核心程式庫進行以下變更:
- 支援本機變數和做為參數 lambda 的
var
關鍵字。 String 類別中的新方法:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
支援
Collection.toArray(IntFunction)
,輕鬆調整 新增至陣列。支援
ifPresentOrElse()
、isEmpty()
、orElseThrow()
和stream()
java.util
類別中的Optional
、OptionalDouble
、OptionalInt
和OptionalLong
。延長
SocketOptions
的支援,包括重複使用通訊端。「
NullReader
」、「NullWriter
」、「InputStream
」、「OutputStream
」和「transferTo()
」Reader
功能,將讀取字元轉移至Writer
。新增使用
Charsets
進行網址編碼和解碼的功能。適用於
FileReader
、FileWriter
、PrintStream
和 的Charset
功能PrintWriter
。新增
transferTo()
、readNBytes()
、readAllBytes()
和writeBytes()
ByteArrayInput
、OutputStream
和Input
的函式,或者OutputStream
。支援
java.lang.invoke.VarHandle
的執行階段和編譯器。會在內部使用
VarHandle
,將java.util.concurrent
更新為 OpenJDK 11 API。
Java 和 OpenJDK 是 Oracle 和/或其 關係企業