Android 相容性定義文件變更記錄

Android 14

2024 年 6 月 26 日

2. 裝置類型

3. 軟體

  • 3.2.2. 版本參數

    ODM_SKU 參數:

    查看修訂版本

    這個欄位的值必須能以 7 位元 ASCII 編碼,且符合規則運算式 ^([0-9A-Za-z.,_-]+)$

5. 多媒體相容性

  • 5.1.3. 音訊轉碼器詳細資料

    新增 Vorbis 格式/轉碼器的詳細資料:

    查看修訂版本

    解碼:支援單聲道、立體聲、5.0 和 5.1 內容,取樣率為 8000、12000、16000、24000 和 48000 Hz。
    編碼:支援單聲道與立體聲內容,刷新率為 8000、1400、1600、1600、Hz

7. 硬體相容性

9. 安全性模型相容性

  • 9.7. 安全性功能

    將 [C-SR-1] 重新編號為 [C-SR-7],以便移除重複的內容並移除 [C-SR-8]:

    查看修訂版本

    • [C-SR-1] 強烈建議保留核心資料,這些資料只會在初始化後寫入,但會在初始化後標示為唯讀 (例如 __ro_after_init)。

    • [C-SR-2] 強烈建議「不要」隨機設定核心程式碼和記憶體的版面配置,並避免曝光會導致隨機化作業 (例如透過 /chosen/kaslr-seed Device Tree nodeEFI_RNG_PROTOCOL 套用系統啟動載入程式熵化為影響)。CONFIG_RANDOMIZE_BASE

    • [C-SR-3] 強烈建議在核心中啟用控制流程完整性 (CFI),為程式碼重複使用攻擊提供額外防護 (例如 CONFIG_CFI_CLANGCONFIG_SHADOW_CALL_STACK)。

    • [C-SR-4] 強烈建議不要在已啟用控制流程的元件上停用控制流程完整性 (CFI)、陰影呼叫堆疊 (SCS) 或整數溢位清理 (IntSan)。

    • [C-SR-5] 極力建議您為其他與安全性相關的使用者空間元件啟用 CFI、SCS 和 IntSan,如 CFIIntSan 所述。

    • [C-SR-6] 強烈建議在核心中啟用堆疊初始化,避免使用未初始化的本機變數 (CONFIG_INIT_STACK_ALLCONFIG_INIT_STACK_ALL_ZERO)。此外,裝置實作也不應假設編譯器用於初始化本機變數的值。

    • [C-SR-7] 強烈建議在核心中啟用堆積初始化功能,避免使用未初始化的堆積分配量 (CONFIG_INIT_ON_ALLOC_DEFAULT_ON),且不應假設核心用於初始化這些配置的值。

  • 9.11. 金鑰和憑證

    查看修訂版本

    • [C-1-6] 必須支援下列其中一個值:
      • IKeymasterDevice 3.0、
      • IKeymasterDevice 4.0
      • IKeymasterDevice 4.1、
      • IKeyMintDevice 版本 1,或
      • IKeyMintDevice 版本 2。

  • 9.11.1. 安全螢幕鎖定、驗證和虛擬裝置

    查看修訂版本

    • [C-8-3] 使用者「不得」公開 API 來變更鎖定狀態,供第三方應用程式使用。

    查看修訂版本

    • [C-12-4] 必須呼叫 TrustManagerService.revokeTrust()
      • 最多 24 小時後才取得信任,
      • 8 小時閒置期間之後,或
      • 如果實作項目並未採用 [C-12-5] 中定義的加密編譯安全和準確程度,則當鄰近實體裝置的基礎連線遺失時。
    • [C-12-5] 實作時須仰賴安全準確的範圍,以符合 [C-12-4] 的要求:「必須」採用下列其中一種解決方案:
      • 使用 UWB 實作:
        • 必須符合 7.4.9 中所述 UWB 的合規、認證、準確性和校正規定
        • 必須使用 7.4.9 中列出的其中一種 P-STS 安全性模式。
      • 使用 Wi-Fi 社區感知網路 (NAN) 實作:
        • 必須符合 2.2.1 [7.4.2.5/H-SR-1] 中的準確率要求,使用 160 MHz 頻寬 (或更高),並按照「Presence Calibration」(狀態校正) 中指定的測量設定步驟操作。
        • 必須使用 IEEE 802.11az 中定義的安全 LTF。

2024 年 4 月 8 日

2. 裝置類型

  • 2.2.1. 硬體

    查看修訂版本

    制定新規定

    如果手持裝置實作項目宣告 FEATURE_BLUETOOTH_LE,就會:

    • [7.4.3/H-1-3] 必須測量並補償 Rx 偏移,確保 BLE RSSI 與在 ADVERTISE_TX_POWER_HIGH 傳輸的參考裝置之間的距離為 -50dBm +/-15 dB,距離為 1 公尺。
    • [7.4.3/H-1-4] 從位於 1 公尺距離且傳輸至 ADVERTISE_TX_POWER_HIGH 的參考裝置進行掃描時,必須測量並補償 Tx 偏移,確保 BLE RSSI 為 -50dBm +/-15 dB。

  • 2.2.5. 安全性模型

    查看修訂版本

    如果手持裝置實作支援 System API HotwordDetectionService,或其他沒有麥克風存取權指標的啟動字詞偵測機制,則:

    • [9.8/H-1-6] 每個成功的啟動字詞結果,不得從啟動字詞偵測服務傳輸超過 100 個位元組的資料,透過 HotwordAudioStream 傳遞的音訊資料除外。

    查看修訂版本

    將 [9.8/H-1-13] 變更為:

    • [9.8/H-SR-3] 強烈建議每小時至少每小時或每 30 個硬體觸發事件 (以先發生者為準) 重新啟動託管啟動字詞偵測服務的程序。

    查看修訂版本

    移除要求 [9.8.2/H-4-3]、[9.8.2/H-4-4]、[9.8.2/H-5-3]。

  • 2.2.7.2. 相機

    查看修訂版本

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,那麼:

    • [7.5/H-1-3] 必須支援 android.info.supportedHardwareLevel 屬性, FULL 或更好於後置主要鏡頭,LIMITED 或更好於前置主鏡頭。

  • 2.3.2. 多媒體

    查看修訂版本

    如果電視裝置沒有內建螢幕,而需支援透過 HDMI 連接的外接螢幕,那麼:

    • [5.8/T-0-1] 必須根據裝置銷售區域的影片刷新率,將 HDMI 輸出模式設為所選像素格式的最高解析度 (須為 50Hz 或 60Hz 刷新率)。 「必須」設定 HDMI 輸出模式,選取 50Hz 或 60Hz 刷新率支援的最高解析度。

3. 軟體

5. 多媒體相容性

  • 5.3.8. Dolby Vision

    查看修訂版本

    如果裝置實作程序透過 HDR_TYPE_DOLBY_VISION 宣告支援 Dolby Vision 解碼器,就會發生以下情形:

    • [C-1-3] 必須將回溯相容基礎層 (如有) 的追蹤 ID 設定為與合併的 Dolby Vision 圖層軌跡 ID 相同。

7. 硬體相容性

  • 7.1.1.1. 螢幕大小和形狀

    查看修訂版本

    如果裝置實作項目支援支援 UI_MODE_TYPE_NORMAL 大小設定的螢幕,並使用有圓角的實體螢幕轉譯這些畫面,就會執行以下動作:

    • [C-1-1] 請務必針對這類螢幕,至少符合下列一項條件:
      • 15 x 18 dp x 1518 dp 方塊固定在邏輯螢幕的每個角落時,每個方塊至少要有一個像素,

  • 7.4.3. 藍牙

    查看修訂版本

    已恢復下列要求:

    如果裝置實作項目宣告 FEATURE_BLUETOOTH_LE,就會:

    • [C-SR-2] 強烈建議「務必」測量及補償 Rx 偏移,確保 BLE RSSI 與在 ADVERTISE_TX_POWER_HIGH 傳輸的參考裝置相距 10 分為 -60dBm +/-10 dB,且裝置方向為「平行平面」,且螢幕朝向相同方向的螢幕。

    • [C-SR-3] 強烈建議「極力」評估及補償 Tx 偏移量,確保從位於 1 公尺距離的參考裝置進行掃描時,在 ADVERTISE_TX_POWER_HIGH 進行傳輸 (裝置方向為正向平行的平面),確保 BLE RSSI 的中位數為 -60dBm +/-10 dB。

    查看修訂版本

    將要求 [C-10-3] 和 [C-10-4] 移至 2.2.1. 硬體

    • [C-10-3] 必須測量並補償 Rx 偏移,確保 BLE RSSI 與從 ADVERTISE_TX_POWER_HIGH 傳輸的參照裝置相距 1 公尺為 -55dBm +/-10 dB。
    • [C-10-4] 對位於 1 公尺距離且傳輸至 ADVERTISE_TX_POWER_HIGH 的參考裝置進行掃描時,必須測量並補償 Tx 偏移,確保 BLE RSSI 為 -55dBm +/-10 dB。

2023 年 11 月 20 日

2. 裝置類型

  • 2.2.1. 硬體

    查看修訂版本

    如果手持裝置實作項目宣告支援任何 64 位元 ABI (無論是否為 32 位元 ABI):

  • 2.2.7.2. 相機

    查看修訂版本

    • [7.5/H-1-13] 如果有多個 RGB 後置鏡頭超過 1 個,則「必須」支援主要後置鏡頭的 LOGICAL_MULTI_CAMERA 功能。

  • 2.3.2. 多媒體

    查看修訂版本

    • [5.8/T-0-1] 請針對為外接螢幕 50Hz 或 60Hz 刷新率選取的 SDR 或 HDR 格式,將 HDMI 輸出模式設為最高解析度。

      「必須」設定 HDMI 輸出模式,選取 50Hz 或 60Hz 刷新率支援的最大解析度。

  • 2.4.5. 安全性模型

    查看修訂版本

    • [9/W-0-1] 必須宣告 android.hardware.security.model.compatible feature

6. 開發人員工具與選項的相容性

  • 6.1. 開發人員工具

    查看修訂版本

    • [C-0-12] 必須將 LMK_KILL_OCCURRED_FIELD_NUMBER Atom 寫入

    查看修訂版本

    • [C-0-13] 必須實作殼層指令 dumpsys gpu --gpuwork 才能顯示

9. 安全性模型相容性

  • 9.7. 安全性功能

    查看修訂版本

    如果裝置實作項目使用支援 SELinux 的 Linux 核心,就必須:

    查看修訂版本

    如果裝置實作項目使用的核心不是 Linux 或 Linux,而沒有 SELinux,則裝置會執行以下動作:

2023 年 10 月 4 日

2. 裝置類型

  • 2.2. 手持裝置需求

    查看修訂版本

    如果 Android 裝置的實作方式符合下列所有條件,就會歸類為手持裝置:

    • 實際對角線螢幕尺寸應介於 4 吋 3.3 吋 (2.5 吋) (若裝置搭載的 API 級別為 29 或以下級別,則為 2.5 吋)

    制定新規定

    • 具備觸控螢幕輸入介面。

  • 2.2.1. 硬體

    查看修訂版本

    手持裝置實作方式:

    • [7.1.1.1/H-0-1] 至少必須具備一種與 Android 相容的螢幕,且符合本文件所述的所有要求。 在短邊顯示至少 2.2 吋及 3.4 吋螢幕。

    如果手持裝置實作支援軟體螢幕旋轉功能,可以:

    • [7.1.1.1/H-1-1]* 必須為第三方應用程式使用的邏輯螢幕設定至少 2 吋,長邊為 2.7 英寸。搭載 Android API 級別 29 以下版本的裝置不受這項規定限制。

    如果手持裝置實作不支援軟體螢幕旋轉,功能會:

    • [7.1.1.1/H-2-1]* 必須調整供第三方應用程式使用的邏輯螢幕在短邊至少為 2.7 吋。搭載 Android API 級別 29 以下版本的裝置不受這項規定限制。

    制定新規定

    • [7.1.1.1/H-0-3]* 必須將每個供第三方應用程式使用的 UI_MODE_NORMAL 螢幕,都對應至未遮蔽的實際顯示區域 (短邊至少為 2.2 吋,長邊是 3.4 吋英寸)。

    • [7.1.1.3/H-0-1]* 必須將 DENSITY_DEVICE_STABLE 的值設為 92% 或大於對應螢幕的實際實體密度。

    如果手持裝置實作項目宣告 android.hardware.audio.outputandroid.hardware.microphone,兩者會:

    • [5.6/H-1-1] 透過下列資料路徑,均須使用 300 毫秒或更短的 5 次測量平均連續循環延遲時間,且平均絕對差小於 30 毫秒:「將喇叭連接麥克風」、「3.5 mmback 迴圈轉接器」(如支援)、USB 迴圈轉接器 (如果支援)。

    • [5.6/H-1-2] 在喇叭對麥克風資料路徑的測量時,至少在 5 次測量中,輕觸音調的延遲時間平均不能是 300 毫秒,甚至更少。

    如果手持裝置實作包含至少一項觸覺回饋器,行為器就會:

    如果手持裝置實作包含至少一個 一般用途 7.10 線性共振動因器,可能:

    • [7.10/H] 應將致動器放在手持裝置或以手持裝置平常的位置附近。

    • [7.10/H] 應在裝置的自然 直向 螢幕方向的 X 軸 (右) 移動觸覺回饋器。

    如果手持裝置實作具有「一般用途」 觸覺回饋器,也就是 X 軸線性共振致動器 (LRA),就會:

    • [7.10/H] X 軸 LRA 的共振頻率應低於 200 Hz。

  • 2.2.2. 多媒體

    查看修訂版本

    手持裝置實作「必須」支援下列影片編碼格式,且可供第三方應用程式使用:

    • [5.2/H-0-3] AV1

    手持裝置實作「必須」支援下列影片解碼格式,並將這些格式提供給第三方應用程式:

    • [5.3/H-0-6] AV1

  • 2.2.3. 軟體

    查看修訂版本

    如果裝置實作項目包含近期函式瀏覽鍵 (如 7.2.3 節所述) 變更介面,就會發生以下情形:

    • [3.8.3/H-1-1] 「必須」實作螢幕固定行為,並提供設定選單讓使用者切換功能。

    如果手持裝置實作項目支援 ControlsProviderServiceControl API,並允許第三方應用程式發布裝置控制項,就會執行以下動作:

    如果裝置導入方式允許使用者透過任何形式撥打電話,

  • 2.2.4. 效能與電源

    查看修訂版本

    手持裝置實作方式:

    • [8.5/H-0-1] 在「設定」選單中「必須」為使用者提供預設用途,以便查看所有內含執行中前景服務或使用者啟動工作的應用程式,包括這些服務依照 SDK 文件所述,在執行前景服務或由使用者啟動的前景服務啟動的應用程式停止作業1。
      • SDK 文件所述,部分應用程式可能不受停止,或是列入這類使用者預設用途的範圍內。

    • [8.5/H-0-2]必須提供使用者負擔,才能停止執行前景服務或使用者啟動的工作。

  • 2.2.5. 安全性模型

    查看修訂版本

    如果裝置實作項目宣告支援 android.hardware.telephony,就會:

    • [9.5/H-1-1] 不得將 UserManager.isHeadlessSystemUserMode 設為 true

    如果裝置實作項目具有安全的螢幕鎖定畫面,且包含一或多個實作 TrustAgentService System API 的信任代理程式,就會執行以下動作:

    • [9.11.1/H-1-1] 採用建議的主要驗證方法 (例如 PIN 碼、解鎖圖案、密碼) 頻率必須每 72 小時超過一次。

    如果手持裝置實作方式將 UserManager.isHeadlessSystemUserMode 設為 true

    • [9.5/H-4-1] 「不得」提供 eUICC 支援,以及具備通話功能的 eSIM 卡。
    • [9.5/H-4-2] 不得宣告支援 android.hardware.telephony

    如果手持裝置實作支援 System API HotwordDetectionService,或其他沒有麥克風存取權指標的啟動字詞偵測機制,則:

    • [9.8/H-1-1] 「必須」確認啟動字詞偵測服務只能將資料傳輸至系統、ContentCaptureService 或由 SpeechRecognizer#createOnDeviceSpeechRecognizer() 建立的裝置端語音辨識服務。
    • [9.8/H-1-6] 每次成功啟動啟動字詞結果時,「不得」允許從啟動字詞偵測服務傳出超過 100 個位元組的資料 (音訊串流除外)

    • [9.8/H-1-15] 「必須」確保針對成功啟動字詞結果提供的音訊串流,能單向從啟動字詞偵測服務傳輸至語音互動服務。

    如果裝置實作項目包含使用 System API HotwordDetectionService 的應用程式,或在沒有麥克風使用指標的情況下,用於偵測啟動字詞的類似機制,應用程式會:

    • [9.8/H-2-3] 「不得」從啟動字詞偵測服務、音訊資料、資料,用於重建與啟動字詞本身無關的音訊或音訊內容 (ContentCaptureService 或裝置端語音辨識服務除外)。

    如果手持裝置實作支援 System API VisualQueryDetectionService,或在沒有麥克風和/或相機存取權指示的情況下進行查詢偵測的其他機制,則:

    • [9.8/H-3-1]「必須」確認查詢偵測服務只能將資料傳輸至系統、ContentCaptureService,或裝置端語音辨識服務 (由 SpeechRecognizer#createOnDeviceSpeechRecognizer() 建立)。
    • [9.8/H-3-2] 不得向 VisualQueryDetectionService 傳輸任何音訊或影片資訊,但 ContentCaptureService 或裝置端語音辨識服務除外。
    • [9.8/H-3-3] 當裝置偵測到使用者意圖與數位助理應用程式互動 (例如透過相機偵測使用者存在時),「必須」在系統 UI 中顯示使用者通知。
    • [9.8/H-3-4] 偵測到使用者查詢後,必須顯示麥克風指標,並在使用者介面中顯示偵測到的使用者查詢。
    • [9.8/H-3-5] 「不得」允許使用者可安裝的應用程式提供視覺化查詢偵測服務。

  • 2.2.7.1. 媒體

    查看修訂版本

    如果手持裝置實作會針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.T,那麼:

    制定新規定

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,那麼:

    • [5.1/H-1-1] 必須通告可透過 CodecCapabilities.getMaxSupportedInstances()VideoCapabilities.getSupportedPerformancePoints() 方法在任何轉碼器組合中同時執行的硬體視訊解碼器工作階段數量上限。
    • [5.1/H-1-2] 凡是以 3 個工作階段同時執行 3 個工作階段的轉碼器組合,都支援 6 個 8 位元 (SDR) 硬體視訊解碼器工作階段 (AVC、HEVC、VP9、AV1 或以上),除非解析度為 4k fps 和 30 fps 且 30 的解析度 AV130 影格AV1 轉碼器只需要支援 1080p 的解析度,但仍需支援 6 執行個體 (每秒 1080p30fps)。
    • [5.1/H-1-3] 「必須」通告可透過 CodecCapabilities.getMaxSupportedInstances()VideoCapabilities.getSupportedPerformancePoints() 方法在任何轉碼器組合中並行執行的硬體視訊編碼器工作階段數量上限。
    • [5.1/H-1-4] 在任何與 4 工作階段並用 4 工作階段的轉碼器組合中, 必須支援 6 個 8 位元 (SDR) 硬體視訊編碼器工作階段 (AVC、HEVC、VP9、AV1 或以上) 執行個體,但以 4k fps 的每秒影格數 @30 fps 和 2 工作階段的解析度 (以 4k fps 為每秒 30 秒)AV1 轉碼器只需要支援 1080p 的解析度,但仍需支援 6 執行個體 (每秒 1080p30fps)。
    • [5.1/H-1-5] 請指出可透過 CodecCapabilities.getMaxSupportedInstances()VideoCapabilities.getSupportedPerformancePoints() 方法在任何轉碼器組合中同時執行的硬體視訊編碼器和解碼器工作階段數量上限。
    • [5.1/H-1-6] 在任何同時以 4K@30fps 解析度和 3 個工作階段的轉碼器組合 (例如 AV1 工作階段和 2 工作階段) 中,必須支援 6 個 8 位元 (SDR) 硬體視訊解碼器和硬體視訊編碼器工作階段 (AVC、HEVC、VP9、AV1 或以上) 的例項。AV1 轉碼器只需要支援 1080p 的解析度,但仍需支援 6 執行個體 (每秒 1080p30fps)。
    • [5.1/H-1-19] 在以 4K@30fps 解析度執行的任何轉碼器組合中,「必須」支援 3 個 10 位元 (HDR) 硬體視訊解碼器和硬體視訊編碼器工作階段 (AVC、HEVC、VP9、AV1 或以上版本),且以 4K@30fps 的解析度進行播放 (除非是 AV1 輸入,格式最大為 GL1 的 RGB2,10 為 RGB_1)如果從 GL 介面進行編碼,則不需要由編碼器產生 HDR 中繼資料。即使這項要求呼叫 4K,AV1 轉碼器工作階段也只需要支援 1080p 解析度。
    • [5.1/H-1-7] 針對 1080p 以下的所有硬體視訊編碼器在負載下,轉碼器初始化延遲時間不得超過 40 毫秒。此處載入定義為使用硬體視訊轉碼器和 1080p 影音錄製初始化的 1080p 至 720p 純視訊轉碼工作階段。針對 Dolby Vision 轉碼器,轉碼器的初始化延遲時間不得超過 50 毫秒。
    • [5.1/H-1-8] 在負載下,128 kbps 的轉碼器初始化延遲時間不得超過 30 毫秒;如果音訊編碼器處於載入狀態,則所有音訊編碼器的位元率音訊編碼工作階段都必須低於 30 毫秒。此處載入定義為使用硬體視訊轉碼器和 1080p 影音錄製初始化的 1080p 至 720p 純視訊轉碼工作階段。
    • [5.1/H-1-9] 無論是同時執行 8 位元 (SDR) 和 10 位元 HDR 內容,所有轉碼器組合中都支援 2 個安全硬體視訊解碼器工作階段 (AVC、HEVC、VP9、AV1 或以上) 的執行個體。即使這項要求呼叫 4K,AV1 轉碼器工作階段也只需要支援 1080p 解析度。
    • [5.1/H-1-10] 必須支援 3 個不安全的硬體視訊解碼器工作階段執行個體,以及 1 個安全硬體視訊解碼器工作階段執行個體 (共 4 個執行個體) (AVC、HEVC、VP9、AV1 或以上版本的轉碼器組合,如以 4K 解析度、每秒 30 個影格和 30 fps 至 1000)。即使這項要求呼叫 4K,AV1 轉碼器工作階段也只需要支援 1080p 解析度。
    • [5.1/H-1-11] 裝置中的每個硬體 AVC、HEVC、VP9 或 AV1 解碼器都必須支援安全解碼器。
    • [5.1/H-1-12] 在負載不足的情況下,針對 1080p 以下所有硬體視訊解碼器,轉碼器初始化延遲時間不得超過 40 毫秒。此處載入的定義為使用硬體視訊轉碼器和 1080p 音訊影片播放初始化的 1080p 至 720p 純影片轉碼工作階段。針對 Dolby Vision 轉碼器,轉碼器的初始化延遲時間不得超過 50 毫秒。
    • [5.1/H-1-13] 處於載入狀態時,所有音訊解碼器的轉碼器初始化延遲時間不得超過 30 毫秒,或降低所有音訊解碼器的位元率音訊解碼工作階段。此處載入的定義為使用硬體視訊轉碼器和 1080p 影音播放初始化的 1080p 至 720p 純影片轉碼工作階段。
    • [5.1/H-1-14] 必須支援 AV1 硬體解碼器 Main 10、等級 4.1 和底片顆粒。
    • [5.1/H-1-15] 至少須有 1 個支援 4K60 的硬體視訊解碼器。
    • [5.1/H-1-16] 至少必須使用 1 個支援 4K60 的硬體視訊編碼器。
    • [5.3/H-1-1] 在載入 4K 60 fps 影片的情況下,「不得」在 10 秒內捨棄超過 1 個影格 (也就是影格遺失率低於 0.167%)。
    • [5.3/H-1-2] 播放 4K 工作階段時,在 60 fps 影片工作階段的載入狀態下播放解析度,「不得」在 10 秒內捨棄超過 1 個影格。
    • [5.6/H-1-1] 使用 CTS 驗證器觸控色調測試時,輕觸音延遲時間必須維持在 80 毫秒以下。
    • [5.6/H-1-2] 相較於至少一個支援的資料路徑,往返音訊延遲時間不得超過 80 毫秒。
    • [5.6/H-1-3] 必須支援大於 24 位元的音訊,才能輸出超過 3.5 公釐的立體聲音訊插孔;如果透過整個資料路徑支援低延遲和串流設定,則必須支援使用 USB 音訊。針對低延遲設定,應用程式應在低延遲回呼模式下使用 AAudio。對於串流設定,應用程式應使用 Java AudioTrack。不論是低延遲還是串流設定,HAL 輸出接收器都應接受 AUDIO_FORMAT_PCM_24_BITAUDIO_FORMAT_PCM_24_BIT_PACKEDAUDIO_FORMAT_PCM_32_BITAUDIO_FORMAT_PCM_FLOAT 做為目標輸出格式。
    • [5.6/H-1-4] 必須支援超過 4 個聲道的 USB 音訊裝置 (DJ 控制器會使用此裝置來試聽歌曲)。
    • [5.6/H-1-5] 必須支援符合類別規範的 MIDI 裝置,並宣告 MIDI 功能標記。
    • [5.6/H-1-9] 必須支援至少 12 個聲道混音。這表示您可以使用 7.1.4 聲道遮罩,開啟含 7.1.4 聲道遮罩的 AudioTrack,並能適當調整所有聲道的空間大小,或將所有聲道壓縮成立體聲。
    • [5.6/H-SR] 強烈建議支援 24 個管道組合,並提供至少 9.1.6 和 22.2 聲道遮罩的支援。
    • [5.7/H-1-2] 必須支援具備下列內容解密功能的 MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL
    樣本大小下限 4 MiB
    子樣本數量下限 - H264 或 HEVC 32
    子樣本數量下限 - VP9 9
    子樣本數下限 - AV1 288 號
    子樣本緩衝區空間下限 1 MiB
    一般加密緩衝區空間下限 500 KiB
    並行工作階段數量下限 30
    每個工作階段的金鑰數量下限 20
    金鑰總數下限 (所有工作階段) 80 號
    DRM 金鑰總數下限 (所有工作階段) 6
    郵件大小 16 KiB
    每秒解密影格數 60 fps
    • [5.1/H-1-17] 至少要有 1 個支援 AVIF 基準設定檔的硬體映像檔解碼器。
    • [5.1/H-1-18] 必須支援 AV1 編碼器,這類編碼器能夠編碼最高 480p 解析度 (每秒 30 FPS 和 1 Mbps)。
    • [5.12/H-1-1] 必須 [5.12/H-SR] 強烈建議支援裝置上所有硬體 AV1 和 HEVC 編碼器的 Feature_HdrEditing 功能。
    • [5.12/H-1-2] 必須針對裝置上所有硬體 AV1 和 HEVC 編碼器支援 RGBA_1010102 色彩格式。
    • [5.12/H-1-3] 必須通告支援 EXT_YUV_target 擴充功能,以從 8 和 10 位元的 YUV 紋理中進行取樣。
    • [7.1.4/H-1-1] 在資料處理單元 (DPU) 硬體編輯器 (HWC) 中,至少要有 6 個硬體重疊圖層,其中至少有 2 個可以顯示 10 位元影片內容。

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,且支援硬體 AVC 或 HEVC 編碼器,則其:

    • [5.2/H-2-1] 必須達到硬體 AVC 和 HEVC 轉碼器定義的視訊編碼器速率-扭曲曲線定義的最低品質目標 (如即將推出的說明文件所定義)。

  • 2.2.7.2. 相機

    查看修訂版本

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,那麼:

    • [7.5/H-1-1] 「必須」使用主要後置鏡頭,解析度至少為 1,200 萬像素,支援拍攝每秒 4k@30fps 影片。主要後置鏡頭是相機 ID 最低的後置鏡頭。
    • [7.5/H-1-2] 「必須」使用解析度至少 600 萬像素的主要前置鏡頭,並支援拍攝解析度 1080p@30fps 的影片。主要前置鏡頭是前置鏡頭,相機 ID 最低。
    • [7.5/H-1-3] 必須支援 android.info.supportedHardwareLevel 屬性為 FULL 或更佳的兩個主要相機。
    • [7.5/H-1-4] 兩個主要相機都必須支援 CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
    • [7.5/H-1-5] 兩個主鏡頭在 ITS 亮度條件 (3000K) 下進行評估後,相機 2 JPEG 擷取延遲時間必須小於 1000900 毫秒,系統才會提供 1080p 解析度的 1080p 解析度結果。
    • [7.5/H-1-6] 兩台主鏡頭的 CT2 啟動延遲時間 (開啟相機到第一個預覽影格) 必須小於 500 毫秒,而這是 CTS 鏡頭效能測試在 ITS 照明條件 (3000K) 下測得的結果。
    • [7.5/H-1-8] 必須支援主要後置鏡頭的 CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.graphics.ImageFormat.RAW_SENSOR
    • [7.5/H-1-9] 必須具有支援 720p 或 1080p @ 240fps 的後置主要鏡頭。
    • [7.5/H-1-10] 如果您的超廣角 RGB 相機朝向相同方向,主相機的最小 ZOOM_RATIO < 1.0 必須。
    • [7.5/H-1-11] 務必在主要相機上實作並行前置串流。
    • [7.5/H-1-12] 主要前置鏡頭和主要後置鏡頭都必須支援 CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION
    • [7.5/H-1-13] 如果有多部 RGB 鏡頭的方向相同,主要相機必須支援 LOGICAL_MULTI_CAMERA 功能。
    • [7.5/H-1-14] 必須同時支援主要前置和主要後置鏡頭的 STREAM_USE_CASE 功能。
    • [7.5/H-1-15] 必須支援散景和 透過 CameraX 和 Camera2 擴充功能進行主要相機的夜間模式擴充功能。
    • [7.5/H-1-16] 必須支援主要相機的 DYNAMIC_RANGE_TEN_BIT 功能。
    • [7.5/H-1-17] 必須為主要攝影機支援 CONTROL_SCENE_MODE_FACE_PRIORITY 和臉部偵測 (STATISTICS_FACE_DETECT_MODE_SIMPLESTATISTICS_FACE_DETECT_MODE_FULL)。

  • 2.2.7.3. 硬體

    查看修訂版本

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,那麼:

    • [7.1.1.1/H-2-1] 螢幕解析度必須至少為 1080p。
    • [7.1.1.3/H-2-1] 螢幕密度必須至少為 400 dpi。
    • [7.1.1.3/H-3-1] 具備至少支援 1000 nit 的 HDR 螢幕。
    • [7.6.1/H-2-1] 實體記憶體至少要有 8 GB。

  • 2.2.7.4. 效能

    查看修訂版本

    如果手持裝置實作針對 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 傳回 android.os.Build.VERSION_CODES.U,那麼:

    • [8.2/H-1-1] 必須確保連續寫入效能至少達到 150 MB。
    • [8.2/H-1-2] 必須確保隨機寫入效能至少達到每秒 10 MB。
    • [8.2/H-1-3] 必須確保連續讀取效能至少達到每秒 250 MB。
    • [8.2/H-1-4] 必須確保隨機讀取效能至少達到每秒 100 MB。
    • [8.2/H-1-5] 必須確保 2 倍讀取和 1 倍寫入效能至少達到每秒 50 MB,才能確保平行依序讀取和寫入效能。

  • 2.3.2. 多媒體

    查看修訂版本

    電視裝置實作「必須」支援下列影片編碼格式,並提供給第三方應用程式:

    • [5.2/T-0-3] AV1

    電視裝置實作「必須」支援下列影片解碼格式,並將這些格式提供給第三方應用程式:

  • 2.4.5. 安全性模型

    查看修訂版本

    如果裝置實作項目具有安全的螢幕鎖定畫面,且包含一或多個實作 TrustAgentService System API 的信任代理程式,就會執行以下動作:

    • [9.11.1/W-1-1] 使用建議的主要驗證方法 (例如 PIN 碼、解鎖圖案、密碼) 頻率必須每 72 小時超過一次。

  • 2.5.1. 硬體

    查看修訂版本

    如果裝置實作項目支援 AM/FM 廣播電台支援,並向任何應用程式公開這項功能,程式碼應執行以下動作:

    • [7.4.10/A-0-1] 必須宣告支援 FEATURE_BROADCAST_RADIO

    外部視角攝影機是指拍攝裝置以外的場景 (例如後置鏡頭)。

    Automotive 裝置實作:

    • 必須設置一或多個室外視角相機。

    如果 Automotive 裝置實作包含外部視角相機 (這類相機),請按照下列步驟操作:

    • [7.5/A-1-1] 除非符合相機核心需求,否則「不得」透過 Android Camera API 可存取外部視角相機。
    • [7.5/A-SR-1] 強烈建議不要旋轉或水平鏡射相機預覽畫面。
    • [7.5/A-SR-2] 強烈建議採用至少 130 萬像素的解析度。
    • 應使用固定對焦或 EDOF (延伸領域深度) 硬體。
    • 相機驅動程式中可能含有硬體自動對焦或軟體自動對焦功能。

    如果汽車裝置實作項目包含一或多個室外視角,且載入外部檢視畫面系統 (EVS) 服務,那麼針對這類相機,就會執行以下動作:

    • [7.5/A-2-1] 不得旋轉或水平鏡射相機預覽畫面。

    Automotive 裝置實作:

    • 「可能」包含一或多個第三方應用程式可用的攝影機。

    如果汽車裝置實作項目至少包含一個相機,且提供給第三方應用程式使用,那麼程式:

    • [7.5/A-3-1] 必須回報功能標記 android.hardware.camera.any
    • [7.5/A-3-2] 不得將相機宣告為系統相機
    • 支援外部相機 (如第 7.5.3 節所述)。
    • 可能包括第 7.5.1 節所述的後置鏡頭可用的功能 (例如自動對焦等)。

    後置鏡頭是指面向車輛的鏡頭,可放在車輛上任何地點,並面向車輛車櫃外側;也就是拍攝車輛主體最遠處的場景 (例如後置鏡頭)。

    前置鏡頭是指面向車輛的面向使用者的相機,可朝於車輛機櫃內的位置;也就是面向使用者的圖像,例如視訊會議等類似應用程式。

    Automotive 裝置實作:

    • [7.5/A-SR-1] 強烈建議加入一或多個面向世界的相機。
    • 可能配備一或多個面向使用者的相機。
    • [7.5/A-SR-2] 強烈建議支援多部攝影機的並行串流。

    如果 Automotive 裝置實作包含至少一部面向世界的相機,代表這類相機:

    • [7.5/A-1-1] 必須朝向方向調整,讓相機的長邊對齊 Android 汽車感應器軸的 X-Y 平面。
    • [7.5/A-SR-3] 強烈建議採用固定對焦或 EDOF (擴大領域) 硬體。
    • [7.5/A-1-2] 「必須」使用前置鏡頭做為後置鏡頭,且相機 ID 最低

    如果 Automotive 裝置實作項目至少包含一個面向使用者的相機,則針對這類相機:

    • [7.5/A-2-1] 主要的面向使用者相機「必須」是面向使用者,且相機 ID 最低的相機。
    • 請盡可能讓相機的長邊對齊 Android 汽車感應器軸的 X-Y 平面。

    如果 Automotive 裝置實作項目包含可透過 android.hardware.Cameraandroid.hardware.camera2 API 存取的相機,請按照下列步驟操作:

    • [7.5/A-3-1] 必須遵守第 7.5 節的核心相機要求。

    如果 Automotive 裝置實作包含無法透過 android.hardware.Cameraandroid.hardware.camera2 API 存取的相機,則應執行以下動作:

    • [7.5/A-4-1] 必須可透過擴充觀看系統服務存取。

    如果 Automotive 裝置實作包含一或多個可透過擴充檢視畫面系統服務存取的相機,這類相機會執行以下動作:

    • [7.5/A-5-1] 不得旋轉或水平鏡射相機預覽畫面。
    • [7.5/A-SR-4] 強烈建議採用至少 130 萬像素的解析度。

    如果汽車裝置實作項目包含一或多個相機,且這些鏡頭同時可透過擴充檢視系統服務以及 android.hardware.Cameraandroid.hardware.Camera2 API 存取,則這類相機會執行以下動作:

    • [7.5/A-6-1] 請務必回報有相同的相機 ID。

    如果 Automotive 裝置實作提供專屬的相機 API,就會:

  • 2.5.3. 軟體

    查看修訂版本

    Automotive 裝置實作:

    • [3.8/A-0-1] 不得允許非目前前景使用者的完整次要使用者啟動活動,且在任何螢幕上都能存取 UI。

  • 2.5.5. 安全性模型

    查看修訂版本

    如果 Automotive 裝置實作項目宣告了 android.hardware.microphone,就會發生以下情況:

    • [9.8.2/A-1-1] 當應用程式從麥克風存取音訊資料時,「必須」顯示麥克風指標,但如果只有 HotwordDetectionServiceSOURCE_HOTWORDContentCaptureService 或擁有第 9.1 節 (CDD ID [C-4-X]) 所述角色的應用程式可存取麥克風,則不會顯示麥克風指標。
    • [9.8.2/A-1-2] 針對具有可見使用者介面或直接使用者互動的系統應用程式,不得隱藏麥克風指標。
    • [9.8.2/A-1-3] 「設定」應用程式中「必須」提供使用者預設用途,用來切換麥克風。

    如果 Automotive 裝置實作宣告了 android.hardware.camera.any,那麼:

    • [9.8.2/A-2-1] 當應用程式存取即時相機資料時,「必須」顯示相機指標,但如果應用程式僅在第 9.1 節所述權限(符合 CDD ID [C-4-X]) 定義角色,才能存取相機,則「必須」顯示攝影機指標。

    • [9.8.2/A-2-3] 「設定」應用程式中「必須」提供使用者預設用途,以便切換相機。
    • [9.8.2/A-2-4] 「必須」使用 PermissionManager.getIndicatorAppOpUsageData() 傳回的相機,顯示最近和使用中的應用程式,以及與這些應用程式相關聯的歸因訊息。

    如果裝置實作項目具有安全的螢幕鎖定畫面,且包含一或多個實作 TrustAgentService System API 的信任代理程式,就會執行以下動作:

    • [9.11.1/A-1-1] 使用建議的主要驗證方法 (例如 PIN 碼、解鎖圖案、密碼) 須以超過每 336 小時一次的頻率要求使用者驗證。

3. 軟體

  • 3.1. 代管 API 相容性

    查看修訂版本

    裝置實作方式:

    • [C-0-8]「不得」支援安裝指定 API 級別低於 23 的應用程式。

  • 3.2.3.5. 條件式應用程式意圖

    查看修訂版本

    如果裝置實作回報 android.hardware.nfc.uiccandroid.hardware.nfc.ese,就會:

  • 3.3.1. 應用程式二進位檔介面

    查看修訂版本

    裝置實作方式:

    • [C-0-12] 必須透過 libvulkan.so 程式庫匯出核心 Vulkan 1.0 Vulkan 1.1 函式符號,以及 VK_KHR_surfaceVK_KHR_android_surfaceVK_KHR_swapchainVK_KHR_maintenance1VK_KHR_get_physical_device_properties2 擴充功能的函式符號。請注意,雖然所有符號都必須完整顯示,但第 7.1.4.2 節將進一步說明預期各項對應函式完整實作的規定。

  • 3.8.6. 主題

    查看修訂版本

    如果裝置實作項目包含畫面或影片輸出內容,就會發生以下情形:

    • [C-1-5] 必須使用 Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES 說明文件 (請參閱 android.theme.customization.theme_styles) 列舉的色彩主題樣式產生動態調色盤,即 TONAL_SPOTVIBRANTEXPRESSIVESPRITZRAINBOWFRUIT_SALADMONOCHROMATIC

  • 3.8.8. 活動切換

    查看修訂版本

    如果裝置實作項目包含最近使用函式瀏覽鍵 (如第 7.2.3 節所述) 的變更,就會發生以下情形:

    • [C-1-2] 必須實作螢幕固定行為,並提供設定選單讓使用者切換功能。

  • 3.9.2 受管理設定檔支援

    查看修訂版本

    如果裝置實作項目宣告 android.software.managed_users,就會:

    • [C-1-10] 使用具有焦點 (使用者上次在所有活動中互動) 且屬於工作資料夾應用程式topActivity 視窗擷取螢幕截圖時,「必須」確保螢幕截圖資料會儲存在工作資料夾儲存空間。
    • [C-1-11] 除非是工作資料夾應用程式 視窗/視窗 將螢幕截圖儲存至工作資料夾,否則請勿擷取任何其他畫面內容 (為了確保個人用設定檔資料無法儲存)。

  • 3.9.5 Device Policy Resolution Framework:全新章節

    查看修訂版本

    如果裝置實作回報 android.software.device_adminandroid.software.managed_users,則表示:

    • [C-1-1] 必須按照 Android 開放原始碼計畫說明文件中所述方式解決裝置政策衝突。

5. 多媒體相容性

  • 5.1.4. 圖片編碼

    查看修訂版本

    裝置導入方式「必須」支援下列圖片編碼編碼:

    • [C-0-4] AVIF
      • 裝置必須支援 BITRATE_MODE_CQ 和基準設定檔。

  • 5.1.5. 圖片解碼

    查看修訂版本

    裝置實作「必須」支援解碼下列圖片編碼:

    [C-0-7] AVIF (基準設定檔)

  • 5.1.6. 圖片轉碼器詳細資料

    查看修訂版本

    格式/轉碼器 詳細說明 支援的檔案類型/容器格式
    JPEG 基準 + 漸進式 JPEG (.jpg)
    GIF GIF (.gif)
    PNG PNG (.png)
    BMP BMP (.bmp)
    WebP WebP (.webp)
    肉獄 ARW (.arw)、CR2 (.cr2)、DNG (.dng)、NEF (.nef)、NRW (.nrw)、ORF (.orf)、PEF (.pef)、RAF (.raf)、RW2 (.rw2)、SRW (.srw)
    HEIF 圖片、圖片集合、圖片序列 HEIF (.heif)、HEIC (.heic)
    AVIF (基準設定檔) 圖片、圖片收集、圖片序列基準設定檔 HEIF 容器 (.avif)

  • 5.1.8. 視訊轉碼器清單

    查看修訂版本

    格式/轉碼器 詳細說明 支援的檔案類型/容器格式
    標題 263
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • Matroska (.mkv,僅限解碼)
    H.264 AVC 詳情請參閱第 5.2 節 第 5.3 節
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • MPEG-2 TS (.ts,無法搜尋)
    • Matroska (.mkv,僅限解碼)
    H.265 HEVC 詳情請參閱第 5.3 節
    • MPEG-4 (.mp4)
    • Matroska (.mkv,僅限解碼)
    MPEG-2 主要個人資料
    • MPEG2-TS (.ts,無法搜尋)
    • MPEG-4 (僅限解碼 .mp4)
    • Matroska (.mkv,僅限解碼)
    MPEG-4 SP
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • Matroska (.mkv,僅限解碼)
    VP8 詳情請參閱第 5.2 節第 5.3 節
    VP9 詳情請參閱第 5.3 節
    AV1 詳情請參閱第 5.2 節第 5.3 節
    • MPEG-4 (.mp4)
    • Matroska (.mkv,僅限解碼)

  • 5.1.10. 媒體轉碼器字元化

    查看修訂版本

    如果裝置導入方式支援視訊轉碼器:

    • [C-2-1] 所有視訊轉碼器「必須」發布下列大小的可達成影格速率資料 (如果轉碼器可支援):
    SD 標準畫質 (低品質) SD 標準畫質 (高品質) HD 高畫質 720p HD 高畫質 1080p UHD 超高畫質
    影片解析度
    • 176 x 144 像素 (H263、MPEG2、MPEG4)
    • 352 x 288 px (MPEG4 編碼器、H263、MPEG2)
    • 320 x 180 像素 (VP8,VP8)
    • 320 x 240 像素 (其他)
    • 704 x 576 像素 (H263)
    • 640 x 360 像素 (VP8,VP9)
    • 640 x 480 px (MPEG4 編碼器)
    • 720 x 480 像素 (其他,AV1)
    • 1408 x 1152 像素 (H263)
    • 1280 x 720 像素 (其他,AV1)
    1920 x 1080 px (MPEG4 以外的 AV1) 3840 x 2160 px (HEVC、VP9、AV1)

  • 5.2. 影片編碼

    查看修訂版本

    如果裝置實作支援任何影片編碼器,且提供給第三方應用程式使用,就會:

    • 不應:超過兩個滑動窗,與內框 (I 影格) 間隔之間的位元率超過 15%。
    • 位元率不應超過 100% 超過滑動窗口 1 秒。

    如果裝置實作方式支援任何影片編碼器,並將其提供給第三方應用程式,並將
    MediaFormat.KEY_BITRATE_MODE 設為 BITRATE_MODE_VBR,讓編碼器可在可變位元率模式下運作,則只要不影響最低品質下限,經過編碼的位元率即可:

    • [C-5-1] 必須 不得使用超過一個滑動窗口,比內框 (I 影格) 間隔的位元率超過 15%。
    • [C-5-2] 必須 「請勿」超過 100% 的位元率 (以 1 秒滑動期為單位)。

    如果裝置實作方式支援任何影片編碼器,並將其提供給第三方應用程式,並將 MediaFormat.KEY_BITRATE_MODE 設為 BITRATE_MODE_CBR,讓編碼器以固定位元率模式運作,則經過編碼的位元率:

    • [C-6-1] 必須 [C-SR-2] 強烈建議 不要超過目標位元率的 15% (以滑動區間 1 秒為單位)。

  • 5.2.1. H.263

    查看修訂版本

    如果裝置實作支援 H.263 編碼器,並且提供給第三方應用程式使用,它們會:

    • [C-1-1] 必須使用基準設定檔層級 45 支援 QCIF 解析度 (176 x 144)SQCIF 解析度是選用項目。
    • 應支援支援編碼器動態設定的位元率。

  • 5.2.5. H.265

    查看修訂版本

    如果裝置實作支援 H.265 轉碼器,就會:

    • [C-1-1] 必須支援第 3 級的主要設定檔最高 512 x 512 解析度
    • 應支援下表所示的 HD 高畫質編碼設定檔。
    • 若有硬體編碼器,[C-SR-1] 極力建議支援 720 x 480 SD 設定檔和 HD 高畫質編碼設定檔,如下表所示。

  • 5.2.6. AV1:新區段

    查看修訂版本

    如果裝置實作支援 AV1 轉碼器,就會:

    • [C-1-1] 必須支援主要設定檔,包括 8 位元和 10 位元內容。
    • [C-1-2] 「必須」發布成效資料,例如透過 getSupportedFrameRatesFor()getSupportedPerformancePoints() API 回報成效資料,以便查看下表中的支援解析度。

    • [C-1-3] 必須接受 HDR 中繼資料並輸出到位元流

    如果是使用硬體加速的 AV1 編碼器,請按照下列步驟操作:

    • [C-2-1] 必須支援下表最高且包含的 HD1080p 編碼設定檔:
    SD 標準畫質 HD 高畫質 720p HD 高畫質 1080p UHD 超高畫質
    影片解析度 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 3840 x 2160 像素
    影片畫面更新率 30 fps 30 fps 30 fps 30 fps
    視訊位元率 5 Mbps 8 Mbps 16 Mbps 50 Mbps

  • 5.3.2. H.263

    查看修訂版本

    如果裝置實作支援 H.263 解碼器,就會:

    • [C-1-1] 必須支援基準設定檔等級 30 (CIF、QCIF 和 SQCIF 解析度 @ 30fps 384kbps),以及等級 45 (QCIF 和 SQCIF 解析度 @ 30fps 128kbps))。

  • 5.3.9. AV1

    查看修訂版本

    如果裝置實作支援 AV1 轉碼器,就會:

    • [C-1-1] 必須支援 Profile 0,其中包含 10 位元內容。

    如果裝置實作支援 AV1 轉碼器,且提供給第三方應用程式,就會:

    • [C-1-1] 必須支援主要設定檔,包括 8 位元和 10 位元內容。

    如果裝置實作支援使用硬體加速解碼器的 AV1 轉碼器,則程式碼如下:

    • [C-2-1] 當 Display.getSupportedModes() 方法回報的高度等於或大於 720p 時,必須能夠解碼下表中至少 720p 的 HD 高畫質 720p 影片解碼設定檔。
    • [C-2-2] 當 Display.getSupportedModes() 方法回報的高度等於或大於 1080p 時,必須能夠解碼下表中至少 1080p 的 HD 高畫質影片解碼設定檔。
    SD 標準畫質 HD 高畫質 720p HD 高畫質 1080p UHD 超高畫質
    影片解析度 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 3840 x 2160 像素
    影片畫面更新率 30 fps 30 fps 30 fps 30 fps
    視訊位元率 5 Mbps 8 Mbps 16 Mbps 50 Mbps

    如果裝置實作項目透過 Media API 支援 HDR 設定檔,則:

    • [C-3-1] 必須支援從位元串流和/或容器擷取及輸出 HDR 中繼資料。
    • [C-3-2] 必須在裝置螢幕或標準視訊輸出連接埠 (例如 HDMI) 上正確顯示 HDR 內容。

  • 5.4.2. 擷取用於語音辨識的內容

    查看修訂版本

    如果裝置實作項目宣告 android.hardware.microphone,就會:

    • 應將音訊輸入精確度設定為 1000 Hz 音色精度來源,以 90 dB 音壓等級 (SPL) 播放 (測量自音源 30 公分的距離範圍為 ±307 和 30-12 聲道的 RMS 2507)。

  • 5.5.2. 音效

    查看修訂版本

    如果裝置實作方式宣告了 android.hardware.audio.output 功能,就會:

    • [C-1-4] 必須透過浮點輸入和輸出支援音效
    • [C-1-5] 必須確保音效支援至混音器聲道數以內的多個聲道,也稱為 FCC_LIMIT。

  • 5.6. 音訊延遲

    查看修訂版本

    如果裝置實作宣告 android.hardware.audio.output,則極力建議符合或超過下列規定:

    • [C-SR-4] AudioTrack.getTimestampAAudioStream_getTimestamp 傳回的輸出時間戳記準確為 +/- 1 毫秒。

    • [C-SR-4] 根據 AAudioStream_getTimestamp 傳回的輸入和輸出時間戳記計算出的來回延遲時間,極力建議將 AAUDIO_PERFORMANCE_MODE_NONEAAUDIO_PERFORMANCE_MODE_LOW_LATENCY (如為有線和無線耳機) 測得的來回延遲時間在 30 毫秒內。

7. 硬體相容性

  • 7.1. 顯示和圖形

    查看修訂版本

    Android 內含可自動為裝置調整應用程式資產和 UI 版面配置的功能,確保第三方應用程式能在各種硬體設定上正常運作。 各種硬體顯示和設定。Android 相容螢幕是一種螢幕,會實作「Android 開發人員 - 螢幕相容性總覽」、本節 (7.1) 及其子章節,以及本 CDD 第 2 節所述的任何其他裝置類型特定行為。 在 Android 相容螢幕中,所有第三方相容的 Android 應用程式皆可執行,裝置實作「必須」正確實作這些 API 和行為,如本節所述。

    制定新規定

    裝置實作方式:

    • [C-0-1] 預設只能在 Android 相容螢幕上轉譯第三方應用程式。

    本節中規定所參照的單位定義如下:

    • 實際對角線大小。螢幕發光部分兩個對角之間的距離 (以英寸為單位)。
    • 每英寸像素數 (dpi)密度。 垂直水平或垂直跨度為 1 吋的像素數量,以每英寸像素數 (ppi 或 dpi) 表示。如果列出 dpi ppi 和 dpi 值,則水平和垂直 dpi 都必須位於列出的範圍內。
    • 顯示比例。長尺寸的像素與螢幕短邊的比例。舉例來說,480x854 像素的顯示大小為 854/480 = 1.779,或大概為「16:9」。
    • 密度獨立像素 (dp) 虛擬像素單位正標準化為 160 dpi 螢幕 螢幕密度為 160。針對某些密度 d 和像素 p,密度獨立像素 dp 的計算方式為:pixels = dps * (密度/160) dp = (160 / d) * p

  • 7.1.1.1. 螢幕大小和形狀

    查看修訂版本

    如果裝置實作支援支援 UI_MODE_TYPE_NORMAL 大小設定與 Android 相容實體螢幕,即可使用圓角的螢幕算繪這些畫面

    • [C-1-1] 必須確保每種螢幕至少符合下列其中一項要求:
    • 圓角的半徑小於或等於 38 dp。
    • 將 15 dp x 15 dp 的方塊固定在邏輯螢幕的各角落時,每個方塊至少要有一個像素顯示在畫面中。

    • 應提供使用者預設用途,切換為以矩形邊角切換至顯示模式。

    制定新規定

    如果裝置實作項目只能設定 NO_KEYS 鍵盤設定,並想要回報 UI_MODE_TYPE_NORMAL UI 模式設定的支援情況,就會執行以下動作:

    • [C-4-1] 必須提供至少 596 dp x 384 dp 以上的版面配置大小,但不包括任何螢幕凹口。

    如果裝置實作項目包含與 Android 相容的摺疊式螢幕,或是在多個螢幕面板之間加入折疊轉軸,並提供這類螢幕轉譯第三方應用程式,那麼程式碼會:

    如果裝置實作項目包含與 Android 相容的折疊式螢幕,或是在多個螢幕面板之間設置折疊轉軸,且轉軸或折疊跨越全螢幕應用程式視窗,就會執行以下動作:

    • [C-3-1] 必須向應用程式回報轉軸或折疊的位置、邊界和狀態。

    如果裝置實作項目包含一或多個與 Android 相容的摺疊式螢幕區域,或是在多個 Android 相容顯示面板區域之間加入折疊轉軸,並為應用程式提供這類顯示區域,就會:

    • [C-4-1] 必須按照即將推出的說明文件所述,實作正確的視窗管理員 Extensions API 級別版本。

  • 7.1.1.2. 螢幕顯示比例:已移除

  • 7.1.1.3. 螢幕密度

    查看修訂版本

    裝置導入:

    • 裝置實作項目應定義與螢幕實際密度最接近標準 Android 架構密度的標準 Android 架構密度,除非該邏輯密度會將回報的螢幕大小推進低於支援下限。如果標準 Android 架構密度的數值接近實體密度,且螢幕尺寸低於支援的最小相容螢幕大小 (320 dp 寬度),則裝置實作應會回報下一個最低的標準 Android 架構密度。

    制定新規定

    • 應定義與螢幕實際密度以數值表示的標準 Android 架構密度,或是對應至與手持裝置同等角度視野測量的值。

    如果裝置實作提供變更裝置的顯示大小的預設用途,就會:

    • [C-1-1] 顯示大小不得縮放 「不得」縮放 大於 DENSITY_DEVICE_STABLE 原生密度 或產生小於 320dp (相當於資源限定詞 sw320dp) 的有效最小螢幕尺寸。
    • [C-1-2] 請勿縮放任何螢幕大小 不得縮放 DENSITY_DEVICE_STABLE 原生密度的 0.85 倍。

  • 7.1.4.2 Vulkan

    查看修訂版本

    如果裝置實作項目支援 Vulkan 1.0 以上版本,程式碼就會:

    • [C-1-3] 必須針對每個列舉的 VkPhysicalDevice 完全實作 Vulkan 1.0 Vulkan 1.1 API。

    • [C-1-5] 不得列舉應用程式套件以外的程式庫提供的層,也不得提供追蹤或攔截 Vulkan API 的其他方式,除非應用程式已將 android:debuggable 屬性設為 true ,或中繼資料 com.android.graphics.injectLayers.enable 設為 true

    • 應支援 VkPhysicalDeviceProtectedMemoryFeaturesVK_EXT_global_priority

    • [C-SR-5] 強烈建議支援 VkPhysicalDeviceProtectedMemoryFeatures.protectedMemoryVK_EXT_global_priority

    • [C-SR-6] 強烈建議將 SkiaVk 與 HWUI 搭配使用。

    如果裝置實作項目支援 Vulkan 1.1,並宣告 此處 所述的任何 Vulkan 功能旗標,就會:

    • [C-SR-7] 強烈建議將 VK_KHR_external_fence_fd 擴充功能提供給第三方應用程式,並讓應用程式將圍欄酬載匯出至,以及從 POSIX 檔案描述元匯入圍欄酬載。如這裡所述。

  • 7.3.10. 生物特徵辨識感應器

    查看修訂版本

    如果裝置實作的裝置有多個生物特徵辨識感應器,就會:

    • [C-7-1] 如果生物特徵辨識處於鎖定狀態 (也就是在使用者透過主要驗證解鎖前停用,生物特徵辨識就會停用),或是因失敗嘗試而遭到鎖定 (亦即暫時停用,直到使用者等待時間間隔),導致生物特徵辨識功能暫時停用,才能同時鎖定較低生物特徵辨識類別的所有生物特徵辨識指標。如果是時限鎖定,生物特徵辨識驗證的輪詢時間「必須」是所有具時效鎖定狀態中所有生物特徵的輪詢時間上限。

    • [C-SR-12] 強烈建議「極力」建議在生物特徵鎖定處於鎖定狀態時 (也就是在使用者透過主要驗證解鎖前停用生物特徵辨識) 或時限鎖定 (亦即在使用者等待一段時間過後,才會暫時停用生物特徵辨識功能),以免使用者等待多次失敗的生物特徵辨識嘗試而遭到鎖定。在設有時效限制的情況下,強烈建議使用生物特徵辨識驗證的輪詢時間,做為在時效鎖定內所有生物特徵的輪詢時間上限。

    • [C-7-2] 必須要求使用者執行建議的主要驗證方式 (例如 PIN 碼、解鎖圖案、密碼),才能重設鎖定計數器,以免生物特徵辨識遭到鎖定。第 3 級生物特徵辨識可以為相同或較低類別的鎖定生物特徵辨識重設鎖定計數器。第 2 級第 1 級生物特徵「不得」針對任何生物特徵辨識完成重設鎖定作業。

    如要將生物特徵辨識感應器視為「第 1 級」(先前稱為「便利」) 的裝置實作項目,請執行以下操作:

    • [C-1-12] 依據 Android 生物特徵辨識測試通訊協定進行評估,每個簡報攻擊工具 (PAI) 物種的假冒和冒名接受率不得超過 40%。

    • [C-SR-13] 我們極力建議採用 Android 生物特徵辨識測試通訊協定的評估結果,以假冒和冒名他人身分的接受率高於 30% 以上。

    • [C-SR-14] 強烈建議揭露生物特徵辨識感應器的生物特徵辨識類別,以及啟用該感應器的相關風險。

    • [C-SR-17] 極力建議您實作新的 AIDL 介面 (例如 IFace.aidlIFingerprint.aidl)。

    如果想將生物特徵辨識感應器視為類別 2 (先前稱為「弱」),裝置實作項目會:

    • [C-2-3] 「必須」在 Android 使用者或核心空間外的獨立執行環境中 (例如受信任的執行環境 (TEE)) 執行生物特徵辨識比對,在晶片上具有安全通道的獨立執行環境,或是符合第 9.17 節規定的受保護虛擬機器
    • [C-2-4] 所有可識別資料都必須經過加密及加密驗證,才能在獨立執行環境外取得、讀取或修改,也不能使用安全管道的晶片與獨立執行環境的晶片 (如 Android 開放原始碼計畫網站的實作指南所述,或符合第 9 節要求的受保護虛擬機器程序) 所述。1
    • [C-2-5] 針對相機型生物特徵辨識,用於進行生物特徵辨識驗證或註冊:
      • 「必須」以能夠防止相機框架在獨立執行環境之外讀取或修改的模式,或包含安全通道的晶片至獨立的執行環境,或由符合第 9.17 節規定的管理程序控管的 Protected Virtual Machine
      • 如為 RGB 單一相機解決方案,「CAN」可在獨立執行環境外讀取相機影格,以支援註冊預覽等作業,但「不得」變更。
    • [C-2-7] 在 TEE 以外,或由符合第 9.17 節需求條件的管理程序控管的 Protected Virtual Machine for Hypervisor 中,不得允許以未加密的方式存取可識別的生物特徵辨識資料或從中衍生的任何資料 (例如嵌入)。如果是搭載 Android 9 以下版本的裝置升級,不適用於 C-2-7。

    如要將生物特徵辨識感應器視為第 3 級 (舊稱「強」) 的裝置實作方式,請按照下列步驟操作:

  • 7.3.13. IEEE 802.1.15.4 (UWB)

    查看修訂版本

    如果裝置的實作支援 802.1.15.4,並且向第三方應用程式公開功能,他們會:

    • [C-1-2] 必須回報硬體功能旗標 android.hardware.uwb
    • [C-1-3] 必須支援 Android 開放原始碼計畫實作項目中定義的所有設定集 (FIRA UCI 參數的預先定義組合)。
      • CONFIG_ID_1:FiRa 定義的單點傳播 STATIC STS DS-TWR 範圍,延遲模式,間隔為 240 毫秒。
      • CONFIG_ID_2:FiRa 定義的一對多 STATIC STS DS-TWR,範圍為延遲模式,間隔為 200 毫秒。一般用途:智慧型手機與許多智慧型裝置互動。
      • CONFIG_ID_3:與 CONFIG_ID_1 相同,但系統不會回報抵達 (AoA) 資料。
      • CONFIG_ID_4:與 CONFIG_ID_1 相同,不過啟用 P-STS 安全模式。
      • CONFIG_ID_5:與 CONFIG_ID_2 相同,不過啟用 P-STS 安全模式。
      • CONFIG_ID_6:與 CONFIG_ID_3 相同,不過啟用 P-STS 安全模式。
      • CONFIG_ID_7:與 CONFIG_ID_2 相同,但啟用 P-STS 個別控制金鑰模式除外。
    • [C-1-4] 必須為使用者提供預設選項,讓使用者能夠切換 UWB 無線電狀態。
    • [C-1-5] 必須強制要求使用 UWB 無線電的應用程式 (在 NEARBY_DEVICES 權限群組下) 保留 UWB_RANGING 權限。

    通過標準機構定義的相關一致性和認證測試,包括 FIRACCCCSA,有助於確保 802.1.15.4 正常運作。

  • 7.4.1. 電話

    查看修訂版本

    「電話」是 Android API 所使用的「電話」,本文件專指撥打語音通話和傳送簡訊 ,或透過行動裝置 (例如 GSM、CDMA、LTE、NR)GSM 或 CDMA 網路建立行動數據的相關硬體),支援「電話」功能的裝置可能會選擇根據產品,提供部分或所有通話、訊息和資料服務。

    透過 GSM 或 CDMA 網路使用。儘管這類語音通話不一定是透過封包切換,但這類呼叫僅適用於 Android 用途,原因是這類呼叫可能使用相同網路實作的任何數據連線。換句話說,Android 的「電話」功能和 API 專指語音通話和簡訊。舉例來說,凡是無法撥打電話或傳送/接收簡訊的裝置實作項目,都不視為電話裝置,不論是否透過行動網路進行數據連線。

  • 7.4.2. IEEE 802.11 (Wi-Fi)

    查看修訂版本

    如果裝置實作項目支援 802.11,並且向第三方應用程式公開功能,他們會:

    • [C-1-4] 必須支援多點傳送 DNS (mDNS),且「不得」在任何作業期間篩選 mDNS 封包 (224.0.0.251 或 ff02::fb),包括螢幕並非活動狀態時 (必須捨棄或篩選為遵守法規要求的適用範圍時)。適用於 Android 電視裝置實作,即使在待機電源狀態中也一樣。

  • 7.4.3. 藍牙

    查看修訂版本

    如果裝置實作宣告了 FEATURE_BLUETOOTH_LE,就會:

    • [C-SR-2] 強烈建議「不要」測量及補償 Rx 偏移,確保 BLE RSSI 與在 ADVERTISE_TX_POWER_HIGH 傳輸的參考裝置相距 1 公尺 +/-10 dB,且裝置方向為「平行平面」,且螢幕朝向相同方向的螢幕。
    • [C-SR-3] 強烈建議「極力」評估及補償 Tx 偏移量,確保從位於 1 公尺距離的參考裝置進行掃描時,在 ADVERTISE_TX_POWER_HIGH 進行傳輸時,裝置會朝向平行平面的方向朝向同一方向傳輸,藉此確保 BLE RSSI 的中位數為 -60dBm +/-10 dB。

    • [C-10-3] 必須測量並補償 Rx 偏移,確保 BLE RSSI 與從 ADVERTISE_TX_POWER_HIGH 傳輸的參照裝置相距 1 公尺為 -55dBm +/-10 dB。
    • [C-10-4] 對位於 1 公尺距離且傳輸至 ADVERTISE_TX_POWER_HIGH 的參考裝置進行掃描時,必須測量並補償 Tx 偏移,確保 BLE RSSI 為 -55dBm +/-10 dB。

    如果裝置的實作支援藍牙 5.0 版,就會發生以下情形:

    • [C-SR-4] 強烈建議你為下列項目提供支援:
    • 低 200 萬階段
    • LE 轉碼器 PHY
    • LE 廣告額外資訊
    • 定期廣告
    • 至少 10 個廣告集
    • 至少 8 個 LE 並行連線。每個連線都能屬於任一連線拓撲角色。
    • LE Link 層隱私權
    • 「解析清單」大小至少要有 8 個項目

  • 7.4.9. UWB

    查看修訂版本

    • [C-1-7] 必須確保在參考裝置與參考裝置之間,1 公尺的距離測量中位數介於 [0.75m, 1.25m] 內,其中真值距離為自 DUT 頂端邊緣測量而得。 站立且傾斜為 45 度。

  • 7.5.1. 後置鏡頭

    查看修訂版本

    後置鏡頭是指位於裝置側面的攝影機,不像螢幕一樣,也就是說,拍攝對像在裝置最遠處的場景,就像傳統相機一樣。

    後置鏡頭是一種面向世界的相機,用圖像拍攝裝置最遠處的畫面,例如傳統相機;手持裝置是指裝置側面的攝影機,面向螢幕。

  • 7.5.2. 前置鏡頭

    查看修訂版本

    前置鏡頭是指與螢幕位於裝置同一側的攝影機;也就是說,通常用於拍攝視訊會議等類似應用程式,用來呈現使用者的圖像。

    前置鏡頭是指面向使用者的鏡頭,通常用於拍攝使用者影像,例如視訊會議和類似的應用程式;手持裝置是指與螢幕位於裝置同一側的攝影機。

  • 7.5.3. 外接鏡頭

    查看修訂版本

    外接鏡頭是指隨時在裝置實作項目中實際連接或卸離的攝影機,可以面對任何方向 (例如 USB 攝影機)。

  • 7.5.4. Camera API 行為

    查看修訂版本

    裝置實作「必須」針對所有可用的相機,為相機相關 API 實作下列行為。裝置實作方式:

  • 7.5.5. 相機方向

    查看修訂版本

    凡是符合下列所有條件的裝置,就不受上述規定限制:

    • 無法由使用者旋轉的裝置實作項目,例如汽車裝置。

  • 7.10. 觸覺回饋

    查看修訂版本

    專門用於手持或穿戴的裝置可能包含一般用途的觸覺技術,其可用於應用程式用途,包括透過鈴聲、鬧鐘、通知,以及一般觸控回饋吸引註意力。

    如果裝置的實作「不包含」這類一般用途的觸覺回饋器,則會:

    • [7.10/C] 必須為 Vibrator.hasVibrator() 傳回 false。

    如果裝置實作項目「至少」包含一個這類一般用途的觸覺技術,其:

    如果裝置實作方式遵循觸覺常數對應,就會:

    如要瞭解裝置專屬的需求,請參閱 2.2.1 節。

9. 安全性模型相容性

  • 9.1. 權限

    查看修訂版本

    裝置實作方式:

    • [C-0-4] 兩個使用者介面都只能擇一實作。

    如果裝置實作項目預先安裝任何包含 System UI IntelligenceSystem Ambient Audio IntelligenceSystem Audio IntelligenceSystem Notification IntelligenceSystem Text IntelligenceSystem Visual Intelligence 角色的套件,則包含以下套件:

    • [C-4-1] 必須符合「9.8.6 內容擷取」章節「9.8.6 作業系統層級和環境資料和 9.8.15 沙箱 API 實作項目」章節中的所有實作要求。

    • [C-4-2] 「不得」擁有 android.permission.INTERNET 權限。此做法比第 9.8.6 節所列的「強烈推薦」要嚴格。
    • [C-4-3] 不得繫結至其他應用程式,但下列系統應用程式除外:藍牙、聯絡人、媒體、電話、SystemUI,以及提供 Internet API 的元件。此做法比第 9.8.6 節所列的「強烈推薦」要嚴格。

    如果裝置實作項目包含支援 VoiceInteractionService 的預設應用程式:

    • [C-5-1] 「不得」將 ACCESS_FINE_LOCATION 授予該應用程式的預設授權。

  • 9.5. 多使用者支援

    查看修訂版本

    如果裝置實作建立上述的額外使用者設定檔,則:

    • [C-4-5] 系統向使用者顯示圖示時,務必明確區分雙執行個體應用程式的圖示。
    • [C-4-6] 「必須」提供使用者容許條件,才能刪除完整的本機設定檔資料。
    • [C-4-7] 使用者選擇刪除整個 Clone 設定檔資料時,「必須」解除安裝所有複製應用程式、刪除私人應用程式資料目錄及其內容,以及刪除「本機副本」設定檔資料。
    • 刪除最後一個複製的應用程式時,「不應」提示使用者刪除整個複製設定檔資料。
    • [C-4-8] 必須告知使用者,在使用者解除安裝本機副本應用程式時會刪除應用程式資料,或為使用者提供從裝置中解除安裝應用程式後,保留應用程式資料的選項。
    • [C-4-9] 當使用者在解除安裝期間選擇刪除資料時,「必須」刪除私人應用程式資料目錄及其內容。

    • [C-4-14] 針對在此額外設定檔中執行的應用程式,必須個別擁有權限和儲存空間管理權

    • [C-4-5] 「必須」只允許其他設定檔中,具有啟動器活動的應用程式存取上層使用者設定檔可存取的聯絡人。

  • 9.7. 安全性功能

    查看修訂版本

    記憶體安全技術是一種技術,在使用 android:memtagMode 資訊清單選項的應用程式中,至少可降低以下類別錯誤機率較高 (超過 90%):

    • 堆積緩衝區溢位
    • 釋放後使用
    • 雙釋放
    • 狂野自由 (不含非 M-malloc 指標)

    裝置實作方式:

    • [C-SR-15] 強烈建議設定 ro.arm64.memtag.bootctl_supported

    如果裝置實作方式將系統屬性 ro.arm64.memtag.bootctl_supported 設為 true,就會:

    • [C-3-1] 必須允許系統屬性 arm64.memtag.bootctl 接受以半形逗號分隔的值清單,並在下次重新啟動時套用所需效果:

      • memtag:已啟用上述的記憶體安全技術
      • memtag-once:上述記憶體安全技術會暫時啟用,並在下次重新啟動時自動停用
      • memtag-off:上述記憶體安全技術已停用
    • [C-3-2] 必須允許殼層使用者設定 arm64.memtag.bootctl

    • [C-3-3] 必須允許任何程序讀取 arm64.memtag.bootctl

    • [C-3-4] 如果裝置實作可在不變更系統屬性的情況下修改狀態,則必須將 arm64.memtag.bootctl 設為目前要求的狀態,也「必須」更新屬性。

    • [C-SR-16] 強烈建議顯示開發人員設定,該項設定會設定一次 memtag,並重新啟動裝置。使用相容的系統啟動載入程式時,Android 開放原始碼專案會透過 MTE 系統啟動載入程式通訊協定符合上述需求。

    • [C-SR-17] 強烈建議在「安全性設定」選單中顯示可讓使用者啟用 memtag 的設定。

  • 9.8.2. 錄製功能

    查看修訂版本

    裝置實作方式:

    • [C-0-2] 必須顯示使用者警告並取得明確的使用者同意,允許擷取使用者螢幕畫面中的任何機密資訊,且其中會包含與 Android 開放原始碼計畫完全相同的訊息 每次 或每次使用專屬 API,或MediaProjection.createVirtualDisplay()VirtualDeviceManager.createVirtualDisplay()「不得」向使用者提供預設用途,停止顯示使用者同意聲明。

  • 9.8.6. OS 層級和環境資料:這個部分已從「內容擷取和應用程式搜尋」重新命名為「OS 層級和環境資料」

    查看修訂版本

    Android 透過系統 API ContentCaptureServiceAugmentedAutofillServiceAppSearchGlobalManager.query 或其他獨有方式支援裝置實作機制,可擷取下列應用程式與使用者之間的應用程式資料互動 機密資料

    • 透過 AugmentedAutofillService 傳送至系統的任何畫面或其他資料。
    • 可透過 Content Capture API 存取的任何畫面或其他資料。
    • 可透過 FieldClassificationService API 存取的任何畫面或其他資料
    • 透過 AppSearchManager API 傳遞至系統,且可透過 AppSearchGlobalManager.query 存取的任何應用程式資料。

    • 應用程式透過 Content Capture API 或 AppSearchManager API 提供給系統的任何其他事件,這類事件也是功能類似的 Android 和專屬 API。

    • 由 Speech Recognizer 實作方式使用 SpeechRecognizer#onDeviceSpeechRecognizer() 而取得的音訊資料。
    • 透過 AudioRecordSoundTrigger 或其他音訊 API 在背景 (持續) 取得的音訊資料,且不會向使用者顯示可見指標
    • 透過 CameraManager 或其他 Camera API,持續在背景取得的相機資料,且不會向使用者顯示可見指標

    如果裝置的導入方式擷取上述任何資料,就會:

    • [C-1-3] 「必須」只透過隱私權保護機制,將所有資料「和記錄」從裝置外部傳送,除非每次分享資料時都要徵得使用者同意。隱私權保護機制定義為「只允許對已記錄的事件進行匯總分析,並防止將記錄事件或衍生結果與個別使用者進行比對,藉此避免個別使用者資料一目瞭然 (例如使用 RAPPOR 等差異化隱私技術實作)。

    • [C-1-5] 「不得」將這類資料分享給不符合目前一節 (9.8.6 內容擷取 OS 層級和環境資料) 規定的其他 OS 元件,除非每次共用都已明確徵得使用者同意。除非這類功能是以 Android SDK API 建構 (AmbientContextHotwordDetectionService)。

    • [C-1-6] 「必須」為使用者提供彈性清除這類資料,因為 ContentCaptureService 實作或專屬資訊是指「當」將資料以任何形式儲存在裝置中,就會收集這類資料。如果使用者選擇清除資料,「必須」移除所有已收集的歷來資料。

    • [C-SR-3] 我們強烈推薦使用 Android SDK API 或原始設備製造商 (OEM) 擁有的類似開放原始碼存放區實作;以及 / 或是在採用沙箱機制的實作中執行 (請參閱 9.8.15 沙箱 API 實作項目)。

    Android 透過 SpeechRecognizer#onDeviceSpeechRecognizer() 即可在不涉及網路的情況下,在裝置上執行語音辨識功能。裝置端 SpeechRecognizer 的實作方式都「不得」遵循本節所述的政策。

  • 9.8.10. 連線錯誤報告

    查看修訂版本

    如果裝置實作程序宣告了 android.hardware.telephony 功能旗標,就會:

    • [C-1-4] 使用 BUGREPORT_MODE_TELEPHONY 產生的報表至少「必須」包含以下資訊:
      • SubscriptionManagerService 轉儲

  • 9.8.14. Credential Manager:已移除

  • 9.8.15. 沙箱模式 API 實作:全新章節

    查看修訂版本

    Android 透過一組委派 API 提供處理安全的 OS 層級和環境資料的機制。這類處理作業可以委派給具有特殊存取權限的預先安裝 APK,並減少通訊功能,這稱為沙箱 API 實作。

    任何採用沙箱機制的 API 實作:

    • [C-0-1] 不得要求 INTERNET。
    • [C-0-2] 「必須」僅能透過採用隱私權保護機制的結構化 API 存取網際網路,該 API 須採用可公開取得的開放原始碼實作方式,或透過 Android SDK API 間接存取。隱私權保護機制定義為「僅允許對已記錄事件或衍生結果進行匯總分析,並防止比對已記錄的事件或衍生結果給個別使用者」,防止任何個別使用者資料出現檢查 (例如使用 RAPPOR 等差異化隱私技術實作)。
    • [C-0-3] 必須區隔服務與其他系統元件 (例如,不得繫結服務或共用程序 ID),但下列情況除外:
      • 電話、聯絡人、系統 UI 和媒體
    • [C-0-4] 不得讓使用者以可安裝的應用程式或服務取代服務
    • [C-0-5] 「必須」只允許預先安裝的服務擷取這類資料。 除非 Android 開放原始碼計畫已內建替代功能 (例如數位助理應用程式)。
    • [C-0-6] 不得允許除了預先安裝的服務機制外的任何應用程式擷取這類資料。除非已透過 Android SDK API 實作這類擷取功能。
    • [C-0-7] 必須為使用者提供停用服務的額度。
    • [C-0-8] 「不得」省略使用者負擔以管理服務持有的 Android 權限,並遵循第 9.1 節. 權限

  • 9.8.16. 連續音訊和相機資料:全新部分

    查看修訂版本

    除了 9.8.2 錄影、9.8.6 OS 層級和環境資料和 9.8.15 個沙箱機制的 API 實作項目外,如果實作的是透過 AudioRecord、SoundTrigger 或其他音訊 API,或是透過 CameraManager 或其他 Camera API 在背景取得的音訊資料 (持續) 取得的相機資料,應遵循以下規定:

    • [C-0-1] 除非第 9.8.2 節的錄影內容規定,否則必須強制執行對應的指標 (相機和/或麥克風):
    • [C-SR-1] 強烈建議使用這類資料的所有功能都必須先取得使用者同意,且預設為停用。
    • [C-SR-2] 強烈建議為遠端裝置提供的相機資料套用相同的處理方式 (即 9.8.2 錄製、9.8.6 OS 層級和環境資料、9.8.15 沙箱機制 API 實作項目,以及 9.8.16 連續音訊和相機資料中所列的限制)。

    如果相機資料是從遠端穿戴式裝置提供,並以 Android 作業系統外的未加密形式存取、採用沙箱機制的實作項目,或 WearableSensingManager 建構的沙箱功能存取資料,則可能:

    • [C-1-1] 必須向遠端穿戴式裝置指出,才能在該處顯示額外指標。

    如果裝置可以在沒有指定關鍵字的情況下,與數位助理應用程式互動 (處理一般使用者查詢,或透過相機分析使用者在家狀態):

    • [C-2-1] 請務必確保這類實作是由擁有 android.app.role.ASSISTANT 角色的套件提供。
    • [C-2-2] 必須確保該實作方式使用 HotwordDetectionService 和/或 VisualQueryDetectionService Android API。

  • 9.8.17. 遙測:新區段

    查看修訂版本

    Android 會使用 StatsLog API 儲存系統和應用程式記錄。這些記錄是透過 StatsManager API 管理,並可供具有特殊權限的系統應用程式使用。

    此外,StatsManager 也能透過隱私保護機制,從裝置收集歸類為隱私敏感的資料。特別是,StatsManager::query API 能夠查詢 StatsLog 中定義的受限制指標類別。

    任何實作查詢並收集 StatsManager 中的受限指標:

    • [C-0-1] 必須為裝置唯一的應用程式/實作項目,且具有 READ_RESTRICTED_STATS 權限。
    • [C-0-2] 「必須」採用隱私保護機制,才能傳送遙測資料和裝置記錄。隱私權保護機制的定義為「僅允許以匯總形式分析,並防止將已記錄的事件或衍生結果與個別使用者進行比對」,藉此防止個別使用者資料出現自我檢查 (例如使用 RAPPOR 等差異隱私技術實作)。
    • [C-0-3] 「不得」將這類資料與裝置上的任何使用者身分 (例如帳戶) 建立關聯。
    • [C-0-4] 「不得」將這類資料分享給未遵循上一節規定 (9.8.17 隱私權保護遙測) 規定的其他 OS 元件。
    • [C-0-5] 「必須」提供使用者預設用途,以啟用/停用隱私權保護遙測資料收集、使用及分享。
    • [C-0-6] 如果資料以任何形式儲存在裝置上,則必須為使用者提供充足的容許,以便清除實作作業收集的資料。如果使用者選擇清除資料,「必須」移除裝置上目前儲存的所有資料。
    • [C-0-7] 必須在開放原始碼存放區中揭露基礎的隱私權保護通訊協定實作。
    • [C-0-8 ]必須強制執行本節所述的資料輸出政策,以限制 StatsLog 中定義之受限制指標類別的資料收集作業。

  • 9.10. 裝置完整性

    查看修訂版本

    裝置導入

    如果裝置實作項目能夠驗證個別頁面的檔案內容,那麼

    • [C-0-3 C-2-1] 支援在不讀取完整檔案的情況下,以加密方式驗證檔案內容,根據信任的金鑰驗證檔案內容。

    • [C-0-4 C-2-2] 當讀取內容未依據信任的金鑰進行驗證 ,但未根據上述 [C-2-1] 進行驗證時,「不得」允許受保護檔案的讀取要求成功。

    • [C-2-4] 必須針對已啟用的檔案傳回 O(1) 中的總和檢查碼。

  • 9.11. 金鑰和憑證

    查看修訂版本

    Android KeyStore 系統可讓應用程式開發人員在容器中儲存加密編譯金鑰,並透過 KeyChain APIKeystore API 將加密編譯金鑰用於加密編譯作業。裝置實作方式:

    • [C-0-3] 必須限制主要驗證失敗次數。
    • [C-SR-2] 強烈建議實作 20 次主要驗證失敗次數的上限。如果使用者同意並選擇啟用這項功能,那麼在超過主要驗證失敗次數的限制後,執行「恢復原廠設定」。

    如果裝置實作項目新增或修改驗證方式 (如果以已知的密鑰為依據),藉此解鎖螢幕鎖定畫面,並使用新的驗證方法做為鎖定螢幕的安全方式,則請按照下列步驟操作:

    • [C-SR-3] 強烈建議使用至少 6 位數的 PIN 碼,或相當於 20 位元熵。
    • [C-2-1] 長度少於 6 位數的 PIN 碼「不得」在使用者沒有互動的情況下自動輸入,以免顯示 PIN 碼長度。

  • 9.11.1. 安全螢幕鎖定、驗證和虛擬裝置

    查看修訂版本

    裝置實作方式:

    • [C-0-1] 必須限制主要驗證失敗次數。
    • [C-SR-5] 強烈建議你導入 20 次失敗的主要驗證嘗試次數。如果使用者同意並選擇啟用這項功能,在超過主要驗證失敗次數的限制後,執行「恢復原廠設定」。

    如果裝置實作方式將數字 PIN 碼設為建議的主要驗證方法,則:

    • [C-SR-6] 強烈建議使用至少 6 位數的 PIN 碼,或相當於 20 位元熵。
    • [C-SR-7] 強烈建議「不要」在沒有使用者互動的情況下自動輸入 PIN 碼,以免洩漏 PIN 碼的長度。

    如果裝置實作項目具有安全的螢幕鎖定畫面,且包含一或多個實作 TrustAgentService System API 的信任代理程式,就會執行以下操作:

    [C-7-8] 除非使用者有安全考量 (例如駕駛人分心) 問題,否則「必須」至少每隔 72 小時才能驗證一次建議的主要驗證方式 (例如 PIN 碼、解鎖圖案、密碼) 方法。

    如果裝置實作項目可讓應用程式建立次要虛擬螢幕並支援相關的輸入事件 (例如透過 VirtualDeviceManager),且螢幕未標示 VIRTUAL_DISPLAY_FLAG_SECURE,那麼:

    [C-13-10] 必須停止安裝透過虛擬裝置啟動的應用程式。

  • 9.17. Android 虛擬化架構

    查看修訂版本

    如果裝置實作 Android 虛擬化架構 API (android.system.virtualmachine.*) 的支援功能,Android 主機會執行以下動作:

    • [C-1-1] 必須支援 android.system.virtualmachine 套件定義的所有 API。
    • [C-1-2] 不得修改 Android SELinux 和權限模型,以管理受保護的虛擬機器 (pVM)

    • [C-1-3] 「不得」修改、省略或取代上游 Android 開放原始碼計畫 (AOSP) 所提供系統/sepolicy 中的不允許規則,且必須在編譯時以所有永不允許的規則。

    • [C-1-4] 「必須」允許平台簽署的程式碼和具有特殊權限的應用程式不得允許不受信任的程式碼 (例如第三方應用程式) 建立及執行受保護的虛擬機器pVM。注意:日後的 Android 版本中可能會發生變更。

    • [C-1-5] 不得允許 Protected Virtual Machine pVM 執行不在原廠映像檔或更新項目中的程式碼。 不屬於 Android 驗證開機程序的所有內容 (例如從網際網路下載的檔案或側載的檔案) 都「不得」在受保護的虛擬機器中執行

    • [C-1-5] 「必須」只允許不可進行偵錯的 pVM 執行來自工廠映像檔或其平台更新的程式碼,包括對具有特殊權限的應用程式的所有更新。

    如果裝置實作 Android Virtualization Framework API (android.system.virtualmachine.*) 的支援功能,則請使用任何「Protected Virtual Machine pVM 」例項:

    • [C-2-1] 必須能夠在Protected Virtual Machine pVM 中執行虛擬化 APEX 中提供的所有作業系統。
    • [C-2-2] 不得允許受保護的虛擬機器 pVM 執行未經裝置實作者或 OS 廠商簽署的作業系統。
    • [C-2-3] 不得允許 Protected Virtual Machine pVM 以程式碼的形式執行資料 (例如 SELinux 一律不允許 execmem)。

    • [C-2-4] 不得修改、省略或取代上游 Android 開放原始碼計畫 (AOSP) 中提供的系統/sepolicy/microdroid 中的永不允許規則。

    • [C-2-5] 即使是非 Microdroid 作業系統,也必須採用受保護的虛擬機器 pVM 深度防禦機制 (例如 pVM 適用的 SELinux)。
    • [C-2-6] 如果無法驗證 VM 將執行的初始映像檔,則必須確保 pVM 故障 韌體會拒絕啟動。「必須」在 VM 中進行驗證。
    • [C-2-7] 如果 instance.img 遭到入侵,必須確保 pVM 故障 韌體會拒絕 啟動。

    如果裝置實作 Android Virtualization Framework API (android.system.virtualmachine.*) 的支援,則管理程序:

    • [C-3-1] 必須確保只有虛擬機器 (pVM 或主機 VM) 擁有的記憶體頁面僅供虛擬機器或管理程序存取,不能由其他虛擬機器存取 (無論是受保護或未受保護的)。 除非頁面擁有者明確分享,否則「不得」允許任何 pVM 存取屬於其他實體 (例如其他 pVM 或管理程序) 的頁面。其中包括主機 VM。CPU 和 DMA 存取均適用此規定。
    • [C-3-2] 只有在 pVM 使用網頁後,再將頁面傳回給主機之前,請抹除該頁面。例如,pVM 遭到刪除。
    • [C-3-3SR-1] 強烈建議 務必在 pVM 中的任何程式碼之前,先載入並執行 pVM 韌體。
    • [C-3-4] 必須確保每個 VM 衍生了個別 VM 密鑰,{將 {Boot Certificate Chain (BCC)) 和複合裝置識別碼 (CDI) 提供給 pVM 執行個體,都只能透過該 VM 執行個體衍生,且在恢復原廠設定和 OTA 時變更

    如果裝置實作 Android 虛擬化架構 API 的支援功能,則請針對所有區域:

    • [C-4-1] 不得向允許略過 Android 安全性模型的 pVM 提供功能。

    如果裝置實作 Android 虛擬化架構 API 的支援功能,則:

    • [C-5-1] 必須支援隔離編譯功能 ,但可在 ART 執行階段更新的裝置出貨上停用隔離編譯功能。

    如果裝置實作 Android Virtualization Framework API 的支援功能,則針對金鑰管理機制:

    • [C-6-1] 根 DICE 鏈結必須在使用者無法修改的地方 (即使是在解鎖的裝置中亦然)。(這是為了確保不被假冒)。

    • [C-SR-26-2] 強烈建議將 DICE 做為個別 VM 的密鑰衍生機制。 請務必正確執行各種操作,亦即提供正確的值。

返回頁首