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
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo