功能與 API

Android 16 為開發人員推出了強大的新功能和 API。以下各節會簡要說明這些功能,協助您開始使用相關 API。

如需新增、修改及移除 API 的詳細清單,請參閱 API 差異比較表。如要進一步瞭解新的 API,請參閱 Android API 參考資料 - 新的 API 會醒目顯示,以利於查看。

此外,也請查看平台變更可能對應用程式造成的影響。詳情請參閱下列頁面:

核心功能

Android 包含可擴充 Android 系統核心功能的新 API。

2025 年推出兩項 Android API

  • This preview is for the next major release of Android with a planned launch in Q2 of 2025. This release is similar to all of our API releases in the past, where we can have planned behavior changes that are often tied to a targetSdkVersion.
  • We're planning the major release a quarter earlier (Q2 rather than Q3 in prior years) to better align with the schedule of device launches across our ecosystem, so more devices can get the major release of Android sooner. With the major release coming in Q2, you'll need to do your annual compatibility testing a few months earlier than in previous years to make sure your apps are ready.
  • We plan to have another release in Q4 of 2025 which also will include new developer APIs. The Q2 major release will be the only release in 2025 to include planned behavior changes that could affect apps.

In addition to new developer APIs, the Q4 minor release will pick up feature updates, optimizations, and bug fixes; it will not include any app-impacting behavior changes.

Timeline view of Android releases in 2025, noting that the 25Q2
       release is a major release and the 25Q4 release is a minor release.

We'll continue to have quarterly Android releases. The Q1 and Q3 updates in-between the API releases will provide incremental updates to help ensure continuous quality. We're actively working with our device partners to bring the Q2 release to as many devices as possible.

Using new APIs with major and minor releases

Guarding a code block with a check for API level is done today using the SDK_INT constant with VERSION_CODES. This will continue to be supported for major Android releases.

if (SDK_INT >= VERSION_CODES.BAKLAVA) {
  // Use APIs introduced in Android 16
}

The new SDK_INT_FULL constant can be used for API checks against both major and minor versions with the new VERSION_CODES_FULL enumeration.

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor release
}

You can also use the Build.getMinorSdkVersion() method to get just the minor SDK version.

val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)

These APIs have not yet been finalized and are subject to change, so please send us feedback if you have any concerns.

使用者體驗和系統 UI

Android 16 可讓應用程式開發人員和使用者進一步控管及彈性設定裝置,以符合自身需求。

以進度為主的通知

Android 16 推出以進度為主的通知,協助使用者順暢追蹤使用者啟動的端對端歷程。

Notification.ProgressStyle 是一種新的通知樣式,可讓您建立以進度為主的通知。主要用途包括共乘、外送和導航。在 Notification.ProgressStyle 類別中,您可以使用區隔,表示使用者歷程中的狀態和里程碑。

To learn more, see the Progress-centric notifications documentation page.

在螢幕鎖定畫面上顯示以進度為主的通知。
通知欄中顯示以進度為主的通知。

預測返回更新

Android 16 新增了新的 API,可協助您在手勢導覽 (例如返回主畫面動畫) 中啟用預測返回系統動畫。使用新的 PRIORITY_SYSTEM_NAVIGATION_OBSERVER 註冊 onBackInvokedCallback,即可在系統處理返回導覽時讓應用程式接收一般 onBackInvoked 呼叫,且不會影響一般返回導覽流程。

Android 16 也新增了 finishAndRemoveTaskCallback()moveTaskToBackCallback。只要將這些回呼註冊至 OnBackInvokedDispatcher,系統就能在使用者執行返回手勢時觸發特定行為,並播放相應的提前動畫。

更豐富的觸覺回饋

自推出以來,Android 就提供觸覺感應致動器控制項。

Android 11 新增了對更複雜的觸覺效果支援,進階的致動器可透過裝置定義語義原始類型的 VibrationEffect.Compositions 支援此類效果。

Android 16 新增觸覺 API,讓應用程式定義觸覺效果的振幅和頻率曲線,同時抽象化裝置功能之間的差異。

開發人員工作效率和工具

我們致力於改善您的工作效率,因此大部分工作都圍繞在 Android StudioJetpack ComposeAndroid Jetpack 程式庫等工具。不過,我們也會持續尋找平台上的各種方法,協助您實現願景。

動態桌布的內容處理方式

在 Android 16 中,動態桌布架構會獲得新的內容 API,以解決動態、使用者導向桌布的挑戰。目前,整合使用者提供內容的動態桌布需要複雜的服務專屬實作項目。Android 16 推出 WallpaperDescriptionWallpaperInstance。您可以使用 WallpaperDescription 識別同一個服務中動態桌布的不同例項。舉例來說,如果桌布同時出現在主畫面和螢幕鎖定畫面,則兩者可能會顯示不同的內容。桌布挑選器和 WallpaperManager 會使用這項中繼資料,為使用者提供更優質的桌布,讓您能以更簡便的方式打造多樣化且個人化的動態桌布體驗。

效能和電池

Android 16 推出多項 API,可協助您收集應用程式的深入分析資訊。

系統觸發的剖析

ProfilingManager 已在 Android 15 中新增,讓應用程式能夠在外部公開裝置上使用 Perfetto 要求收集分析資料。不過,由於這項剖析作業必須從應用程式啟動,因此應用程式很難或無法擷取啟動或 ANR 等重要流程。

為協助您完成這項工作,Android 16 為 ProfilingManager 導入系統觸發的剖析功能。應用程式可以註冊對特定觸發事件 (例如冷啟動 reportFullyDrawn 或 ANR) 的追蹤記錄興趣,系統就會代替應用程式啟動及停止追蹤記錄。追蹤記錄完成後,結果會傳送至應用程式的資料目錄。

ApplicationStartInfo 中的啟動元件

ApplicationStartInfo 已在 Android 15 中新增,可讓應用程式查看程序啟動原因、啟動類型、啟動時間、節流和其他實用的診斷資料。Android 16 新增了 getStartComponent(),用於區分觸發啟動的元件類型,這有助於最佳化應用程式的啟動流程。

更深入瞭解工作

The JobScheduler#getPendingJobReason() API returns a reason why a job might be pending. However, a job might be pending for multiple reasons.

In Android 16, we are introducing a new API JobScheduler#getPendingJobReasons(int jobId), which returns multiple reasons why a job is pending, due to both explicit constraints set by the developer and implicit constraints set by the system.

We're also introducing JobScheduler#getPendingJobReasonsHistory(int jobId), which returns a list of the most recent constraint changes.

We recommend using the API to help you debug why your jobs may not be executing, especially if you're seeing reduced success rates of certain tasks or have bugs around latency of certain job completion. For example, updating widgets in the background failed to occur or prefetch job failed to be called prior to app start.

This can also better help you understand if certain jobs are not completing due to system defined constraints versus explicitly set constraints.

自動調整刷新率

Adaptive refresh rate (ARR), introduced in Android 15, enables the display refresh rate on supported hardware to adapt to the content frame rate using discrete VSync steps. This reduces power consumption while eliminating the need for potentially jank-inducing mode-switching.

Android 16 introduces hasArrSupport() and getSuggestedFrameRate(int) while restoring getSupportedRefreshRates() to make it easier for your apps to take advantage of ARR. RecyclerView 1.4 internally supports ARR when it is settling from a fling or smooth scroll, and we're continuing our work to add ARR support into more Jetpack libraries. This frame rate article covers many of the APIs you can use to set the frame rate so that your app can directly use ARR.

ADPF 中的 Headroom API

SystemHealthManager 引進 getCpuHeadroomgetGpuHeadroom API,旨在為遊戲和資源密集型應用程式提供可用 CPU 和 GPU 資源的預估值。這些方法可讓您評估應用程式或遊戲如何最佳化系統健康狀況,尤其是與其他Android 動態效能架構 (ADPF) API 搭配使用時,這些 API 可偵測熱控調節

在支援的裝置上使用 CpuHeadroomParamsGpuHeadroomParams,您可以自訂用於計算預留空間的時間視窗,並選擇平均或最低資源可用性。這麼做可以協助您相應減少 CPU 或 GPU 資源使用量,進而提供更優質的使用者體驗和更長的電池續航力。

無障礙設定

Android 16 新增了無障礙 API 和功能,可協助您為所有使用者提供應用程式。

改良的無障礙 API

Android 16 adds additional APIs to enhance UI semantics that help improve consistency for users that rely on accessibility services, such as TalkBack.

Outline text for maximum text contrast

Users with low vision often have reduced contrast sensitivity, making it challenging to distinguish objects from their backgrounds. To help these users, Android 16 introduces outline text, replacing high contrast text, which draws a larger contrasting area around text to greatly improve legibility.

Android 16 contains new AccessibilityManager APIs to let your apps check or register a listener to see if this mode is enabled. This is primarily for UI Toolkits like Compose to offer a similar visual experience. If you maintain a UI Toolkit library or your app performs custom text rendering that bypasses the android.text.Layout class then you can use this to know when outline text is enabled.

Text with enhanced contrast before and after Android 16's new outline text accessibility feature

Duration added to TtsSpan

Android 16 extends TtsSpan with a TYPE_DURATION, consisting of ARG_HOURS, ARG_MINUTES, and ARG_SECONDS. This lets you directly annotate time duration, ensuring accurate and consistent text-to-speech output with services like TalkBack.

Support elements with multiple labels

Android currently allows UI elements to derive their accessibility label from another, and now offers the ability for multiple labels to be associated, a common scenario in web content. By introducing a list-based API within AccessibilityNodeInfo, Android can directly support these multi-label relationships. As part of this change, we've deprecated AccessibilityNodeInfo#setLabeledBy and #getLabeledBy in favor of #addLabeledBy, #removeLabeledBy, and #getLabeledByList.

Improved support for expandable elements

Android 16 adds accessibility APIs that allow you to convey the expanded or collapsed state of interactive elements, such as menus and expandable lists. By setting the expanded state using setExpandedState and dispatching TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents with a CONTENT_CHANGE_TYPE_EXPANDED content change type, you can ensure that screen readers like TalkBack announce state changes, providing a more intuitive and inclusive user experience.

Indeterminate ProgressBars

Android 16 adds RANGE_TYPE_INDETERMINATE, giving a way for you to expose RangeInfo for both determinate and indeterminate ProgressBar widgets, allowing services like TalkBack to more consistently provide feedback for progress indicators.

Tri-state CheckBox

The new AccessibilityNodeInfo getChecked and setChecked(int) methods in Android 16 now support a "partially checked" state in addition to "checked" and "unchecked." This replaces the deprecated boolean isChecked and setChecked(boolean).

Supplemental descriptions

When an accessibility service describes a ViewGroup, it combines content labels from its child views. If you provide a contentDescription for the ViewGroup, accessibility services assume you are also overriding the description of non-focusable child views. This can be problematic if you want to label things like a drop-down (for example, "Font Family") while preserving the current selection for accessibility (for example, "Roboto"). Android 16 adds setSupplementalDescription so you can provide text that provides information about a ViewGroup without overriding information from its children.

Required form fields

Android 16 adds setFieldRequired to AccessibilityNodeInfo so apps can tell an accessibility service that input to a form field is required. This is an important scenario for users filling out many types of forms, even things as simple as a required terms and conditions checkbox, helping users to consistently identify and quickly navigate between required fields.

使用 LE Audio 助聽器時,將手機設為語音通話的麥克風輸入裝置

Android 16 adds the capability for users of LE Audio hearing aids to switch between the built-in microphones on the hearing aids and the microphone on their phone for voice calls. This can be helpful in noisy environments or other situations where the hearing aid's microphones might not perform well.

控制 LEA 助聽器的環境音量

Android 16 adds the capability for users of LE Audio hearing aids to adjust the volume of ambient sound that is picked up by the hearing aid's microphones. This can be helpful in situations where background noise is too loud or too quiet.

相機

Android 16 強化了對專業相機使用者的支援,可進行混合式自動曝光,並精確調整色溫和色調。新的夜間模式指標可協助應用程式瞭解何時該切換至夜間模式攝影工作階段,以及何時該切換回來。新的 Intent 動作可讓您更輕鬆地拍攝動態相片,我們也持續改良 Ultra HDR 相片,支援 HEIC 編碼和 ISO 21496-1 草案標準的新參數。

混合式自動曝光

Android 16 adds new hybrid auto-exposure modes to Camera2, allowing you to manually control specific aspects of exposure while letting the auto-exposure (AE) algorithm handle the rest. You can control ISO + AE, and exposure time + AE, providing greater flexibility compared to the current approach where you either have full manual control or rely entirely on auto-exposure.

fun setISOPriority() {
    // ... (Your existing code before the snippet) ...

    val availablePriorityModes = mStaticInfo.characteristics.get(
        CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
    )

    // ... (Your existing code between the snippets) ...

    // Turn on AE mode to set priority mode
    reqBuilder.set(
        CaptureRequest.CONTROL_AE_MODE,
        CameraMetadata.CONTROL_AE_MODE_ON
    )
    reqBuilder.set(
        CaptureRequest.CONTROL_AE_PRIORITY_MODE,
        CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
    )
    reqBuilder.set(
        CaptureRequest.SENSOR_SENSITIVITY,
        TEST_SENSITIVITY_VALUE
    )
    val request: CaptureRequest = reqBuilder.build()

    // ... (Your existing code after the snippet) ...
}

精確調整色溫和色調

Android 16 新增相機支援功能,可調整精細的色溫和色調,以便更好地支援專業錄影應用程式。在先前的 Android 版本中,您可以透過 CONTROL_AWB_MODE 控制白平設定,其中包含的選項僅限於預設清單,例如 IncandescentCloudyTwilightCOLOR_CORRECTION_MODE_CCT 可讓您使用 COLOR_CORRECTION_COLOR_TEMPERATURECOLOR_CORRECTION_COLOR_TINT,根據相關色溫精確調整白平。

fun setCCT() {
    // ... (Your existing code before this point) ...

    val colorTemperatureRange: Range<Int> =
        mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]

    // Set to manual mode to enable CCT mode
    reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
    reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
    reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
    reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30

    val request: CaptureRequest = reqBuilder.build()

    // ... (Your existing code after this point) ...
}

以下範例顯示在套用不同色溫和色調調整後,相片的樣貌:

未套用色溫或色調調整的原始圖片。
將圖片的色溫調整為 3000。
圖片的色溫已調整為 7000。


將色調降低 50% 的圖片。
色調等級提高 50 的圖片。

相機夜間模式場景偵測

為協助應用程式瞭解何時切換至夜間模式相機工作階段,Android 16 新增了 EXTENSION_NIGHT_MODE_INDICATOR。如果支援,則可在 Camera2 的 CaptureResult 中使用。

這是我們在「Instagram 如何讓使用者拍出令人驚豔的低光照相」網誌文章中,曾簡短提及的即將推出的 API。這篇文章是實用指南,說明如何實作夜間模式,並提供個案研究,說明如何透過應用程式內的相機,分享更多高品質的夜間模式相片。

動態相片拍攝意圖動作

Android 16 新增了標準意圖動作 ACTION_MOTION_PHOTO_CAPTUREACTION_MOTION_PHOTO_CAPTURE_SECURE,可要求相機應用程式擷取動態相片並傳回。

您必須傳遞額外的 EXTRA_OUTPUT 來控制要寫入圖片的位置,或是透過 Intent.setClipData(ClipData) 傳遞 Uri。如果您未設定 ClipData,系統會在您呼叫 Context.startActivity(Intent) 時複製該值。

動態相片示例,顯示靜態圖片和動態播放畫面。

UltraHDR 圖片強化

An illustration of Standard Dynamic Range (SDR) versus High Dynamic Range (HDR) image quality.

Android 16 continues our work to deliver dazzling image quality with UltraHDR images. It adds support for UltraHDR images in the HEIC file format. These images will get ImageFormat type HEIC_ULTRAHDR and will contain an embedded gainmap similar to the existing UltraHDR JPEG format. We're working on AVIF support for UltraHDR as well, so stay tuned.

In addition, Android 16 implements additional parameters in UltraHDR from the ISO 21496-1 draft standard, including the ability to get and set the colorspace that gainmap math should be applied in, as well as support for HDR encoded base images with SDR gainmaps.

圖形

Android 16 包含最新的圖像改善功能,例如使用 AGSL 自訂圖像效果。

使用 AGSL 製作自訂圖像效果

Android 16 新增了 RuntimeColorFilterRuntimeXfermode,讓您可以製作複雜的效果 (例如閾值、棕褐色和色調飽和度),並套用至繪圖呼叫。自 Android 13 起,您可以使用 AGSL 建立可擴充 Shader 的自訂 RuntimeShaders。新的 API 會反映這項情況,新增由 AGSL 提供動力的 RuntimeColorFilter,可擴充 ColorFilter,以及 Xfermode 效果,讓您在來源和目的地像素之間實作以 AGSL 為基礎的自訂合成和混合效果。

private val thresholdEffectString = """
    uniform half threshold;

    half4 main(half4 c) {
        half luminosity = dot(c.rgb, half3(0.2126, 0.7152, 0.0722));
        half bw = step(threshold, luminosity);
        return bw.xxx1 * c.a;
    }"""

fun setCustomColorFilter(paint: Paint) {
   val filter = RuntimeColorFilter(thresholdEffectString)
   filter.setFloatUniform(0.5);
   paint.colorFilter = filter
}

連線能力

Android 16 更新了平台,讓應用程式能使用通訊和無線技術的最新進展。

安全再升級的測距功能

Android 16 adds support for robust security features in Wi-Fi location on supported devices with Wi-Fi 6's 802.11az, allowing apps to combine the higher accuracy, greater scalability, and dynamic scheduling of the protocol with security enhancements including AES-256-based encryption and protection against MITM attacks. This allows it to be used more safely in proximity use cases, such as unlocking a laptop or a vehicle door. 802.11az is integrated with the Wi-Fi 6 standard, leveraging its infrastructure and capabilities for wider adoption and easier deployment.

一般測距 API

Android 16 includes the new RangingManager, which provides ways to determine the distance and angle on supported hardware between the local device and a remote device. RangingManager supports the usage of a variety of ranging technologies such as BLE channel sounding, BLE RSSI-based ranging, Ultra Wideband, and Wi-Fi round trip time.

隨附裝置管理工具裝置狀態

In Android 16, new APIs are being introduced for binding your companion app service. Service will be bound when BLE is in range and Bluetooth is connected and service will be unbound when BLE is out of range or Bluetooth is disconnected. App will receives a new 'onDevicePresenceEvent()' callback based on various of DevicePresenceEvent. More details can be found in 'startObservingDevicePresence(ObservingDevicePresenceRequest)'.

媒體

Android 16 包含多項功能,可提升媒體體驗。

相片挑選工具改良功能

相片挑選工具提供內建的安全方法,讓使用者授予應用程式存取權,以便存取本機和雲端儲存空間中的所選圖片和影片,而非整個媒體庫。透過 Google 系統更新Google Play 服務,結合使用模組化系統元件,可支援 Android 4.4 (API 級別 19) 以下版本。整合作業只需要幾行程式碼和相關的 Android Jetpack 程式庫

Android 16 對相片挑選工具進行了以下改善:

  • 內嵌式相片挑選器新 API,可讓應用程式將相片挑選器嵌入其檢視區塊階層。這樣一來,使用者就能感受到應用程式更整合的部分,同時仍可利用程序隔離功能,讓使用者能夠選取媒體,而應用程式不需要過度廣泛的權限。如要盡可能提高各平台版本的相容性並簡化整合作業,如果您想整合內嵌的相片挑選工具,請使用即將推出的 Android Jetpack 程式庫。
  • 相片挑選器中的雲端搜尋功能新的 API 可讓 Android 相片挑選器從雲端媒體供應器搜尋內容。相片挑選工具中的搜尋功能即將推出。

進階專業影片

Android 16 推出了對進階專業影片 (APV) 轉碼器的支援,該轉碼器專為專業級高品質影片錄製和後製作業而設計。

APV 編碼器標準具有下列功能:

  • 感知上無損的影片品質 (接近原始影片品質)
  • 低複雜度和高吞吐量的單一影格編碼 (不含像素網域預測),以便更妥善支援編輯工作流程
  • 支援高位元速率範圍 (最高可達數 Gbps),適用於 2K、4K 和 8K 解析度的內容,可透過輕量化熵值編碼方案啟用
  • 為沉浸式內容和啟用平行編碼/解碼作業的框架平鋪作業
  • 支援各種色度取樣格式和位元深度
  • 支援多重解碼和重新編碼,且不會嚴重降低視覺品質
  • 支援多視角影片和輔助影片,例如深度、alpha 和預覽
  • 支援 HDR10/10+ 和使用者定義的中繼資料

OpenAPV 專案提供 APV 的參考實作項目。Android 16 將實作支援 APV 422-10 設定檔,提供 YUV 422 色彩取樣功能,以及 10 位元編碼和最高 2 Gbps 的目標位元率。

隱私權

Android 16 包含多項功能,可協助應用程式開發人員保護使用者隱私權。

健康資料同步更新

Health Connect adds ACTIVITY_INTENSITY, a data type defined according to World Health Organization guidelines around moderate and vigorous activity. Each record requires the start time, the end time, and whether the activity intensity is moderate or vigorous.

Health Connect also contains updated APIs supporting medical records. This allows apps to read and write medical records in FHIR format with explicit user consent.

Android 版 Privacy Sandbox

Android 16 整合了最新版本的 Android 版 Privacy Sandbox,這是我們持續開發技術的一部分,讓使用者知道自己的隱私權受到保護。網站提供更多 Android 版 Privacy Sandbox 開發人員 Beta 版計畫的相關資訊,協助您開始使用。請查看 SDK 執行階段,讓 SDK 在專屬的執行階段環境中執行,而非在服務的應用程式中執行,以便在收集和分享使用者資料時提供更完善的防護。

安全性

Android 16 包含多項功能,可協助您提升應用程式的安全性及保護應用程式資料。

金鑰共用 API

Android 16 新增了 API,可支援與其他應用程式共用 Android KeyStore 金鑰的存取權。新的 KeyStoreManager 類別支援應用程式 uid 授予撤銷金鑰存取權,並包含可讓應用程式存取共用金鑰的 API。

裝置板型規格

Android 16 可讓應用程式充分運用 Android 的板型規格。

電視的標準化影像和音訊品質架構

The new MediaQuality package in Android 16 exposes a set of standardized APIs for access to audio and picture profiles and hardware-related settings. This allows streaming apps to query profiles and apply them to media dynamically:

  • Movies mastered with a wider dynamic range require greater color accuracy to see subtle details in shadows and adjust to ambient light, so a profile that prefers color accuracy over brightness may be appropriate.
  • Live sporting events are often mastered with a narrow dynamic range, but are often watched in daylight, so a profile that preferences brightness over color accuracy can give better results.
  • Fully interactive content wants minimal processing to reduce latency, and wants higher frame rates, which is why many TV's ship with a game profile.

The API allows apps to switch between profiles and users to enjoy tuning supported TVs to best suit their content.

國際化

Android 16 新增多項功能,可提升使用者在不同語言環境下的裝置使用體驗。

直書文字

Android 16 adds low-level support for rendering and measuring text vertically to provide foundational vertical writing support for library developers. This is particularly useful for languages like Japanese that commonly use vertical writing systems. A new flag, VERTICAL_TEXT_FLAG, has been added to the Paint class. When this flag is set using Paint.setFlags, Paint's text measurement APIs will report vertical advances instead of horizontal advances, and Canvas will draw text vertically.

val text = "「春は、曙。」"
Box(
    Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
        drawIntoCanvas { canvas ->
            val paint = Paint().apply { textSize = 64.sp.toPx() }
            // Draw text vertically
            paint.flags = paint.flags or VERTICAL_TEXT_FLAG
            val height = paint.measureText(text)
            canvas.nativeCanvas.drawText(
                text,
                0,
                text.length,
                size.width / 2,
                (size.height - height) / 2,
                paint
            )
        }
    }
) {}

自訂計量系統

使用者現在可以在「設定」中,透過區域偏好設定自訂測量系統。使用者偏好設定會納入語言代碼,因此您可以在 ACTION_LOCALE_CHANGED 上註冊 BroadcastReceiver,以便在地區偏好設定變更時,處理語言代碼設定的變更。

使用格式化工具可協助您提供符合當地體驗的服務。舉例來說,如果使用者將手機設為英文 (美國),或使用英文 (美國) 並將公制系統設為偏好的測量系統,則英文 (美國) 中的「0.5 英寸」會顯示為「12.7 公釐」。

如要找到這些設定,請開啟「設定」應用程式,並依序前往「系統」>「語言與地區」