Mobile Media Application Programming Interface (MMAPI) J2ME : Audio Midlet dengan pause Command, stop Command, dan looping player

28 11 2010

Pernah dengar MMAPI??
Itu lho, API yang memfasilitasi pembuatan nada, memainkan serta merekam audio dan video pada device yang cocok.

Memainkan atau merekam sebuah media ditangani oleh dua object : DataSource dan Player.

DataSource menangani detail cara mendapatkan data dari source yang tersedia. Source dapat berasal dari file JAR atau jaringan (melalui protokol HTTP), record dari RMS, streaming connection dari sebuah server atau sumber properietary lain. Player tidak perlu terlalu mempermasalahkan darimana data berasal atau bagaimana cara mendapatkannya. Player hanya perlu membaca data yang berasal dari DataSource, memproses, menampilkan dan memainkan playback media pada output device. Pihak ketiga dalam skenario ini adalah Manager. Manager membuat Player dari DataSource. Manager memiliki method untuk membuat Player dari lokasi sumber media (URL), DataSource dan InputStreams.

Kita dapat memainkan media yang berasal dari file JAR dengan membuat Stream dari resource file dan meneruskannya pada method Manager.createPlayer()

Untuk mem-PAUSE player, kita  memanggil method player.stop();

Untuk men-STOP player, kita memanggil method player.close();

Berikut code lengkapnya :
(setelah itu silakan coba di handphone yang mendukung Java ya… ^_^v)

 

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;

/**

* @author Elisabeth Kurnia Wijayanti

*/

public class AudioMidlet extends MIDlet implements CommandListener{

private Command exitCommand, playCommand, pauseCommand, stopCommand;

private Form form;

private Gauge volumeGauge;

private Display display;

private int volume = 100;

private static int MAX_VOLUME = 100;

Player player;

public AudioMidlet() {

playCommand = new Command(“Play”, Command.ITEM, 1);

exitCommand = new Command(“Exit”, Command.EXIT, 1);

pauseCommand = new Command(“Pause”, Command.ITEM,1);

stopCommand = new Command(“Stop”, Command.STOP,1);

volumeGauge = new Gauge(“Volume”, true, MAX_VOLUME, volume);

form = new Form(“Audio Player”);

form.addCommand(playCommand);

form.addCommand(exitCommand);

form.addCommand(pauseCommand);

form.addCommand(stopCommand);

form.append(volumeGauge);

}

public void startApp() {

display = Display.getDisplay(this);

form.setCommandListener(this);

display.setCurrent(form);

}

public void pauseApp() {

// pause the player

try {

if(player != null) player.stop();

} catch(Exception ex) {}

}

public void destroyApp(boolean unconditional) {

if(player != null) player.close(); // close the player

}

public void commandAction(Command c, Displayable d) {

if (c == exitCommand) {

notifyDestroyed();

}else if (c == playCommand){

try {

InputStream stream = getClass().

getResourceAsStream(“bong.wav”);

player = Manager.createPlayer(stream, “audio/x-wav”);

///Looping player

player.setLoopCount(-1);// play indefinitely

///end of Looping player

player.realize();

VolumeControl control = (VolumeControl)

player.getControl(“VolumeControl”);

if (control != null){

control.setLevel(volumeGauge.getValue());

}

player.start();

} catch (MediaException mex) {

display.setCurrent(new Alert(“Media Exception”, mex.getMessage(), null, AlertType.ERROR));

} catch (Exception ex){

display.setCurrent(new Alert(“Exception”, ex.getMessage(), null, AlertType.ERROR));

}

}else if (c == pauseCommand){// if pausing

try{

player.stop(); // pauses the media, note that it is called stop

}catch (Exception ex){

display.setCurrent(new Alert(“Pause Exception”, ex.getMessage(), null, AlertType.ERROR));

}

}else if (c == stopCommand){// if stopping the media play

try{

player.close();// close the player

}catch (Exception ex){

display.setCurrent(new Alert(“Stop Exception”, ex.getMessage(), null, AlertType.ERROR));

}

}

}

}

source :

JENI JARDIKNAS

www.academictutorials.com