Das Media Quality-Framework wird in Android 16 für Android TV eingeführt, um eine standardisierte API für Anpassungen der Bildqualität (Picture Quality, PQ) und Audioqualität (Audio Quality, AQ) zu schaffen. Das primäre Ziel ist es, einen einheitlichen Ansatz für diese Anpassungen auf verschiedenen Android TV-Geräten zu bieten. Dieses standardisierte Framework soll die Entwicklung für App-Entwickler, Erstausrüster (Original Equipment Manufacturers, OEMs) und System-on-Chip-Anbieter (SoC) vereinfachen, indem es einen einheitlichen Satz von Android-APIs bietet. Für SoC-Anbieter ermöglicht es dem Android-Framework, die PQ- und AQ-Konfiguration zu verarbeiten, wodurch der Aufwand für die Zusammenarbeit mit verschiedenen Anwendungsentwicklern reduziert wird.
Letztendlich trägt es für Google und die Android-Plattform dazu bei, die Fragmentierung zu verringern, die Qualität und Skalierbarkeit zu verbessern, neue Funktionen bereitzustellen und die Grundlage für eine einheitliche Benutzeroberfläche für AQ/PQ und eine verbesserte Nutzerfreundlichkeit zu schaffen.
Das Media Quality-Framework unterstützt verschiedene Anwendungsfälle, um das Fernseherlebnis zu verbessern. Profile und Einstellungen können pro Paketname (App) und pro Eingabe-ID verwaltet werden. Außerdem können Profile von System-Apps oder von anderen Apps erstellt werden, die auf der Zulassungsliste stehen. Profile können nur vom Inhaber des Profils aktualisiert oder entfernt werden. Das Framework verwaltet insbesondere Bild- und Tonprofile. Beispiele für Bildparameter sind Helligkeit, Kontrast und Schärfe. Beispiele für Klangparameter sind Bass und Höhen. Diese Profile können in verschiedenen Kontexten angewendet werden, z. B. zum Festlegen globaler Standardprofile, zum Streamen von Profilen über MediaCodec, zum Festlegen von App-Standardprofilen für bestimmte Media-Apps und zum Festlegen von TV-Eingangsbildprofilen für bestimmte Eingänge wie HDMI. Das Framework unterstützt auch Statusänderungen, sodass verschiedene Parametersätze für Status wie HDR, die Verwaltung aktiver Bildprofile für die laufende Verarbeitung und die Verarbeitung von Funktionen für die Umgebungsbeleuchtung möglich sind.
Das Android-Team arbeitet mit unseren Ökosystempartnern zusammen, um das Media Quality-Framework zu unterstützen.
Komponenten
Das Media Quality Framework besteht aus mehreren Schlüsselkomponenten, die auf den Anwendungs-, Framework- und Hardwareebenen zusammenarbeiten.

Abbildung 1: Interaktionen zwischen Komponenten des Media Quality Framework
- Media Quality Manager (SDK API): Die anwendungsbezogene SDK API, mit der Apps Bild- und Tonprofile verwalten können.
- Media Quality Service: Ein Systemdienst, der die zentrale Geschäftslogik enthält und Profile, Berechtigungen und die Kommunikation mit dem HAL verwaltet.
- Media Quality Database (Media Quality-Datenbank): Eine SQLite-Datenbank, in der alle Bild- und Tonprofile gespeichert sind.
- Media Quality Contract: Definiert die standardisierten Parameter und Datenstrukturen, die für die Kommunikation zwischen Apps und dem Framework verwendet werden.
- Media Quality HAL: Die Hardware-Abstraktionsschicht, die SoC-Anbieter implementieren, um Änderungen am Bild- und Tonprofil an die zugrunde liegende Hardware zu kommunizieren.
Funktionen
Das Media Quality Framework unterstützt eine Vielzahl von Funktionen und bietet so ein flexibles und leistungsstarkes System zur Verwaltung der Media-Qualität.
Profilverwaltung
- Von Apps verwaltete Profile: Apps können eigene Profile erstellen, aktualisieren und löschen, um eine benutzerdefinierte Nutzung zu ermöglichen.
- Standardprofile: System-Apps können Standardprofile für bestimmte Apps oder TV-Eingänge festlegen, z.B. HDMI 1).
- Globales Standardprofil: Ein systemweites Fallback-Profil, das angewendet wird, wenn kein bestimmtes Profil festgelegt ist.
Gesamter Workflow
Die folgenden Diagramme veranschaulichen die Aufrufsequenzen für häufige Vorgänge zur Medienqualität.
Bildprofil erstellen und anwenden

Abbildung 2: Sequenzdiagramm zum Erstellen eines Bildprofils
- Eine System-App ruft
setPictureProfileAllowList()auf, um einer Media-App die Berechtigung zum Erstellen von Profilen zu erteilen. - Die Media-App registriert einen
PictureProfileCallback, um Benachrichtigungen über Profiländerungen zu erhalten. - Die Media-App ruft
createPictureProfile()mit einemPictureProfile-Objekt auf. - Der
MediaQualityServiceverarbeitet die Anfrage, speichert das Profil in der Datenbank und benachrichtigt die App über den registrierten Callback (onPictureProfileAdded()oderonError()) über den Erfolg oder Misserfolg.
Bildprofil für einen Stream festlegen
In diesem Workflow wird gezeigt, wie eine Anwendung während der Wiedergabe ein bestimmtes Profil auf ihre Videoinhalte anwenden kann.

Abbildung 3: Sequenzdiagramm zum Festlegen eines Bildprofils pro Stream
- Die Media-App fragt
MediaQualityManagerab, um eine Liste der verfügbaren Bildprofile zu erhalten. - Die App verwendet dann
MediaCodec.setParameters, um das gewünschte Profil für den Stream auszuwählen und festzulegen. - Das Framework teilt diese Auswahl dem Media Quality (MQ) HAL mit und übergibt die Profil-ID und die zugehörigen Parameter.
- Schließlich sendet der MQ-HAL diese Parameter an den Composer-HAL, der den Videostream mit dem angegebenen Bildprofil rendert.
Globales Standardprofil festlegen
Nur System-Apps können das globale Standardprofil festlegen, das als Fallback für alle Inhalte dient, denen kein bestimmtes Profil zugewiesen ist.
- Die System-App ruft eine Liste der verfügbaren Bildprofile aus dem Framework ab.
- Die App wählt dann eines dieser Profile als neues globales Standardprofil aus, indem sie
setDefaultPictureProfile(id)aufruft. - Das Framework sendet die Parameter des Profils an das Media Quality HAL, das die Änderungen dann anwendet.
Media Quality SDK API
Die Media Quality SDK API bietet die erforderlichen Tools für die Interaktion von Apps mit dem Framework. Der Haupteinstiegspunkt ist das Paket android.media.quality.
android.media.quality
Dieses Paket enthält die primären Klassen zum Verwalten der Media-Qualität.
| Klasse | Beschreibung |
|---|---|
MediaQualityManager |
Die zentrale Klasse für die Interaktion mit dem MQF. |
PictureProfile |
Eine Datenklasse, die einen vollständigen Satz von Bildparametern für einen bestimmten Modus darstellt. |
SoundProfile |
Eine Datenklasse für Soundparameter. |
MediaQualityContract |
Eine Klasse, die Konstanten für alle vordefinierten Parameterschlüssel enthält. |
MediaQualityManager
Zu den wichtigsten Methoden gehören:
| Methode | Beschreibung |
|---|---|
createPictureProfile(PictureProfile profile) |
Erstellt ein neues Bildprofil. Erfordert besondere Berechtigungen oder dass die App auf der Zulassungsliste steht. |
updatePictureProfile(PictureProfile profile) |
Aktualisiert ein vorhandenes Bildprofil. Kann nur vom Ersteller des Profils aufgerufen werden. |
removePictureProfile(String profileId) |
Löscht ein Profil. Kann nur vom Ersteller des Profils aufgerufen werden. |
getAvailablePictureProfiles() |
Gibt eine Liste aller verfügbaren Bildprofile zurück. |
setDefaultPictureProfile(String profileId) |
Legt das globale Standardbildprofil fest. Erfordert die Berechtigung MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
Registriert einen Callback, um auf Profiländerungen zu reagieren. |
PictureProfile-Objekt
Das PictureProfile-Objekt enthält alle Informationen für einen bestimmten Bildmodus.
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
}
Media Quality HAL
Die Media Quality HAL ist eine AIDL-basierte Schnittstelle, die in hardware/interfaces/tv/mediaquality/aidl/ definiert ist. SoC-Anbieter müssen diese Schnittstelle implementieren, um das Media Quality Framework auf ihren Geräten zu aktivieren. Das HAL dient als Kommunikationsbrücke zwischen dem MediaQualityService im Android-Framework und der zugrunde liegenden Hardware, die für die Anwendung von Bild- und Toneinstellungen verantwortlich ist.
Das HAL verwaltet Bild- und Tonprofile mithilfe von AIDL-Parcelables. Dazu gehört, Profiländerungen vom Framework zu empfangen und das Framework über alle Anpassungen auf Hardwareebene zu informieren.
Module
Die HAL-Schnittstelle besteht aus mehreren wichtigen AIDL-Dateien:
| HAL-Datei | Beschreibung |
|---|---|
IMediaQuality.aidl |
Die Hauptschnittstelle für den Media Quality-Dienst, die zum Festlegen von Listenern und zum Ermitteln von Hardwarefunktionen verwendet wird. |
IPictureProfileChangedListener.aidl |
Eine Listener-Schnittstelle, die das Framework verwendet, um die HAL (insbesondere eine Komponente wie die Composer-HAL) über Änderungen an einem Bildprofil zu informieren. |
IPictureProfileAdjustmentListener.aidl |
Eine Listener-Schnittstelle, über die das HAL das Framework über Anpassungen auf Hardwareebene benachrichtigt, z. B. wenn ein Nutzer eine Einstellung direkt über eine Hardware-Fernbedienung ändert. |
PictureParameter.aidl |
Eine AIDL-Union, die alle Standardbildparameter wie Kontrast und Schärfe definiert, die angepasst werden können. |
PictureProfile.aidl |
Das AIDL-Parcelable, das ein PictureProfile-Objekt auf der HAL-Ebene darstellt und eine Profil-ID und die zugehörigen Parameter enthält. |
ISoundProfileChangedListener.aidl |
Eine Listener-Schnittstelle, die das Framework verwendet, um die HAL über Änderungen an einem Soundprofil zu benachrichtigen. |
ISoundProfileAdjustmentListener.aidl |
Eine Listener-Schnittstelle, die das HAL verwendet, um das Framework über Anpassungen des Sounds auf Hardwareebene zu informieren. |