DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Mobile magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Artigo da WebMobile 10 - Multimídia em J2ME

Artigo Originalmente publicado na WebMobile 10.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

capa10.JPG

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.

 

image002.gif

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;

·         Captura de fotos.

 

Todas essas funcionalidades serão abordadas no artigo com exemplos práticos.

Geração de tons

A funcionalidade mais básica da MMAPI é a geração de tons. Esse tom não é o toque do celular, mas  consiste em reproduzir um harmônico puro nas caixas de som do aparelho. O som produzido é semelhante ao som que se escuta quando se retira um telefone fixo do gancho (nesse caso, a freqüência é de 440 Hz, correspondendo à nota musical Lá). Por conveniência, este método se encontra na classe Manager e não é necessário criar um DataSource ou um Player para executá-lo (o motivo para isso ficará mais claro adiante). "

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Mobile magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Carlos Eduardo Lima Borges
Faz parte do grupo Inova Mobile e é Sun Certified Programmer. Especializou-se em integrar aplicações MIDP com JSP e Servlets.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03