Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
CLDC/MIDP com Java ME: Trabalhando com dados multimídia em aplicações - Revista Mobile Magazine 39
Este artigo apresenta a utilização de dados multimídia em aplicações Java ME. Para exemplificar estes recursos, são utilizados imagens simples e dinâmicas, execução de sons nativos do aparelho celular e sons de arquivos, e por fim, reprodução de
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Mobile magazine 39
Multimídia
é um termo que se refere à tecnologia digital utilizadas para criar, manipular,
armazenar e pesquisar conteúdos que foge do tradicional conteúdo texto. No
início, esse recurso era quase que exclusivo dos programas Desktop, já que a
Internet na época era muito limitada, sendo que a maioria das pessoas acessavam
a rede utilizando modem que chegavam no máximo a 56 Kpbs, inviabilizando com
isso a transmissão de vídeos, sons e muitas vezes até imagens maiores.
Porém,
a informática evoluiu muito daquela época para os dias de hoje, assim como as
redes de comunicação. Hoje é possível assistir vídeos online em sites de compartilhamento
de conteúdo, ouvir rádios de todas as partes do mundo através da Internet, e até
mesmo assistir algumas emissoras de TV, isso graças à evolução da rede de
comunicação, aos softwares de compactação de vídeo, som e imagem, e
principalmente aos computadores, que deixaram de ser dispositivos limitados e
passaram a ser fonte de entretenimento.
Da
mesma forma, a telefonia celular evoluiu muito, e contamos hoje com aparelhos
que são verdadeiros computadores, com alta velocidade de processamento, grande
capacidade de armazenamento, telas grandes e de alta resolução para
visualização de conteúdo, alto falantes polifônicos para reprodução de sons
ainda mais sofisticados, inclusive sons estéreos e com efeitos 3D, sem contar
com o acesso a uma rede cada vez mais rápido, onde não é necessário conexão via
cabo ou wi-fi, dessa forma, podemos ter acesso a rede de dados da operadora com
custo cada vez menor.
Na
Figura 1 são apresentados alguns
exemplos de telas de jogos com recursos multimídia disponíveis para aparelhos
celulares hoje.
E
na grande revolução que estamos vivendo na telefonia móvel, uma linguagem
tradicional ainda recebe destaque: a linguagem Java ME, esta madura, estando no
mercado a mais de 10 anos.
Com
Java ME é possível desenvolver aplicativos para vários tipos de dispositivos,
incluindo aparelhos celulares (dos antigos celulares que ainda não contavam com
câmera digital, bluetooth ou recursos multimídia) até os mais modernos
smartphones, que dispõem de inúmeros sensores, receptores GPS, conectividade
via bluetooth, wi-fi, GPRS, infravermelho, cabo, cartão de memória, etc, etc e
etc.
Além
disso, esta tecnologia permite o desenvolvimento de aplicações para uma grande
quantidade de outros dispositivos limitados, porém, nem sempre pequenos, como a
TV Digital, os Smart Cards, a utilização em circuitos digitais com tecnologias
como TINI, até sua utilização em brinquedos, como Lego Mindstorm (http://mindstorms.lego.com/),
este apresentado na Figura 2.
Assim, este artigo apresenta a utilização de dados multimídia em aplicações para celular utilizando a tecnologia Java ME, apresentando como se pode tirar proveito de recursos como imagens, vídeos e sons em aplicativos móveis.
Dados multimídia em aplicações para
dispositivos móveis
Dentre
os dados multimídias existentes, com certeza a mais antiga e mais fácil de
utilizar são as imagens. Hoje, existe uma grande quantidade de tipos de
arquivos de imagens, destacando-se os formatos JPEG, BMP, GIF e PNG. Porém, o
formato aconselhável para aplicações mobile é o PNG, por se tratar de um
formato de imagem multiplataforma, compatível com a grande maioria dos
aparelhos celulares, inclusive os mais antigos, por possuir um algoritmo de
compressão de imagem muito avançado, lembrando que, principalmente os aparelhos
mais antigos, possuem limitação no poder de processamento, e mesmos os
aparelhos mais modernos, ao trafegar dados na rede, costumam ser tarifados pela
quantidade de bytes trafegados, assim, quanto menor os arquivos de imagem,
barato e rápido será o aplicativo móvel.
Para
apresentar um arquivo de imagem, por exemplo, com a extensão PNG, pode ser utilizada
a classe Image, que se encontra dentro do pacote java.io presente no Java
MicroEdition. A partir da instância desta classe, é possível passar esse objeto
por parâmetro aos componentes visuais que esperam imagens, como por exemplo, os
componentes tradicionais do pacote de componentes visuais
javax.microedition.lcdui, destacando-se o componente ImageItem, List e
ChoiceGroup (que são componentes de lista, os quais possuem a opção de mostrar
imagem representando cada um dos elementos da lista), além de poder apresentar
esta imagem diretamente em um componente Form ou Alert.
Outra
forma de utilizar imagens em Java ME é a partir do Canvas, sendo este uma biblioteca
para desenho de baixo nível (pixel a pixel) na tela do celular. Com esta
biblioteca, que tem um funcionamento muito semelhante ao Canvas de outras
linguagens de programação, é possível desenhar uma Image na tela e também
desenhar elementos como pontos, círculos, linhas, quadrados, polígonos, além de
poder pintar e colocar efeitos de preenchimento. Esta estratégia é a favorita
para os desenvolvedores de jogos.
Também
é possível com canvas alternar as imagens apresentadas na tela do aparelho
celular, fazendo com que alternem entre 10 e 15 vezes por segundo. Essa rápida
mudança de imagens pode causar o efeito de uma animação, ou vídeo, permitindo a
movimentação de elementos da tela e inclusive a interação desses elementos com
o usuário.
Basicamente,
nas primeiras versões do Java ME, os vídeos só eram possíveis em aplicações
para celular utilizando a alternância de imagens na tela, o que acarreta na
ocupação de boa parte do processamento dos limitados processadores existentes
nos aparelhos celulares daquela época.
Embora
esse recurso ainda seja usado hoje no desenvolvimento de alguns jogos
computacionais, o ideal é que se possa executar vídeos desenvolvidos a partir
de ferramentas ou software de manipulação de vídeo, ou ainda, vídeos capturados
de filmadoras ou câmeras digitais. Infelizmente, de forma nativa, o Java ME não
dispõe deste recurso (execução de vídeos como AVI ou MPEG), isso só é possível
utilizando API específicas, porém, hoje suportadas pela maioria dos celulares
que executam Java. Isso acontece para manter a compatibilidade dos aplicativos
até mesmo com os aparelhos mais antigos.
No
que diz respeito à execução de som, como os primeiros celulares possuíam um
auto-falante muito limitado (monofônico), não era possível a execução de
músicas ou sons polifônicos, sendo naquela época os sons resumidos a beeps.
Assim, de forma nativa, a única maneira de executar um som no Java ME (que na
verdade é a execução de um beep), é a partir da classe AlertType, o qual dá a
opção de executar sons de erros, informativos, atenção, entre outros.
E
assim como a execução dos vídeos, para executar um som diferente em um aparelho
celular, como uma música MP3 ou WAV, é necessário a utilização de APIs
específicas, isso para manter a compatibilidade do aplicativo com os aparelhos
mais antigos.
Resumidamente,
para trabalhar com dados multimídia em Java ME é necessário trabalhar com os
recursos nativos deste (muito limitados, porém, suportados até mesmo pelos
aparelhos antigos), ou utilizar APIs de manipulação de dados multimídia, como
por exemplo a JSR-135, popularmente conhecida como Mobile Media API.
Mobile Media API – JSR 135
A
Mobile Media API foi a primeira API a fornecer recursos multimídia para a
plataforma móvel, seu release foi entregue a comunidade em 2002 e desde então seu
número de usuários não parou de crescer. Já sua evolução, a Advanced Multimedia
Supplements, data de 2005.
Com
a Mobile Media API, também chamada de MMAPI, é possível utilizar de forma
avançada recursos como vídeo, som e imagem. O mais interessante é que além do
suporte a apresentação dessas mídias ao usuário da aplicação móvel, ela também
permite a captura delas, como a gravação de fotos e vídeos usando a câmera
digital do celular.
A
MMAPI foi projetada de tal forma que suporta um grande número de protocolos de
conteúdo de mídia, dessa forma, se compatível com o aparelho celular que será
executado, é possível executar vários formatos de sons e vídeos.
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!



