Usando a Aplicação Exemplo MediaDisplay

Publicado em: 26 de setembro de 2007

Por André Roberto Leitão

Conteúdo

Nesta página

Introdução
Como funciona o MediaDisplay
Executando o MediaDisplay
Arquivos XML de Layout do MediaDisplay
Selecionando os Layouts
Conclusão
Sobre o Autor

Objetivos: Este artigo tem o objetivo de apresentar a aplicação MediaDisplay, ferramenta disponibilizada no Windows Media Center Software Development Kit (SDK) que simula na tela do computador um FPD (Painel Mostrador Frontal). Essa ferramenta é bastante útil para testar e depurar, de forma simples, a utilização de FPDs em Media Center PCs.

Introdução

O Windows Media Center (WMC) é um recurso das versões premium do Windows Vista (Vista Home Premium e Vista Ultimate) para o mercado de Media Center PCs, computadores voltados para o entretenimento doméstico utilizados na sala de estar. Esses computadores possuem recursos específicos, como controle remoto integrado e placas de captura de vídeo, pré-instalados pelos fabricantes de hardware. Em alguns casos, também possuem um display frontal, chamado FPD (Front Panel Display, ou Painel Mostrador Frontal) que informa o status do equipamento em uso.

FPDs são largamente usados na indústria de eletrônicos, estando presente, por exemplo, na maioria dos tocadores de DVDs, microsystems e rádios automotivos. O FPD serve como um canal de comunicação auxiliar com o usuário, independente do televisor ou monitor sendo usado. Com ele, pode-se informar, por exemplo, o status (duração, tempo decorrido, etc.) da música sendo tocada ou do filme sendo visto. Um exemplo de Media Center PC com FPD é mostrado na Figura 1.

Bb189331.exemplo_media_display_fig1(pt-br,MSDN.10).jpg

Figura 1. Exemplo de Media Center PC com FPD (Painel Mostrador Frontal)

Desenvolvedores de software podem programar as informações a serem exibidas no FPD usando o objeto MediaState acessível através do Windows Media Center Software Development Kit (SDK).

Caso os desenvolvedores não disponham de um FPD para testar e depurar o uso desse objeto, pode-se utilizar a Aplicação Exemplo MediaDisplay disponibilizada no próprio Windows Media Center SDK.

Este artigo discute os seguintes tópicos:

  • Como funciona o MediaDisplay: um resumo da aplicação exemplo;

  • Executando o MediaDisplay: como executar e usar a aplicação juntamente com o Windows Media Center;

  • Arquivos XML de Layout do MediaDisplay: explica os arquivos que definem o layout;

  • Selecionando os Layouts: explica como o código utiliza os arquivos de layout.

Como funciona o MediaDisplay

A aplicação exemplo MediaDisplay é um executável que gera uma pequena janela na tela do computador simulando um FPD de um Media Center PC. Os FPDs têm como objetivo principal informar o que o equipamento está fazendo, servindo assim como uma forma adicional de comunicar o estado do Windows Media Center ao usuário.

Essa aplicação exemplo forma a base para o uso de um sistema FPD, além de ilustrar como se usa os objetos gerenciados MediaState. O MediaDisplay já vem instalado como parte do WMC SDK e se encontra no diretório [WMCSDK_InstallPath]\Samples\MSAS Sample\MediaDisplaySampleApplication.

O código-fonte também é disponibilizado. O código mostra como se usa o objeto MediaState e contém comentários explicando como a aplicação exemplo funciona.

A aplicação exemplo MediaDisplay mostra diferentes conteúdos na tela do PC simulando o FPD. Estas informações dependem do estado atual do Windows Media Center. Para tornar isso possível, a aplicação usa o conceito de layouts. Um layout indica qual informação deve ser mostrada no painel (FPD) em um determinado momento. O gerenciador de layout controla os eventos gerados pelos objetos SessionState (namespace Microsoft.MediaCenter.Samples.MediaState). Quando um evento é recebido, o gerenciador usa as propriedades da sessão para consultar o estado do Windows Media Center e determinar, assim, o layout mais apropriado.

Cada layout é formado por uma coleção de regiões, e cada região mostra uma parte única de informação. Por exemplo, se o usuário estiver ouvindo música, o gerenciador de layouts padrão (há a possibilidade de você usar seu próprio) escolherá automaticamente o layout tocador de música, como mostrado na Figura 2:

Bb189331.exemplo_media_display_fig2(pt-br,MSDN.10).jpg

Figura 2. Layout padrão para a reprodução de música

Esse layout possui regiões para:

  • Nome da Música;

  • Nome do Artista;

  • Número da Faixa;

  • Estado (play, pause, stop);

  • Indicador do Progresso.

Executando o MediaDisplay

Antes de executar a aplicação MediaDisplay em um computador, é necessário instalar o assembly MediaState. Isto envolve colocar as três DLLs que se encontram em [WMCSDK_InstallPath]\Samples\MSAS Sample\MediaState no computador a ser usado e registrar a biblioteca COM MSASState. Para isto, você pode criar um arquivo de registro (.reg) que contém a informação específica de configuração e enviar este arquivo para o Editor de Registro (regedt32.exe).

Para facilitar, você pode usar o arquivo MSASState.reg que se encontra no mesmo diretório citado e usá-lo como ponto de partida, como mostrado no exemplo a seguir:

REGEDIT4

[HKEY_CLASSES_ROOT\MSASState.MediaStatusSink]
@="MSASState.MediaStatusSink"

[HKEY_CLASSES_ROOT\MSASState.MediaStatusSink\CLSID]
@="{380AA9F1-5047-40D0-8BE9-18AB489CA469}"

[HKEY_CLASSES_ROOT\CLSID\{380AA9F1-5047-40D0-8BE9-18AB489CA469}]
@="MSASState.MediaStatusSink"

[HKEY_CLASSES_ROOT\CLSID\{380AA9F1-5047-40D0-8BE9-18AB489CA469}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="MSASState.MediaStatusSink"
"Assembly"="MSASState, Version=6.0.6000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///(Path)/MSASState.DLL"

[HKEY_CLASSES_ROOT\CLSID\{380AA9F1-5047-40D0-8BE9-18AB489CA469}\ProgId]
@="MSASState.MediaStatusSink"

[HKEY_CLASSES_ROOT\CLSID\{380AA9F1-5047-40D0-8BE9-18AB489CA469}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\CLSID\{380AA9F1-5047-40D0-8BE9-18AB489CA469}\Implemented Categories\{FCB0C2A3-9747-4c95-9d02-820AFEDEF13F}]
@="Media Status Sink"
	

É importante observar se o valor do atributo Version da propriedade Assembly deve ser o mesmo da versão da biblioteca MSASState.dll sendo usada. O valor do CodeBase deve ser o caminho do arquivo, como por exemplo:

file:///C:/Program Files/Microsoft SDKs/Windows Media Center/v5.0/Samples/MSAS Sample/MediaState/MSASState.DLL
	

Após a criação desse arquivo de registro, basta executá-lo. Por fim, é necessário reiniciar o computador para que as alterações tenham efeito. Caso se deseje utilizar a aplicação MediaDisplay no próprio computador no qual está instalado o Windows Media Center SDK, basta checar a configuração do arquivo MSASState.reg, executá-lo e reiniciar o computador.

A aplicação MediaDisplay não terá o comportamento desejado caso seja executada depois do Windows Media Center ser iniciado, portanto, para obter melhores resultados, execute a aplicação antes de iniciar o Media Center. Quando você executa o MediaDisplay, um pequeno painel simulado (como mostrado na Figura 2) é criado. Será necessário executar o Windows Media Center no modo janela (e não em tela cheia) para que a aplicação MediaDisplay fique visível. Você pode mover a janela da aplicação, utilizando o mouse, para qualquer posição de sua tela. O MediaDisplay sempre aparecerá por cima das outras janelas de seu computador.

Arquivos XML de Layout do MediaDisplay

Cada layout do MediaDisplay é representado por um arquivo XML. Todos os arquivos de layout estão localizados na pasta de recursos [WMCSDK_InstallPath]\Samples\MSAS Sample\MediaDisplaySampleApplication\bin\[ReleaseType]\Resources, no mesmo diretório do executável do MediaDisplay. Por exemplo, o layout tocador de música é representado pelo seguinte arquivo, denominado music-play.xml:

<?xml version="1.0" encoding="utf-8" ?>
<!-- audio-play.xml: for playing cd-based or disk-based audio-->
<layout background="background.png">
    <music-track x="46" y="5" width="100" height="55"/>
    <image>music-play.png</image>
    <music-song x="69" y="7" width="187" height="20"/>
    <sequence x="69" y="29" repeat="forever">
        <music-artist duration = "2000" x="69" y="29" width="187" height="20"/>
        <music-title duration = "2000" x="69" y="29" width="187" height="20"/>
    </sequence>
    <music-transport x="0" y="0" width="256" height="64"/>
    <music-elapsed x="82" y="44" width="46" height="20"/>
    <music-progress x="115" y="47" width="103" height="10"
        background="progress-background.png"
        foreground="progress-foreground.png"/>
    <music-duration x="227" y="44" width="46" height="20"/>
</layout>

	

Da mesma maneira que os demais, o layout tocador de música consiste em uma série de regiões (definidas por tags específicas), cada uma representando um retângulo (que podem se sobrepor) do painel. Este layout inicia com a região music-track (faixa de música) sobre a imagem de fundo (background.png) definida por um atributo do próprio layout. A região seguinte, que utiliza a tag <image>, mostra uma imagem bitmap (musica-play.png) no local indicado pelas posições x e y especificadas. A região denominada sequence indica que duas sub-regiões separadas devem ser alternadamente mostradas, cada uma durante 2000 milisegundos, na mesma posição.

Diferentemente das regiões genéricas image e sequence, as outras regiões usadas neste layout são utilizadas especificamente quando se toca uma música. Estas regiões consultam automaticamente os objetos de sessão para mostrar informações relevantes.

É possível customizar estes arquivos de layout para que sejam mostradas informações diferentes de acordo com uma determinada situação. Para mudar o layout basta editar o arquivo XML associado ao mesmo. Uma customização bem simples de um layout de exemplo seria modificar a imagem associada a alguma região. Pode-se também facilmente adicionar regiões genéricas de imagem (tag image) ou texto (tag text) com o objetivo de mostrar novas informações, como, por exemplo, a logomarca do fabricante.

Pode-se também mover ou modificar regiões específicas da sessão, como o music-title (título da música) mostrada anteriormente. A lista completa de todos os tipos de regiões disponíveis para inclusão se encontram nos arquivos .cs do projeto MediaDisplay (MusicRegion.cs, DVDRegion.cs, RadioRegion.cs, ImageRegion.cs, etc.). Cada arquivo está associado a um tipo de estado específico do Media Center.

Selecionando os Layouts

O arquivo fonte StdLayoutManager.cs contém uma lista de todos os layouts usados no MediaDisplay. A classe StdLayoutManager, também localizada no mesmo arquivo, contém a lógica que determina o melhor layout a ser mostrado baseado nas propriedades da sessão atual. StdLayoutManager herda da classe LayoutManager (LayoutManager.cs), que contém controladores para todos eventos da sessão principal. Você pode mudar a lógica na StdLayoutManager para modificar qual layout é escolhido dependendo das propriedades da sessão, ou pode herdar uma classe inteiramente nova de LayoutManager e instanciá-la, em vez de usar StdLayoutManager. Com isso, torna-se possível personalizar a forma com os estados do Media Center são mapeados nos layouts existentes.

Conclusão

Neste artigo, abordamos o MediaDisplay, uma aplicação exemplo que simula em um computador um FPD (Front Panel Display) de um Media Center PC. Apresentamos a execução e o funcionamento da aplicação, que utiliza o conceito de layouts divididos em regiões, mostrando um exemplo de uso para a execução de músicas. Por fim, é mostrada a possibilidade de customização de layouts através da edição do seu arquivo XML.

Sobre o Autor

André Leitão é engenheiro de software da Partec, bacharel em Ciência da Computação pela UFPE e atua na área de informática desde 2002, com experiências em desenvolvimento de jogos para celular e sistemas web corporativos. Atualmente, pesquisa e desenvolve aplicações para TV Digital e Media Center PCs, em áreas que variam desde serviços bancários a entretenimento digital.