Artigo da WebMobile 10 - Multimídia em J2ME

Artigo Originalmente publicado na WebMobile 10.

Clique aqui para ler este artigo em pdf

Clique aqui para ler todos os artigos desta edição

Multimídia em J2ME

Dominando a Mobile Media API

O uso de recursos multimídia em dispositivos móveis ganha cada vez mais força. Conforme os aparelhos aumentam sua capacidade de armazenamento e processamento, os aplicativos ficam mais carregados de imagens, vídeos e sons. As operadoras aumentam cada vez mais a gama de serviços multimídia, tais como toques com qualidade variável de acordo com o aparelho, papéis de parede, vídeos e até mesmo TV no celular. Além disso, o próprio usuário pode carregar vídeos, músicas, imagens e quaisquer outros recursos multimídia que seu aparelho permitir.

Este artigo explora a interface de programação multimídia mais comum nos dispositivos com Java embutido, ou seja, a Mobile Media API (MMAPI), permitindo ao leitor criar suas próprias aplicações, com as mais variadas finalidades. Essa API permite que o desenvolvedor manipule as funcionalidades multimídia dos dispositivos, tais como a execução de vídeo e de áudio, podendo ainda modificar o conteúdo original com filtros pré-definidos. Além disso, provê a utilização da câmera fotográfica, caso o aparelho disponha desse recurso.

Visão geral da Mobile Media API – MMAPI

O entendimento da Mobile Media API – MMAPI – é um pouco complicado. Por se tratar de uma API que envolve o controle direto de hardwares específicos (o sintetizador de áudio ou o chip decodificador de vídeo do aparelho, por exemplo), uma série de abstrações foi feita no projeto da API. Esta seção desenvolve o conceito geral da API, de uma forma mais teórica, enquanto as outras seções desenvolvem exemplos práticos do uso da API para reproduzir sons e vídeos. Uma série de exemplos em seqüência gradativa de complexidade foi elaborada para melhor ilustrar o uso da MMAPI.

A MMAPI funciona de forma similar ao Java Media Framework – JMF (ver Nota 1). Assim como a JMF, a idéia da MMAPI é fornecer funcionalidades de reprodução e gravação de conteúdo multimídia sem especificar o protocolo de transmissão ou o formato do arquivo a priori. Esses parâmetros, como o formato do arquivo,  são definidos em tempo de execução, de acordo com a mídia que se deseja executar. O conceito de encapsulamento é bastante empregado nessa API, como será visto a seguir.

 

Nota 1. Java Media Framework

O Java Media Framework é uma API que permite a incorporação de vídeo e áudio em aplicações e applets Java. É utilizada também no JavaTV, API direcionada à rodar em set-top boxes de TV digital. A MMAPI é similar ao JMF na estrutura do Manager e players, que estão presentes em ambas as APIs e apresentam papéis semelhantes.

 

A Figura 1 ilustra o funcionamento da MMAPI.

 

Figura 1. Integração dos conceitos fundamentais da MMAPI.

 

Olhando a Figura 1, o conteúdo é a informação que se deseja reproduzir. Esse conteúdo pode ser um arquivo dentro do arquivo Jar que contém o aplicativo, um streaming vindo de uma conexão http, um array de bits armazenado no RMS, ou qualquer outro mecanismo de entrega de conteúdo. O importante é que esse conteúdo seja um array de bits conciso, de acordo com a especificação do formato (ou seja, os cabeçalhos estejam sinalizando corretamente os bits de informação, o nível de compressão, etc..). Esse conteúdo é externo à API. 

O conteúdo alimenta uma classe denominada DataSource, que irá levar os dados de sua localização original até o player. Ela encapsula a informação, de forma que fique transparente para o player a origem dos dados. A classe DataSource provê métodos para lidar com dados que venham de diversas fontes, como streaming via internet.

O player é o elemento que sabe como interpretar os dados de mídia. Um tipo de player pode ser específico para arquivos Midi, outro pode ser específico para arquivos ‘.wav’ e assim por diante. Uma vez criado, não é possível desassociar a mídia ao player e, portanto, não é possível modificar o tipo do player (isto é, se ele é específico para midis, ou se é específico para gravação de áudio).

O Manager é o responsável por integrar os outros componentes e servir como ponto de entrada para a API. A classe javax.microedition.media.Manager possui métodos estáticos para obtenção de Players e DataSources. O Manager é a classe que seleciona que instruções um determinado player saberá, de acordo com o DataSource associado.

Cada player pode ser manipulado por controles, que permitem mudanças no seu comportamento. Os controles são representados por implementações da interface javax.microedition.media.Control e podem ser obtidos de uma instância de um Player. Cada controle específico se encontra no pacote javax.microedition.media.control, como, o VolumeControl, que permite aumentar ou reduzir o volume de um áudio que estiver sendo reproduzido.

Entre as funcionalidades da MMAPI, encontram-se:

·Independência entre protocolos e formatos de áudio/vídeo;

·Geração de Tons, inclusive em múltiplos canais;

·Reprodução de áudio em diversos formatos;

·Reprodução de vídeo em diversos formatos;

·Gravação de áudio;" [...] continue lendo...

Artigos relacionados