1. 程式人生 > 其它 >Android 11功能和API概覽(中文版)

Android 11功能和API概覽(中文版)

技術標籤:androidandroid

官方給出的完整版開發手冊:

http://services.google.cn/fh/files/misc/android_11_dev_booklet.pdf

開發者需注意的修改:

新體驗

裝置控制元件

Android 11 包含一個新的 ControlsProviderService API,可用於提供所連線的外部裝置的控制元件。這些控制元件顯示於 Android 電源選單中的裝置控制器下。如需瞭解詳情,請參閱控制外部裝置

媒體控制元件

Android 11 更新了媒體控制元件的顯示方式。媒體控制元件顯示於快捷設定旁。來自多個應用的會話排列在一個可滑動的輪播介面中,其中包括在手機本地播放的會話流、遠端會話流(例如在外部裝置上檢測到的會話或投射會話)以及可繼續播放的以前的會話(按上次播放的順序排列)。

使用者無需啟動相關應用即可在輪播介面中重新開始播放以前的會話。當播放開始後,使用者可按常規方式與媒體控制元件互動。

如需瞭解詳情,請參閱媒體控制元件

螢幕

更好地支援瀑布屏

Android11 提供了一些 API 以支援瀑布屏,這是一種無邊框的全面屏。這種顯示屏被視為劉海屏的變體。現有的 DisplayCutout.getSafeInset…() 方法現在會返回能夠避開瀑布區域以及劉海的安全邊襯區。如需在瀑布區域中呈現您的應用內容,請執行以下操作:

注意:如果您未將上述窗口布局屬性設為 LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS,Android 會在黑邊模式下顯示視窗,從而避開缺口和瀑布區域。

合頁角度感測器和可摺疊裝置

使用 Android 11,可以通過以下方法使執行在採用合頁式螢幕配置的裝置上的應用能夠確定合頁角度:提供具有 TYPE_HINGE_ANGLE 的新感測器,以及新的 SensorEvent,後者可以監控合頁角度,並提供裝置的兩部分之間的角度測量值。您可以使用這些原始測量值在使用者操作裝置時執行精細的動畫顯示。

請參閱可摺疊裝置

對話

改進了會話

Android11 對會話的處理方式進行了多項改進。會話是兩人或更多人之間的實時雙向通訊。這些會話具有特殊的重要性,並且使用者在如何與其進行互動方面有多個新的選項可以選擇。

如需詳細瞭解對話以及您的應用如何支援對話,請參閱人與對話

聊天氣泡

現已面向開發者推出氣泡功能,該功能有助於在系統中顯示會話。對話泡是 Android 10 中的一項實驗性功能,通過開發者選項啟用;在 Android11 中,這項功能不再是必選功能。

如果應用以 Android11(API 級別30)或更高版本為目標平臺,除非其通知滿足新的對話要求,否則不會以Android 10對話泡形式顯示。具體而言,通知必須與快捷方式關聯。

在 Android11 之前,如果您希望通知以氣泡形式顯示,需要明確指定將其設為始終在文件介面模式下啟動。從 Android11 開始,您不再需要明確進行這項設定;如果通知以對話泡形式顯示,平臺會自動將其設為始終在文件介面模式下啟動。

對話泡功能有多項改進,使用者可以更靈活地在每個應用中啟用和停用對話泡功能。對於實現了實驗性支援的開發者,Android11 中的 API 有一些變更:

5G 圖示顯示

如需瞭解如何在使用者的裝置上顯示 5G 圖示,請參閱在使用者連線到 5G 網路時顯示相關資訊

隱私權

Android11 引入了大量變更和限制,目的是加強使用者隱私保護。如需瞭解詳情,請參閱隱私權頁面。

安全

生物識別身份驗證機制更新

為了幫助您控制應用資料的安全級別,Android11 對生物識別身份驗證機制進行了多項改進。這些變更也會在 Jetpack Biometric 庫中顯示。

身份驗證型別

Android11 引入了 BiometricManager.Authenticators 介面,可用於宣告您的應用支援的身份驗證型別

確定使用者所用的身份驗證型別

在使用者進行身份驗證後,您可以通過呼叫 getAuthenticationType() 檢查使用者是使用裝置憑據還是生物識別憑據進行的身份驗證。

對“每次使用時進行身份驗證”金鑰的額外支援

Android11 提供了對“每次使用時進行身份驗證”金鑰的更多支援。

已棄用的方法

Android 11 棄用了以下方法:

  • setDeviceCredentialAllowed() 方法。
  • setUserAuthenticationValidityDurationSeconds() 方法。
  • 不帶任何引數的 canAuthenticate() 過載版本。

安全共享大型資料集

在某些情況下,例如涉及機器學習或媒體播放時,您的應用可能需要與其他應用使用同一個大型資料集。在較早的 Android 版本中,您的應用與其他應用需要各自單獨下載該資料集。

為幫助減少網路中和磁碟上的資料冗餘,Android11 允許使用共享資料 blob 在裝置上快取這些大型資料集。如需詳細瞭解如何共享資料集,請參閱有關共享大型資料集的深度指南

因 OTA 更新而重啟裝置後在未提供使用者憑據的情況下執行檔案級加密

裝置完成 OTA 更新並重啟後,放在受憑據保護的儲存空間中的憑據加密 (CE) 金鑰可立即用於執行檔案級加密 (FBE) 操作。這意味著,完成 OTA 更新後,您的應用可以在使用者輸入其 PIN 碼、解鎖圖案或密碼之前恢復需要 CE 金鑰的操作。

注意:此變更僅影響因 OTA 更新而發生的裝置重啟。如果您的應用在裝置重啟後用戶輸入其 PIN 碼、解鎖圖案或密碼之前始終需要訪問 CE 金鑰,請繼續支援直接啟動

效能和質量

無線除錯

Android11 支援通過 Android 除錯橋 (adb) 從工作站以無線方式部署和除錯應用。例如,您可以將可除錯的應用部署到多臺遠端裝置,而無需通過 USB 實際連線您的裝置,從而避免常見的 USB 連線問題(例如驅動程式安裝方面的問題)。

如需使用無線除錯,您需要使用配對碼將您的裝置與工作站配對。您的工作站和裝置必須連線到同一無線網路。如需連線到您的裝置,請按以下步驟操作:

無線 adb 配對對話方塊

  1. 在您的工作站上,更新到最新版本的 SDK 平臺工具
  2. 在裝置上啟用開發者選項
  3. 啟用無線除錯選項。
  4. 在詢問要在此網路上允許無線除錯嗎?的對話方塊中,點選允許
  5. 選擇使用配對碼配對裝置。記下裝置上顯示的配對碼、IP 地址和埠號(參見圖片)。
  6. 在工作站上,開啟一個終端並導航到 android_sdk/platform-tools
  7. 執行 adb pair ipaddr:port。使用第 5 步中的 IP 地址和埠號。
  8. 當系統提示時,輸入您在第 5 步中獲得的配對碼。系統會顯示一條訊息,表明您的裝置已成功配對。

  1. Enter pairing code: 482924
    Successfully paired to 192.168.1.130:37099 [guid=adb-235XY]
    
  2. (僅適用於 Linux 或 Microsoft Windows)執行 adb connect ipaddr:port。使用無線除錯下的 IP 地址和埠(參見下圖)。

    無線 adb IP 地址和埠號

ADB 增量 APK 安裝

在裝置上安裝大型(2GB 以上)APK 可能需要很長的時間,即使應用只是稍作更改也是如此。ADB(Android 除錯橋)增量 APK 安裝可以安裝足夠的 APK 以啟動應用,同時在後臺流式傳輸剩餘資料,從而加速這一過程。如果裝置支援該功能,並且您安裝了最新的 SDK 平臺工具adb install 將自動使用此功能。如果不支援,系統會自動使用預設安裝方法。

執行以下 adb 命令以使用該功能。如果裝置不支援增量安裝,該命令將會失敗並輸出詳細的解釋。

adb install --incremental

在執行 ADB 增量 APK 安裝之前,您必須先為 APK 簽名並建立一個 APK 簽名方案 v4 檔案。必須將 v4 簽名檔案放在 APK 旁邊,才能使此功能正常執行。

使用原生記憶體分配器進行錯誤檢測

GWP-ASan 是一種原生記憶體分配器功能,可幫助查詢釋放後使用和堆緩衝區溢位錯誤。您可以全域性啟用此功能,也可以為應用的特定子程序啟用此功能。如需瞭解詳情,請參閱 GWP-Asan 指南

Neural Networks API 1.3

Android11 擴充套件並改進了 Neural Networks API (NNAPI)

新運算方式

NNAPI 1.3 引入了新的運算數型別 TENSOR_QUANT8_ASYMM_SIGNED,以支援 TensorFlow Lite 的新量化方案

此外,NNAPI 1.3 還引入了以下新運算:

  • QUANTIZED_LSTM
  • IF
  • WHILE
  • ELU
  • HARD_SWISH
  • FILL
  • RANK

新的機器學習控制元件

NNAPI 1.3 引入了新控制元件以幫助機器學習流暢執行:

NDK Thermal API

當裝置過熱時,它們可能會限制 CPU 和/或 GPU,而這可能會以意想不到的方式影響應用。如果應用或遊戲包含複雜圖形,大量計算或持續網路活動,它們就更容易遇到問題。

在 Android11 中使用 NDK Thermal API 監控裝置上的溫度變化,然後採取相應措施以降低耗電量和裝置溫度。該 API 類似於Java Thermal API;您可以使用它接收任何熱狀態更改的通知或直接輪詢當前狀態。

文字和輸入

改進了 IME 轉換

Android 11 引入了新的 API 以改進輸入法 (IME) 的轉換,例如螢幕鍵盤。這些 API 可讓您更輕鬆地調整應用內容,與 IME 的出現和消失以及狀態和導航欄等其他元素保持同步。

如需在聚焦至任何 EditText 時顯示 IME,請呼叫 view.getInsetsController().show(Type.ime())(您可以在與聚焦的 EditText 相同層次結構中的任何檢視上呼叫此方法,無需專門在 EditText 上呼叫它)。如需隱藏 IME,請呼叫 view.getInsetsController().hide(Type.ime())。您可以通過呼叫 view.getRootWindowInsets().isVisible(Type.ime()) 檢查 IME 當前是否可見。

如需同步應用的檢視與 IME 的顯示和消失,請通過提供 WindowInsetsAnimation.CallbackView.setWindowInsetsAnimationCallback() 在檢視上設定監聽器(您可以在任何檢視上設定該監聽器,它不一定必須為 EditText)。IME 會呼叫監聽器的 onPrepare() 方法,之後會在轉換開始時呼叫 onStart()。然後,它會在每次轉換的過程中呼叫 onProgress()。轉換完成後,IME 會呼叫 onEnd()。在轉換過程中,您隨時可以呼叫 WindowInsetsAnimation.getFraction() 以瞭解轉換的進度。

有關如何使用這些 API 的示例,請參閱新的 WindowInsetsAnimation 程式碼示例。

控制 IME 動畫

您還可以控制 IME 動畫或其他系統欄(如導航欄)的動畫。如需執行此操作,請先呼叫 setOnApplyWindowInsetsListener(),為視窗邊襯區更改設定新的監聽器:

KotlinJava

rootView.setOnApplyWindowInsetsListener { rootView, windowInsets ->
  val barsIme = windowInsets.getInsets(Type.systemBars() or Type.ime())
  rootView.setPadding(barsIme.left, barsIme.top, barsIme.right,
             barsIme.bottom)

   // We return the new WindowInsets.CONSUMED to stop the insets being
   // dispatched any further into the view hierarchy. This replaces the
   // deprecated WindowInsets.consumeSystemWindowInsets() and related
   // functions.
  WindowInsets.CONSUMED
}

如需移動 IME 或其他系統欄,請呼叫控制器的 controlWindowInsetsAnimation() 方法:

KotlinJava

view.windowInsetsController.controlWindowInsetsAnimation(
   Type.ime(),
   1000,
   LinearInterpolator(),
   cancellationSignal,
   object : WindowInsetsAnimationControlListener() {
     fun onReady(controller: WindowInsetsAnimationController,
            types: Int) {
       // update IME inset
      controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
             1f /* alpha */, 0.1 /* fraction progress */)
     }
   }
);

ICU 庫更新

Android11 更新了 android.icu 軟體包,以使用 ICU 庫版本 66,而 Android 10 中使用的是版本 63。新版庫包含更新的 CLDR 語言區域資料以及眾多對於 Android 中的國際化支援的增強功能。

新版庫包含以下主要變更:

  • 許多格式化 API 現在都支援可擴充套件 FormattedValue 的新返回物件型別。
  • LocaleMatcher API 在以下方面得到增強:提供了構建器類,支援 java.util.Locale 型別,並且結果類可提供有關匹配的額外資料。
  • 現在支援 Unicode 13。

媒體

分配 MediaCodec 緩衝區

Android 11 包含一個新的 MediaCodec API,可讓應用在分配輸入和輸出緩衝區時獲得更多控制。這樣可以讓您的應用更高效地管理記憶體。

新類:

新方法:

此外,MediaCodec.Callback() 中兩種方法的行為也發生了變化:

onInputBufferAvailable()

如果配置為使用 Block Model API,應用應通過索引使用 MediaCodec.getQueueRequest,並將 LinearBlock/HardwareBuffer 附加到插槽,而不是通過索引呼叫 MediaCodec.getInputBuffer()MediaCodec.queueInputBuffer()

onOutputBufferAvailable()

應用可以通過索引使用 MediaCodec.getOutputFrame() 獲取包含更多資訊的 OutputFrame 物件和 LinearBlock/HardwareBuffer 緩衝區,而不是通過索引呼叫 MediaCodec.getOutputBuffer()

MediaCodec 低延時解碼

Android11 增強了 MediaCodec,針對遊戲和其他實時應用支援低延時解碼。您可以將 FEATURE_LowLatency 傳遞到 MediaCodecInfo.CodecCapabilities.isFeatureSupported(),檢查編解碼器是否支援低延時解碼。

如需啟用或停用低延時解碼,請執行以下任一操作:

注意:支援低延時解碼可能需要額外的資源,例如更高的功耗。僅在必要時使用低延時解碼。

新的 AAudio 函式 AAudioStream_release()

函式 AAudioStream_close() 會同時釋放和關閉音訊流。這可能很危險。如果其他程序在音訊流關閉後嘗試對其進行訪問,該程序將會崩潰。

新函式 AAudioStream_release() 會釋放音訊流,但不會將其關閉。這樣會釋放其資源並使音訊流處於已知狀態。該物件將一直存在,直到您呼叫 AAudioStream_close()

MediaParser API

MediaParser 是用於媒體提取的新型低級別 API。它比 MediaExtractor 更靈活,並提供對媒體提取功能的額外控制。

通過 USB 裝置捕獲音訊

當沒有 RECORD_AUDIO 許可權的應用使用 UsbManager 請求直接訪問具備音訊捕獲功能的 USB 音訊裝置(如 USB 耳機)時,系統會顯示一條新的警告訊息,要求使用者確認裝置使用許可權。系統會忽略任何“始終使用”選項,因此應用每次請求訪問時,使用者都必須確認警告訊息並授予相應許可權。

為了避免這種行為,您的應用應請求 RECORD_AUDIO 許可權。

注意:此行為僅適用於使用 UsbManager API 直接連線到 USB 外圍裝置的應用。絕大多數媒體播放器、遊戲和通訊應用使用的是音訊 API,因此不會受到此變更的影響。

併發訪問麥克風

Android 11 向 AudioRecordMediaRecorderAAudioStream API 添加了一些新方法。不管選擇的用例是什麼,這些方法均可啟用和停用併發捕獲的功能。請參閱共享音訊輸入

輸出切換器

Android 11 針對使用 Cast 和 MediaRouter API 的應用實現了新行為。

除了可從應用內訪問投射選項外,切換選項也顯示於系統媒體播放器中。當用戶改變視聽環境時(例如在廚房中觀看視訊與在手機上觀看之間切換,或者在家中收聽音訊與在車中收聽之間切換),這有助於為使用者提供無縫切換裝置的流暢體驗。請參閱輸出切換器

網路連線

Wi-Fi Passpoint 增強功能

通過 Passpoint,應用可以自動靜默地執行身份驗證並連線到安全的 Wi-Fi 熱點。以 API 級別 30 及更高級別為目標平臺的應用可以使用 Passpoint 的以下其他功能。

失效日期強制執行和通知

對個人資料強制執行失效日期可讓框架避免使用過期憑據自動連線到接入點,該操作必定會失敗。這樣可以阻止無線連線,並節省電量和後端頻寬。當用戶的個人資料位於範圍內但已過期時,該功能會向用戶顯示通知。

FQDN 匹配

允許使用 PerProviderSubscription (PPS) 管理物件 (MO) 中的 Extension/Android 節點,配置獨立於接入網路查詢協議 (ANQP) 完全限定域名 (FQDN) 的命名 AAA 域。

自簽名的私人 CA

對於 Passpoint R1 個人資料,Android 接受採用私人自簽名 CA 進行連線身份驗證。

允許使用具有相同 FQDN 的多個個人資料

允許安裝具有相同 FQDN 的多個 Passpoint 個人資料。FQDN 不用作個人資料的鍵。需要 FQDN 的現有 Passpoint API(如 remove)會將請求應用於具有相同 FQDN 的所有匹配的個人資料。

允許安裝沒有根 CA 證書的個人資料

允許使用沒有根 CA 證書的個人資料。在這種情況下,系統會根據安裝在信任庫中的公共根 CA 證書驗證 AAA 伺服器證書。

改進了家庭網路服務提供商和漫遊服務提供商的匹配

系統會匹配家庭網路或漫遊網路,而不考慮所通告的身份驗證方法。此外,還增加了對 OtherHomePartnersHomeOIList 列表的家庭網路匹配功能的支援。

Wi-Fi Suggestion API 擴充套件

Android11 擴充套件了 Wi-Fi Suggestion API,以提高應用的網路管理能力,包括:

  • 連線管理應用可以通過允許斷開連線請求管理自己的網路。
  • Passpoint 網路整合到 Suggestion API 中,可以推薦給使用者。
  • 通過 Analytics API,您可以獲取有關網路質量的資訊。

CallScreeningService 更新

從 Android11 開始,CallScreeningService 可以針對來電請求有關 STIR/SHAKEN 驗證狀態 (verstat) 的資訊。此資訊將包含在來電的通話詳情中。

如果 CallScreeningService 持有 READ_CONTACTS 許可權,當用戶通訊錄中的號碼有來電或向用戶通訊錄中的號碼去電時,應用會收到通知。

Open Mobile API 更新

從 Android11 開始,Open Mobile API (OMAPI) 有了額外的功能:

  • 解析運營商許可權的規則。

  • 使用以下一項或多項自定義嵌入式安全元件 (eSE) 訪問許可權或配置 eSE:

    • 系統特許許可權
    • 可配置的訪問規則應用主資料 (ARA-M) 應用識別符號 (AID)
    • 用於重置 OMAPI 讀取器的系統 API
  • 為讀取器提供清晰的指示符,以便應用過濾裝置功能。

高效能 v*n

以 API 級別 30 及更高級別為目標平臺的應用或在搭載 API 級別 29 及更高級別的裝置上執行的應用可以將 IKEv2/IPsec 應用於 v*n(包括使用者配置的 v*n 和基於應用的 v*n)。

v*n 本身在作業系統上執行,從而簡化了在應用中建立 IKEv2/IPset v*n 連線所需的程式碼。

每個程序的網路訪問控制

如需瞭解如何針對各程序啟用網路訪問許可權,請參閱管理網路使用情況

允許安裝的多種 Passpoint 配置具有相同的 FQDN

從 Android 11 開始,您可以使用 PasspointConfiguration.getUniqueId() 獲取 PasspointConfiguration 物件的專有識別符號,這樣可讓使用應用的使用者安裝多個具有相同完全限定域名 (FQDN) 的配置檔案。

當運營商在其網路上部署多個移動裝置國家/地區程式碼 (MCC) 和行動網路程式碼 (MNC) 組合,但只有一個 FQDN 時,此功能非常有用。在 Android 11 及更高版本中,當用戶安裝具有 MCC 或 MNC 的 SIM 卡時,可以安裝多個具有相同 FQDN(它將與家庭網路服務提供商提供的網路匹配)的配置檔案。

注意:各配置由唯一鍵進行標識,該鍵取決於配置的內容。如需更新現有配置檔案,您必須使用 WifiManager.removePasspointConfiguration() 將其移除。如果不移除現有配置,會導致新增一個包含兩種配置的新配置檔案。

GNSS 天線支援

Android11 引入了 GnssAntennaInfo 類,讓您的應用能夠更多地利用全球導航衛星系統 (GNSS) 提供的釐米精度定位。

如需瞭解詳情,請參閱有關天線校準資訊的指南。

圖形

NDK 影象解碼器

NDK ImageDecoder API 提供了一種標準 API,供 Android C/C++ 應用直接解碼影象。應用開發者不再需要使用框架 API(通過 JNI)或捆綁第三方影象解碼庫。有關詳情,請參閱影象解碼器開發者指南

Frame rate API

Android11 提供了一個 API,可讓應用告知系統其預期幀速率,從而減少支援多個重新整理率的裝置上的抖動。有關如何使用此 API 的資訊,請參閱幀速率指南

請求並檢查低延時支援

特定的顯示屏可以執行圖形後期處理,例如某些外部顯示屏和電視。此類後期處理改善了圖形質量,但可能會增加延時。支援 HDMI 2.1 的新款顯示屏具有自動低延時模式(ALLM,也稱為遊戲模式),該模式可以通過關閉後期處理以最大限度地縮短延時。如需詳細瞭解 ALLM,請參閱 HDMI 2.1 規範

視窗可以請求使用自動低延時模式(如果可用)。ALLM 對於遊戲和視訊會議等應用特別有用,因為對於這些應用而言,低延時的重要性要高於擁有最佳的圖形質量。

如需開啟或關閉最低限度的後期處理,請呼叫 Window.setPreferMinimalPostProcessing(),或將視窗的 preferMinimalPostProcessing 屬性設定為 true。並非所有的顯示屏都支援最低限度的後期處理;如需瞭解某個顯示屏是否支援該功能,可呼叫新方法 Display.isMinimalPostProcessingSupported()

注意:如果使用者停用最低限度的後期處理,或者顯示屏不支援低延時模式,那麼呼叫 Window.setPreferMinimalPostProcessing() 不會有任何作用。

高效能圖形除錯層注入

應用現在可以將外部圖形層(GLESVulkan)載入到原生應用程式碼中,可以在不產生效能開銷的前提下,提供與可除錯應用相同的功能。在使用 GAPID 等工具對應用進行效能剖析時,此功能尤為重要。如需對應用進行效能剖析,只需要在應用清單檔案中新增以下元資料元素,而無需讓應用變成可除錯應用:

<application ... >
  <meta-data android:name="com.android.graphics.injectLayers.enable"
         android:value="true" />
</application>

圖片和相機

在主動拍攝期間關閉通知提示音和振動

從 Android11 開始,在主動使用相機時,您的應用可以使用 setCameraAudioRestriction() 以僅關閉振動、同時關閉聲音和振動或都不關閉。

Android 模擬器中的相機支援擴充套件

如需瞭解自 Android 11 起模擬器中的相機支援擴充套件,請參閱相機支援

支援併發使用多個攝像頭

Android 11 添加了 API 以查詢對同時使用多個攝像頭(包括前置攝像頭和後置攝像頭)的支援。

如需在執行應用的裝置上檢查支援情況,請使用以下方法:

更好地支援包含多個幀的 HEIF 圖片

從 Android 11 開始,如果您呼叫 ImageDecoder.decodeDrawable() 並傳遞包含幀序列的 HEIF 圖片(如動畫或連拍照片),則該方法會返回包含整個圖片序列的 AnimatedImageDrawable。在較低版本的 Android 系統中,該方法會返回僅包含單個幀的 BitmapDrawable

如果 HEIF 圖片包含的多個幀不在一個序列中,您可以通過呼叫 MediaMetadataRetriever.getImageAtIndex() 檢索各個幀。

無障礙功能

面向無障礙服務開發者的更新

如果您建立自定義無障礙服務,可以在 Android11 中使用以下功能:

  • 在無障礙服務的面向使用者的解釋中,除了純文字之外,現在還允許使用 HTML 和圖片。這種靈活性可讓您更輕鬆地向終端使用者解釋您的服務有何功能以及對他們有何幫助。
  • 如需使用比 contentDescription 在語義上更有意義的介面元素的狀態說明,請呼叫 getStateDescription() 方法。
  • 如需請求觸控事件繞過系統的觸控瀏覽器,請呼叫 setTouchExplorationPassthroughRegion()。同樣,如需請求手勢繞過系統的手勢檢測器,請呼叫 setGestureDetectionPassthroughRegion()
  • 您可以請求 IME 操作(如“輸入”和“下一個”),以及不啟用 FLAG_SECURE 標記的視窗的螢幕截圖。