MOBILE MEDIA
JOBSHEET 8
MOBILE MEDIA
8.1 Kompetensi
Pada
akhir kegiatan belajar, mahasiswa dapat
:
1. Membuat
MIDlet untuk media audio
2. Membuat
MIDlet untuk media video
8.2 Teori
Pendahuluan
Mobile media API (MMAPI) memberikan dukungan lebih pada MIDlet dalam
penggunaan media seperti audio dan video. Pembuatan media ditentukan oleh
manager. Manager adalah sebuah kelas yang menyediakan metode untuk menggenerasi
Player dan mengakses aturan yang mendukungnya. Manager juga menyediakan metode playTone() untuk
memainkan satu tone. Metode createPlayer() menggenerasi Player yang terasosiasi
dengan data DataSource yang menyediakan data. Player itu sendiri adalah sebuah
antarmuka (interface). Jika Player telah digenerasi maka aplikasi juga dapat
membuat sebuah objek control.
8.2.1. Memainkan File Musik
Teknologi J2ME
dapat digunakan untuk memainkan file music seperti file wave (.wav) dan midi
(.mid). Memainkan file music pada J2ME juga menggunakan object Player pada
MMAPI
8.2.2. Akses Kamera
Fungsi untuk
mengakses kamera hanya didukung dengan ponsel yang yang memiliki kamera. Fungsi
ini tidak dapat dites pada emulator,
karena emulator tidak mempunyai kamera, kalaupun bisa, maka tampilan kamera
tidak bisa seperti sebenarnya pada ponsel. Biasanya tampilan yang muncul berupa
jendela dengan garis berwarna-warni.
8.2.3. Memainkan File Video
Teknologi J2ME
juga dapat memainkan file video seperti file MPEG. Namun file MPEG yang
dimainkan pun tidak dapat memiliki ukuran yang terlalu besar, karena akan dapat
menyebabkan MIDlet menjadi error.
8.3 Peralatan
dan Bahan
1. Komputer
dengan konfigurasi minimal
a. Prosesor
P-II atau yang lebih tinggi
b. RAM minimal
32 MB
c. Free space
hardisk minimal 200 MB
d. Windows 98)
2. Software J2SE dan JCreator
8.4 Langkah
Kerja
1.
Buatlah program untuk memainkan musik dengan
langkah-langkah sebagai berikut:
a. Buka program Wireless Toolkit for CLDC dengan nama PlayMusic dan pilih setting JTWI.
b. Jika project telah terbentuk, masukkan file wav.wav dan mid.mid pada
direktori res.
c. Buatlah source code yang harus diletakkan ke dalam direktori src seperti berikut ini:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class PlayMusic
extends MIDlet
implements PlayerListener,
CommandListener {
private Display display;
private static Player player;
private VolumeControl vc;
private List list;
private Command cmExit,
cmStop;
public PlayMusic() {
display =
Display.getDisplay(this);
}
public void startApp() {
cmExit = new
Command("Keluar", Command.EXIT, 1);
cmStop = new
Command("Stop", Command.OK, 1);
list = new
List("Menu", List.IMPLICIT);
list.append("wav",
null);
list.append("midi",
null);
list.addCommand(cmExit);
list.setCommandListener(this);
display.setCurrent(list);
}
public void pauseApp() {}
public void destroyApp(boolean
unconditional) {
if(player != null){
player.close();
}
}
public
void commandAction(Command c, Displayable s){
if
(c == List.SELECT_COMMAND){
switch
(list.getSelectedIndex()){
case
0:
list.addCommand(cmStop);
try
{
playMedia("wav.wav",
"wav");
}
catch (Exception e) {
e.printStackTrace();
}
break;
case
1:
list.addCommand(cmStop);
try
{
playMedia("mid.mid",
"mid");
}
catch (Exception e) {
e.printStackTrace();
}
break;
}
}else
if(c == cmExit){
exitMIDlet();
}else
if(c == cmStop){
try{
player.stop();
if(player
!= null){
player.close();
}
}catch(Exception
e){
}
list.removeCommand(cmStop);
}
}
public
void exitMIDlet() {
destroyApp(false);
notifyDestroyed();
player
= null;
}
private
void playMedia(String file, String p)
throws
Exception {
if(p.equals("wav")){
player =
Manager.createPlayer(getClass().getResourceAsStream(file),
"audio/x-wav");
}else
if(p.equals("mid")){
player =
Manager.createPlayer(getClass().getResourceAsStream(file),
"audio/midi");
}else
if(p.equals("jts")){
player = Manager.createPlayer(getClass().getResourceAsStream(file),
"audio/x-tone-seq");
}
player.addPlayerListener(this);
player.setLoopCount(-1);
player.prefetch();
player.realize();
vc =
(VolumeControl)player.getControl("VolumeControl");
if (vc != null)
vc.setLevel(100);
player.start();
}
public void
playerUpdate(Player player, String event, Object eventData) {
if(event.equals(PlayerListener.STARTED)
&&
new Long(0L).equals((Long)eventData)) {
} else
if(event.equals(PlayerListener.CLOSED)) {
}
}
};
d. Lakukanlah kompilasi dengan mengeklik tombol build, package menjadi JAR.
Bila tidak ada kesalahan jalankan program pada emulator dengan mengeklik tombol
run, kemudian tuliskanlah hasil tampilan emulator tersebut dalam laporan anda.
2.
Buatlah program
untuk mengakses kamera dengan langkah-langkah seperti berikut:
a. Buka program Wireless Toolkit for CLDC dengan nama CameraAccess dan pilih setting JTWI.
b. Jika project telah terbentuk, masukkan file wav.wav dan mid.mid pada
direktori res.
c. Buatlah source code dari CameraAccess
yang harus diletakkan ke dalam direktori src seperti berikut ini:
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import
javax.microedition.media.control.*;
import javax.microedition.midlet.MIDlet;
import
javax.microedition.media.control.VideoControl;
public class CameraAccess extends MIDlet implements CommandListener {
private Display display;
private Form form;
private Command cmExit, cmBack, cmCapture, cmCamera;
private Player player;
private VideoControl videoControl;
private Camera camera;
public CameraAccess() {
cmExit = new Command("Keluar", Command.EXIT, 0);
cmCamera = new Command("Kamera", Command.SCREEN, 0);
cmBack = new Command("Kembali", Command.BACK, 0);
cmCapture = new Command("Ambil", Command.SCREEN, 0);
form = new Form("Camera Access");
form.addCommand(cmExit);
form.addCommand(cmCamera);
form.setCommandListener(this);
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command
c, Displayable s) {
if (c == cmExit) {
destroyApp(true);
notifyDestroyed();
} else if (c == cmCamera) {
showCamera();
} else if (c == cmBack)
display.setCurrent(form);
else if (c == cmCapture) {
camera = new Camera(this);
camera.start();
}
}
public void showCamera() {
try {
player =
Manager.createPlayer("capture://video");
player.realize();
videoControl =
(VideoControl)player.getControl("VideoControl");
Canvas canvas = new
CameraCanvas(this, videoControl);
canvas.addCommand(cmBack);
canvas.addCommand(cmCapture);
canvas.setCommandListener(this);
display.setCurrent(canvas);
player.start();
} catch (IOException ioe) {} catch (MediaException me) {}
}
class Camera extends Thread {
CameraAccess midlet;
public Camera(CameraAccess midlet) {
this.midlet = midlet;
}
public void run() {
capture();
}
public void capture() {
try {
byte[] raw =
videoControl.getSnapshot(null);
Image image =
Image.createImage(raw, 0, raw.length);
form.append(image);
display.setCurrent(form);
player.close();
player = null;
videoControl = null;
} catch (MediaException me) { }
}
};
}
d. Buatlah source code dari CameraCanvas
yang harus diletakkan ke dalam direktori src
seperti berikut ini:
import javax.microedition.lcdui.*;
import javax.microedition.media.MediaException;
import
javax.microedition.media.control.VideoControl;
public class CameraCanvas extends Canvas
{
private CameraAccess midlet;
public CameraCanvas(CameraAccess midlet, VideoControl videoControl) {
int width = getWidth();
int height = getHeight();
this.midlet = midlet;
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
try {
videoControl.setDisplayLocation(2,
2);
videoControl.setDisplaySize(width -
4, height - 4);
} catch (MediaException me) {}
videoControl.setVisible(true);
}
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
g.setColor(0x00ff00);
g.drawRect(0, 0, width - 1, height - 1);
g.drawRect(1, 1, width - 3, height - 3);
}
}
e. Lakukanlah kompilasi dengan mengeklik tombol build, package menjadi JAR.
Bila tidak ada kesalahan jalankan program pada emulator dengan mengeklik tombol
run, kemudian tuliskanlah hasil tampilan emulator tersebut dalam laporan anda.
3.
Buatlah program untuk memainkan file video dengan
langkah-langkah seperti berikut:
a.
Buka program Wireless Toolkit for CLDC dengan nama
PlayVideo dan pilih setting JTWI
b.
Jika proyek telah terbentuk, masukkan file video.mpeg
ke dalam direktori res
c.
Buatlah file source code yang harus diletakkan ke
dalam direktori src seperti berikut:
import java.util.Hashtable;
import java.util.Enumeration;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;
import
javax.microedition.lcdui.CommandListener;
import javax.microedition.media.Player;
import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import
javax.microedition.media.PlayerListener;
import javax.microedition.media.control.VideoControl;
public class PlayVideo extends MIDlet
implements CommandListener, PlayerListener {
private
Display display;
private
List itemList;
private
Form form;
private
Command stopCommand;
private
Command pauseCommand;
private
Command startCommand;
private
Hashtable items;
private
Hashtable itemsInfo;
private
Player player;
public
PlayVideo() {
display = Display.getDisplay(this);
itemList = new List("Video",
List.IMPLICIT);
stopCommand = new Command("Stop", Command.STOP,
1);
pauseCommand = new Command("Pause",
Command.ITEM, 1);
startCommand = new Command("Mulai",
Command.ITEM, 1);
form = new Form("Play Video");
form.addCommand(stopCommand);
form.addCommand(pauseCommand);
form.setCommandListener(this);
items = new Hashtable();
itemsInfo = new Hashtable();
items.put("video.mpeg", "file://video.mpeg");
itemsInfo.put("video.mpeg", "video/mpeg");
}
public
void startApp() {
for(Enumeration
en = items.keys(); en.hasMoreElements();) {
itemList.append((String)en.nextElement(),
null);
}
itemList.setCommandListener(this);
display.setCurrent(itemList);
}
public
void pauseApp() {
try
{
if(player != null) player.stop();
}
catch(Exception e) {}
}
public
void destroyApp(boolean unconditional) {
if(player
!= null) player.close();
}
public
void commandAction(Command command, Displayable disp) {
if(disp
instanceof List) {
List
list = ((List)disp);
String
key = list.getString(list.getSelectedIndex());
try
{
playMedia((String)items.get(key),
key);
}
catch (Exception e) {
}
}
else if(disp instanceof Form) {
try
{
if(command
== stopCommand) {
player.close();
display.setCurrent(itemList);
form.removeCommand(startCommand);
form.addCommand(pauseCommand);
}
else if(command == pauseCommand) {
player.stop();
form.removeCommand(pauseCommand);
form.addCommand(startCommand);
}
else if(command == startCommand) {
player.start();
form.removeCommand(startCommand);
form.addCommand(pauseCommand);
}
}
catch(Exception e) {
}
}
}
private
void playMedia(String locator, String key) throws Exception {
String
file = locator.substring(
locator.indexOf("file://")
+ 6,
locator.length());
player
=
Manager.createPlayer(
getClass().getResourceAsStream(file),
(String)itemsInfo.get(key));
player.addPlayerListener(this);
player.setLoopCount(-1);
player.prefetch();
player.realize();
player.start();
}
public
void playerUpdate(Player player, String event, Object eventData) {
if(event.equals(PlayerListener.STARTED)
&&
new Long(0L).equals((Long)eventData)) {
VideoControl
vc = null;
if((vc
= (VideoControl)player.getControl("VideoControl")) != null) {
Item
videoDisp =
(Item)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null);
form.append(videoDisp);
}
display.setCurrent(form);
}
else if(event.equals(PlayerListener.CLOSED)) {
form.deleteAll();
}
}
}
d.
Lakukanlah kompilasi dengan mengeklik tombol build,
package menjadi JAR. Bila tidak ada kesalahan jalankan program pada emulator
dengan mengeklik tombol run, kemudian tuliskanlah hasil tampilan emulator
tersebut dalam laporan anda.
8.5 Lembar Kerja
Tuliskanlah
hasil dari langkah-langkah kerja yang anda lakuan untuk memainkan music,
mengakses kamera dan memainkan video dari langkah kerja di atas.
JAWABAN
|
Nama File
|
Hasil Keluaran
|
|
PlayMusic
|
![]() ![]() ![]() ![]() ![]() |
|
CameraAccess
|
![]() ![]() ![]() ![]() ![]() ![]() |
|
PlayVideo
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
PRAKTEK
PEMROGRAMAN KOMPUTER II

Jobsheet 8
MOBILE MEDIA
Siti Harlina
TE-2B/21
PROGRAM STUDI SARJANA TERAPAN TEKNIK
TELEKOMUNIKASI
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2017


















Comments
Post a Comment