O framework de qualidade de mídia está sendo introduzido no Android 16 para o Android TV com o objetivo de estabelecer uma API padronizada para ajustes de qualidade de imagem (PQ) e qualidade de áudio (AQ). O objetivo principal é oferecer uma abordagem unificada para esses ajustes em diferentes dispositivos Android TV. Esse framework padronizado visa simplificar o desenvolvimento para desenvolvedores de apps, fabricantes de equipamento original (OEMs) e fornecedores de system-on-chip (SoC), oferecendo um conjunto consistente de APIs Android. Para fornecedores de SoC, ele permite que o framework Android processe a configuração de PQ e AQ, reduzindo a sobrecarga de colaboração com diferentes desenvolvedores de aplicativos.
Para o Google e a plataforma Android, isso ajuda a reduzir a fragmentação, melhorar a qualidade e a escalonabilidade, oferecer novos recursos e criar a base para uma interface unificada de AQ/PQ e uma experiência do usuário aprimorada.
A estrutura de qualidade de mídia oferece suporte a vários casos de uso para melhorar a experiência de assistir TV. É importante observar que os perfis e as configurações podem ser gerenciados por nome do pacote (app) e por ID de entrada. Além disso, os perfis podem ser criados por apps do sistema ou por outros apps na lista de permissões. Os perfis só podem ser atualizados ou removidos pelo proprietário. Especificamente, o framework gerencia perfis de imagem e som. Exemplos de parâmetros de imagem incluem brilho, contraste e nitidez. Exemplos de parâmetros de som incluem graves e agudos. Esses perfis podem ser aplicados em vários contextos, incluindo a definição de perfis padrão globais, perfis de streaming via MediaCodec, perfis padrão de apps para apps de mídia específicos e perfis de imagem de entrada de TV para entradas específicas, como HDMI. O framework também oferece suporte a mudanças de status, permitindo diferentes conjuntos de parâmetros para estados como HDR, gerenciando perfis de imagem ativos para processamento contínuo e processando recursos de luz de fundo ambiente.
A equipe do Android está trabalhando com nossos parceiros do ecossistema para oferecer suporte à estrutura de qualidade de mídia.
Componentes
O framework de qualidade de mídia é composto por vários componentes principais que trabalham juntos nas camadas de aplicativo, framework e hardware.

Figura 1. Interações entre os componentes da estrutura de qualidade de mídia
- Gerenciador de qualidade de mídia (API do SDK): a API do SDK voltada para aplicativos que permite que os apps gerenciem perfis de imagem e som.
- Serviço de qualidade de mídia: um serviço do sistema que contém a lógica de negócios principal, gerenciando perfis, permissões e comunicação com a HAL.
- Banco de dados de qualidade de mídia: um banco de dados SQLite que armazena todos os perfis de imagem e som.
- Contrato de qualidade de mídia: define os parâmetros e as estruturas de dados padronizados usados para a comunicação entre apps e o framework.
- HAL de qualidade de mídia: a camada de abstração de hardware que os fornecedores de SoC implementam para comunicar mudanças no perfil de imagem e som ao hardware subjacente.
Recursos
O framework de qualidade de mídia oferece suporte a uma ampla variedade de recursos para fornecer um sistema flexível e eficiente de gerenciamento da qualidade de mídia.
Gerenciamento de perfil
- Perfis gerenciados por apps: os apps podem criar, atualizar e excluir os próprios perfis para uma experiência personalizada.
- Perfis padrão: os apps do sistema podem definir perfis padrão para apps ou entradas de TV específicos (por exemplo, HDMI 1.
- Perfil padrão global: um perfil de substituição em todo o sistema que é aplicado quando nenhum perfil específico é definido.
Fluxo de trabalho geral
Os diagramas a seguir ilustram as sequências de chamadas para operações comuns de qualidade de mídia.
Criar e aplicar um perfil de imagem

Figura 2. Diagrama de sequência para criar um perfil de imagem
- Um app do sistema chama
setPictureProfileAllowList()para conceder a um app de mídia permissão para criar perfis. - O app de mídia registra um
PictureProfileCallbackpara receber notificações sobre mudanças no perfil. - O app de mídia chama
createPictureProfile()com um objetoPictureProfile. - O
MediaQualityServiceprocessa a solicitação, salva o perfil no banco de dados e notifica o app sobre o sucesso ou a falha usando o callback registrado (onPictureProfileAdded()ouonError()).
Definir um perfil de imagem por stream
Este fluxo de trabalho demonstra como um aplicativo pode aplicar um perfil específico ao conteúdo de vídeo durante a reprodução.

Figura 3. Diagrama de sequência para definir um perfil de imagem por stream
- O app de mídia consulta o
MediaQualityManagerpara receber uma lista de perfis de imagem disponíveis. - Em seguida, o app usa
MediaCodec.setParameterspara selecionar e definir o perfil desejado para o stream. - O framework comunica essa escolha à HAL de qualidade de mídia (MQ), transmitindo o ID do perfil e os parâmetros dele.
- Por fim, a HAL do MQ envia esses parâmetros para a HAL do Composer, que renderiza o fluxo de vídeo com o perfil de imagem especificado.
Definir um perfil padrão global
Somente apps do sistema podem definir o perfil global padrão, que serve como substituto para qualquer conteúdo que não tenha um perfil específico atribuído.
- O app do sistema recupera uma lista de perfis de imagem disponíveis do framework.
- Em seguida, o app seleciona um desses perfis para ser o novo padrão global chamando
setDefaultPictureProfile(id). - O framework envia os parâmetros desse perfil para a HAL de qualidade de mídia, que aplica as mudanças.
API do SDK Media Quality
A API do SDK Media Quality fornece as ferramentas necessárias para que os apps interajam com o framework. O ponto de entrada principal é o pacote android.media.quality.
android.media.quality
Esse pacote contém as classes principais para gerenciar a qualidade da mídia.
| Classe | Descrição |
|---|---|
MediaQualityManager |
A classe central para interagir com o MQF. |
PictureProfile |
Uma classe de dados que representa um conjunto completo de parâmetros de imagem para um modo específico. |
SoundProfile |
Uma classe de dados para parâmetros de som. |
MediaQualityContract |
Uma classe que contém constantes para todas as chaves de parâmetro predefinidas. |
MediaQualityManager
Os principais métodos incluem:
| Método | Descrição |
|---|---|
createPictureProfile(PictureProfile profile) |
Cria um novo perfil de imagem. Requer permissões especiais ou que o app esteja na lista de permissões. |
updatePictureProfile(PictureProfile profile) |
Atualiza um perfil de imagem existente. Só pode ser chamado pelo criador do perfil. |
removePictureProfile(String profileId) |
Exclui um perfil. Só pode ser chamado pelo criador do perfil. |
getAvailablePictureProfiles() |
Retorna uma lista de todos os perfis de imagem disponíveis. |
setDefaultPictureProfile(String profileId) |
Define o perfil de imagem padrão global. Requer a permissão MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
Registra um callback para detectar mudanças no perfil. |
Objeto PictureProfile
O objeto PictureProfile encapsula todas as informações de um determinado modo de imagem.
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 de qualidade de mídia
A HAL de qualidade de mídia é uma interface baseada em AIDL definida em hardware/interfaces/tv/mediaquality/aidl/. Os fornecedores de SoC precisam implementar essa interface para ativar o framework de qualidade de mídia nos dispositivos. A HAL serve como ponte de comunicação entre o MediaQualityService no framework do Android e o hardware subjacente, responsável por aplicar ajustes de imagem e som.
A HAL gerencia perfis de imagem e som usando parcelables da AIDL. Isso envolve receber mudanças de perfil da estrutura e notificar a estrutura sobre ajustes feitos no nível do hardware.
Módulos
A interface HAL é composta por vários arquivos AIDL importantes:
| Arquivo HAL | Descrição |
|---|---|
IMediaQuality.aidl |
A interface principal do serviço Media Quality, usada para definir listeners e descobrir recursos de hardware. |
IPictureProfileChangedListener.aidl |
Uma interface de listener que o framework usa para notificar o HAL (especificamente, um componente como o HAL do compositor) sobre mudanças em um perfil de imagem. |
IPictureProfileAdjustmentListener.aidl |
Uma interface de listener que o HAL usa para notificar o framework sobre ajustes feitos no nível do hardware, por exemplo, quando um usuário muda uma configuração diretamente por um controle remoto de hardware. |
PictureParameter.aidl |
Uma união AIDL que define todos os parâmetros de imagem padrão, como contraste e nitidez, que podem ser ajustados. |
PictureProfile.aidl |
O AIDL parcelable que representa um objeto PictureProfile na camada HAL, contendo um ID de perfil e os parâmetros associados. |
ISoundProfileChangedListener.aidl |
Uma interface de listener que o framework usa para notificar a HAL sobre mudanças em um perfil de som. |
ISoundProfileAdjustmentListener.aidl |
Uma interface de listener que a HAL usa para notificar o framework sobre ajustes de som feitos no nível do hardware. |