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

Popular posts from this blog

Wireless sensor network

CARA MEMBUAT BROWNIS DARI RICE COOKER(TANPA OVEN)