Android 16 推出 Android TV 專用的媒體品質架構,目的是為影像品質 (PQ) 和音訊品質 (AQ) 調整作業建立標準化 API。主要目標是為不同 Android TV 裝置的調整作業提供統一方法。這個標準化架構提供一致的 Android API 集,可簡化應用程式開發人員、原始設備製造商 (OEM) 和單晶片系統 (SoC) 供應商的開發作業。對 SoC 供應商而言,這項功能可讓 Android 架構處理 PQ 和 AQ 設定,減少與不同應用程式開發人員合作的負擔。
最終,這項功能有助於減少 Google 和 Android 平台的分散情形、提升品質和擴充性、提供新功能,並為統一的 AQ/PQ UI 和更優質的使用者體驗奠定基礎。
媒體品質架構支援各種用途,可提升電視觀看體驗。請注意,設定檔和設定可依套件名稱 (應用程式) 和輸入 ID 管理。此外,系統應用程式或許可清單中的其他應用程式也能建立設定檔。只有商家檔案擁有者可以更新或移除商家檔案。具體來說,這個架構會管理圖片和聲音設定檔。圖片參數的例子包括亮度、對比度、銳利度。音訊參數的例子包括低音和高音。這些設定檔可套用至各種情境,包括設定全域預設設定檔、透過 MediaCodec 串流設定檔、為特定媒體應用程式設定應用程式預設設定檔,以及為特定輸入端 (例如 HDMI) 設定電視輸入圖片設定檔。架構也支援狀態變更,可為 HDR 等狀態提供不同的參數集、管理持續處理的有效圖片設定檔,以及處理環境背光功能。
Android 團隊正與生態系統合作夥伴攜手,支援媒體品質架構。
元件
媒體品質架構由多個重要元件組成,這些元件會在應用程式、架構和硬體層級相互搭配運作。

圖 1. 媒體品質架構元件之間的互動
- 媒體品質管理工具 (SDK API):面向應用程式的 SDK API,可供應用程式管理圖片和音訊設定檔。
- 媒體品質服務:包含核心商業邏輯的系統服務,可管理設定檔、權限,以及與 HAL 的通訊。
- 媒體品質資料庫:儲存所有圖片和音效設定檔的 SQLite 資料庫。
- 媒體品質合約:定義應用程式與架構之間通訊所用的標準化參數和資料結構。
- 媒體品質 HAL:SoC 供應商實作的硬體抽象層,可將圖片和聲音設定檔變更傳達至基礎硬體。
功能
媒體品質架構支援多項功能,可提供彈性且強大的系統,方便您管理媒體品質。
商家檔案管理
- 應用程式管理的設定檔:應用程式可以建立、更新及刪除自己的設定檔,提供個人化體驗。
- 預設設定檔:系統應用程式可以為特定應用程式或電視輸入設定預設設定檔 (例如 HDMI 1)。
- 全域預設設定檔:當未設定特定設定檔時,系統會套用這個全域備用設定檔。
整體工作流程
下圖說明常見媒體品質作業的呼叫順序。
建立及套用圖片設定檔

圖 2. 建立圖片設定檔的序列圖
- 系統應用程式會呼叫
setPictureProfileAllowList(),授予媒體應用程式建立設定檔的權限。 - 媒體應用程式會註冊
PictureProfileCallback,接收有關設定檔變更的通知。 - 媒體應用程式會使用
PictureProfile物件呼叫createPictureProfile()。 MediaQualityService會處理要求、將設定檔儲存至資料庫,並透過已註冊的回呼 (onPictureProfileAdded()或onError()) 通知應用程式作業成功或失敗。
設定每個串流的圖片設定檔
這個工作流程示範應用程式如何在播放期間,將特定設定檔套用至影片內容。

圖 3. 設定每個串流的圖片設定檔的序列圖
- 媒體應用程式會查詢
MediaQualityManager,取得可用的圖片設定檔清單。 - 接著,應用程式會使用
MediaCodec.setParameters選取並設定串流的所需設定檔。 - 架構會將這項選擇傳達給媒體品質 (MQ) HAL,並傳遞設定檔 ID 和其參數。
- 最後,MQ HAL 會將這些參數傳送至 Composer HAL,後者會使用指定的圖片設定檔算繪影片串流。
設定全域預設設定檔
只有系統應用程式可以設定全域預設設定檔,做為未指派特定設定檔的任何內容的備用設定檔。
- 系統應用程式會從架構擷取可用的圖片設定檔清單。
- 接著,應用程式會呼叫
setDefaultPictureProfile(id),從這些設定檔中選取一個做為新的全域預設設定檔。 - 架構會將該設定檔的參數傳送至 Media Quality HAL,然後套用變更。
Media Quality SDK API
應用程式可透過 Media Quality SDK API 與架構互動,主要進入點是 android.media.quality 套件。
android.media.quality
這個套件包含管理媒體品質的主要類別。
| 類別 | 說明 |
|---|---|
MediaQualityManager |
與 MQF 互動的中央類別。 |
PictureProfile |
資料類別,代表特定模式的完整圖片參數集。 |
SoundProfile |
音效參數的資料類別。 |
MediaQualityContract |
這個類別包含所有預先定義參數鍵的常數。 |
MediaQualityManager
主要方法包括:
| 方法 | 說明 |
|---|---|
createPictureProfile(PictureProfile profile) |
建立新的圖片設定檔。需要特殊權限或將應用程式加入許可清單。 |
updatePictureProfile(PictureProfile profile) |
更新現有的圖片設定檔。只能由設定檔建立者呼叫。 |
removePictureProfile(String profileId) |
刪除設定檔。只能由設定檔建立者呼叫。 |
getAvailablePictureProfiles() |
傳回所有可用的圖片設定檔清單。 |
setDefaultPictureProfile(String profileId) |
設定全域預設圖片設定檔。需要 MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE 權限。 |
registerPictureProfileCallback(PictureProfileCallback cb) |
註冊回呼,監聽商家檔案變更。 |
PictureProfile 物件
PictureProfile 物件會封裝特定圖片模式的所有資訊。
public final class PictureProfile {
private String id;
private int type; // System or Application
private String name; // e.g., "Movie", "Game"
private String inputId; // e.g., "HDMI1"
private String packageName; // e.g., "com.google.android.youtube"
private PersistableBundle parameters; // Bundle containing all PQ parameters
}
媒體品質 HAL
媒體品質 HAL 是 AIDL 型介面,定義於 hardware/interfaces/tv/mediaquality/aidl/。SoC 供應商必須實作這個介面,才能在裝置上啟用媒體品質架構。HAL 是 Android 架構中 MediaQualityService 與基礎硬體之間的通訊橋樑,負責套用圖片和聲音調整設定。
HAL 會使用 AIDL 可封送物件管理圖片和聲音設定檔。這包括從架構接收設定檔變更,以及通知架構硬體層級所做的任何調整。
模組
HAL 介面由幾個重要的 AIDL 檔案組成:
| HAL 檔案 | 說明 |
|---|---|
IMediaQuality.aidl |
媒體品質服務的主要介面,用於設定監聽器及探索硬體功能。 |
IPictureProfileChangedListener.aidl |
架構用來通知 HAL (具體來說,是合成器 HAL 等元件) 圖片設定檔變更的接聽器介面。 |
IPictureProfileAdjustmentListener.aidl |
HAL 用來通知架構硬體層級調整的監聽器介面,例如使用者直接透過硬體遙控器變更設定時。 |
PictureParameter.aidl |
AIDL 聯集,定義所有可調整的標準圖片參數,例如對比度和銳利度。 |
PictureProfile.aidl |
AIDL 可封送物件,代表 HAL 層的 PictureProfile 物件,內含設定檔 ID 和相關聯的參數。 |
ISoundProfileChangedListener.aidl |
框架用來通知 HAL 音效設定檔變更的接聽介面。 |
ISoundProfileAdjustmentListener.aidl |
HAL 用於通知架構硬體層級音效調整的監聽器介面。 |