- 18 de January de 2012

API de Sons, músicas e vídeos em Java ME.

A Mobile Media API é uma API poderosa, que faz reprodução e captura de aúdio e vídeo. Permite acesso a serviços multimídia nativos em alguns aparelhos, permitindo reprodução de vídeo, áudio, captura de som e imagens.

A MMAPI depende da implementação da máquina virtual, logo depende do fabricante do celular ter habilitado o Java a executar determinado tipo de mídia. Alguns dos tipos mais usados são arquivos wav, mid e mpg.

Conceitos fundamentais da API:
– Player: controla arquivos de um determinado tipo de mídia.
– Control: muda o comportamento do player, como mudar o volume.
– DataSource: fonte da mídia – JAR, RMS, sistema de arquivos do celular.
– Manager: acessa recursos do sistemas e ponte entre interfaces citadas.

O relacionamento destas classes é ilustrado na figura abaixo:

Estes conceitos são necessários tanto para capturar fotos, como gravar vídeos e tocar músicas.

Manager.playTone(int note, int duration, int volume)

Nota Frequência Hz MIDI Tom
A4 440.00 69
A# 466.16 70
B 493.88 71
C 523.25 72
C# 554.36 73
D 587.33 74
D# 622.25 75
E 659.25 76
F 698.45 77
F# 739.98 78
G 783.99 79
G# 830.60 80

MIDlet para tocar arquivo multimídia

import javax.microedition.media.Manager;
import javax.microedition.media.Player;
public class SimplePlayer extends MIDlet {
  public void startApp() {
    try {
      Player tocador = Manager.createPlayer(
        getClass().getResourceAsStream("/audio/tiro.wav"),"audio/x-wav");
      tocador.start();
    } catch(Exception e) {}
  }
  public void pauseApp() {}
  public void destroyApp(boolean unconditional) {}
}

criando um InputStream de um arquivo .wav, incluido no JAR do MIDlet. O arquivo esta na pasta audio/ e chama tiro.wav

Você pode substituir o arquivo .wav por midi, tom, e qualquer outro formato de audio inclusive alguns de vídeo, dependente do celular. Para qualquer um, basta criar o Player através da classe Manager e chamar o método start().

Leave a Reply

Your email address will not be published. Required fields are marked *