jobsheet 7

21
Pemrograman Komputer II JOBSHEET 7 PENGIRIMAN PESAN 7.1 Kompetensi Pada akhir kegiatan belajar, mahasiswa dapat : 1. Membuat MIDlet pesan SMS 2. Membuat MIDlet pesan MMS 7.2 Teori Pendahuluan SMS atau short messaging service adalah sebuah layanan yang dilaksanakan dengan ponsel untuk mengirimkan maupun menerima pesan-pesan pendek. Pada J2ME diijinkan mengirim dan menerima SMS, namun dengan alas an keamanan sebuah MIDlet hanya dapat memproses pesan SMS yang dikirimkan pada port yang terdaftar sebagai listener. MIdlet tidak dapat dapat mengakses pesan SMS dari aplikasi lain atau yang dikirimkan pada port standar (default), hal ini dapat berdampak pada penerimaan SMS melalui MIDlet yang pada intinya MIDlet untuk menerima SMS tidak dapat menerima SMS yang masuk ke inbox ponsel, namun MIDlet untuk mengirimkan SMS dapat mengirimkan SMS yang masuk ke inbox ponsel. MMS atau Multimedia Messaging Service sebenarnya adalah hasil pengembangan dari SMS, yang dimaksud multimedia disini adalah kombinasi teks, foto bahkan dalam perkembangannya bukan tidak mungkin dapat mengirimkan video dan animasi. Pada teknologi J2ME pengiriman Jobsheet 7: Pengiriman Pesan Halaman : 1

Upload: ivandi

Post on 25-Sep-2015

249 views

Category:

Documents


2 download

DESCRIPTION

pemrograman7

TRANSCRIPT

Sistem Informasi RSUD

Pemrograman Komputer II

JOBSHEET 7PENGIRIMAN PESAN7.1 KompetensiPada akhir kegiatan belajar, mahasiswa dapat :

1. Membuat MIDlet pesan SMS2. Membuat MIDlet pesan MMS7.2 Teori Pendahuluan SMS atau short messaging service adalah sebuah layanan yang dilaksanakan dengan ponsel untuk mengirimkan maupun menerima pesan-pesan pendek. Pada J2ME diijinkan mengirim dan menerima SMS, namun dengan alas an keamanan sebuah MIDlet hanya dapat memproses pesan SMS yang dikirimkan pada port yang terdaftar sebagai listener. MIdlet tidak dapat dapat mengakses pesan SMS dari aplikasi lain atau yang dikirimkan pada port standar (default), hal ini dapat berdampak pada penerimaan SMS melalui MIDlet yang pada intinya MIDlet untuk menerima SMS tidak dapat menerima SMS yang masuk ke inbox ponsel, namun MIDlet untuk mengirimkan SMS dapat mengirimkan SMS yang masuk ke inbox ponsel.MMS atau Multimedia Messaging Service sebenarnya adalah hasil pengembangan dari SMS, yang dimaksud multimedia disini adalah kombinasi teks, foto bahkan dalam perkembangannya bukan tidak mungkin dapat mengirimkan video dan animasi. Pada teknologi J2ME pengiriman multimedia dengan MMS ukuran filenya masih dibatasi sekitar 30 KB, karena jika ukurannya terlalu besar MIdlet akan menjadi error.7.3 Peralatan dan Bahan 1. Komputer dengan konfigurasi minimala.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 7.4 Langkah Kerja 1. Buatlah program untuk mengirimkan SMS dengan langkah-langkah sebagai berikut:a. Buka program Wireless Toolkit for CLDC.b. Buat proyek baru dengan mengetik tombol New Projectc. Isi nama proyek dan class dengan nama SendSMS dan pilih setting JTWI dengan tambahan sbb.: Tambahkan pada tab User Defined pada jendela settingKey : SMS-PortValue : 5000 (tambahan ini berlaku jika SMS yang dikirimkan ditujukan pada port tertentu, jika diinginkan SMS yang dikirimkan masuk ke inbox ponsel, maka tambahan ini tidak perlu

d. Jika project telah terbentuk, buatlah program SendSMS yang harus diletakkan di dalam direktori src pada projectimport javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SendSMS extends MIDlet implements CommandListener {

private Display display;

private Command cmExit, cmOk;

private PhoneInput form;

TextBox tbClip;

public SendSMS(){

display = Display.getDisplay(this);

cmOk = new Command("Lanjut", Command.OK, 1);

cmExit = new Command("Keluar", Command.EXIT, 1);

tbClip = new TextBox("Pesan", "",156, TextField.ANY);

tbClip.addCommand(cmOk);

tbClip.addCommand(cmExit);

tbClip.setCommandListener(this);

}

public void startApp(){

display.setCurrent(tbClip);

}

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

}

public void commandAction(Command c, Displayable s){

if (c == cmOk){

String smsPort = getAppProperty("SMS-Port");

form = new PhoneInput(this, display, tbClip.getString(), smsPort);

display.setCurrent(form);

}else if (c == cmExit){

exitMIDlet();

}

}

public void exitMIDlet(){

destroyApp(false);

notifyDestroyed();

}

}

e. Buat pula file PhoneInput pada tempat yang sama dengan file SendSMS sbb.:import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

import java.io.IOException;

class PhoneInput

extends Form

implements ItemCommandListener, ItemStateListener, CommandListener, Runnable

{

private Display display;

private Command cmSend, cmCancel, cmExit;

private TextField tfPhone;

private SendSMS midlet;

private String msg;

private StringItem itemCancel, itemSend, itemExit;

private Alert al;

private String adr;

private String smsPort;

public PhoneInput(SendSMS midlet, Display display, String msg, String smsPort) {

super("Nomor HP");

this.display = display;

this.midlet = midlet;

this.msg = msg;

this.smsPort = smsPort;

cmSend = new Command("Kirim", Command.OK, 1);

cmCancel = new Command("Batal", Command.CANCEL, 1);

cmExit = new Command("Keluar", Command.EXIT, 1);

tfPhone = new TextField("Nomor HP", "", 30,TextField.PHONENUMBER);

this.append(tfPhone);

this.setCommandListener(this);

itemSend = new StringItem(null, "Kirim", Item.BUTTON);

itemSend.setDefaultCommand(cmSend);

itemSend.setItemCommandListener(this);

append(itemSend);

itemCancel = new StringItem(null, "Batal", Item.BUTTON);

itemCancel.setDefaultCommand(cmCancel);

itemCancel.setItemCommandListener(this);

append(itemCancel);

itemExit = new StringItem(null, "Keluar", Item.BUTTON);

itemExit.setDefaultCommand(cmExit);

itemExit.setItemCommandListener(this);

append(itemExit);

setItemStateListener(this);

}

public void itemStateChanged(Item item) {

}

public void commandAction(Command c, Item item) {

if (c == cmSend) {

if ((tfPhone.size() == 0)){

al = new Alert("Error", "Nomor HP Tidak Valid", null, AlertType.ERROR);

al.setTimeout(Alert.FOREVER);

display.setCurrent(al);

}else {

this.adr = "sms://" + tfPhone.getString() + ":" + smsPort;

new Thread(this).start();

}

}else if(c == cmCancel){

display.setCurrent(midlet.tbClip);

}else if(c == cmExit){

midlet.exitMIDlet();

}

}

public void commandAction(Command c, Displayable s) {

}

public void run() {

MessageConnection smsconn = null;;

try {

smsconn = (MessageConnection)Connector.open(adr);

TextMessage txtmessage = (TextMessage)smsconn.newMessage(

MessageConnection.TEXT_MESSAGE);

txtmessage.setAddress(adr);

txtmessage.setPayloadText(msg);

smsconn.send(txtmessage);

Alert alert = new Alert("Info", "Pesan Terkirim", null,AlertType.INFO);

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

} catch (Throwable t) {

System.out.println("error : " + t.toString());

Alert alert = new Alert("Error", "Pesan Gagal Terkirim", null,AlertType.ERROR);

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

}

if (smsconn != null) {

try {

smsconn.close();

} catch (IOException ioe) {

}

}

}

}

f. Lakukanlah kompilasi dengan mengeklik tombol Build agar packet menjadi JAR, kemudian jalankan program pada emulator dengan mengeklik tombol Run maka akan muncul tampilan field 1 untuk memasukan pesan, selanjutnya pilih command Lanjut hingga muncul tampilan field 2 untuk memasukan nomor tujuan dan pilih tombol Kirim jika akan mengirimkan pesan SMS.2. Buatlah program untuk menerima SMS dengan langkah-langkah seperti berikut:a. Buka program Wireless Toolkit for CLDCb. Buat project baru dengan nama Project dan nama class ReceiveSMS dengan setting JTWI dengan tambahan sbb.: Tambahkan pada tab user defined pada jendela settingKey : SMS-PortValue : 5000c. Buatlah file ReceiveSMS sbb dan simpan di directory src dari directory projectimport javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class ReceiveSMS

extends MIDlet {

Display display;

public ReceiveSMS() {

display = Display.getDisplay(this);

}

public void startApp() {

String smsPort = getAppProperty("SMS-Port");

SMSFormReceive form = new SMSFormReceive(this, display, smsPort);

display.setCurrent(form);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

d. Buatlah file SMSFormReceive.Javaimport java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class SMSFormReceive

extends Form

implements CommandListener, Runnable, MessageListener {

private ReceiveSMS midlet;

private Display display;

private Command cmExit;

private Thread thread;

private String address, senderAddress;

private String[] connections;

private MessageConnection smsconn = null;

public SMSFormReceive(ReceiveSMS midlet, Display display, String smsPort) {

super("Receive SMS");

this.midlet = midlet;

this.display = display;

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

address = "sms://:" + smsPort;

connections = PushRegistry.listConnections(true);

if (connections == null || connections.length == 0) {

append("Menunggu SMS...");

}

try {

smsconn = (MessageConnection) Connector.open(address);

smsconn.setMessageListener(this);

} catch (Exception e) {

}

thread = new Thread(this);

thread.start();

}

public void commandAction(Command c, Displayable s) {

if (c == cmExit){

if (smsconn != null) {

try {

smsconn.close();

} catch (IOException ioe) {

}

}

midlet.exitMIDlet();

}

}

public void notifyIncomingMessage(MessageConnection conn) {

if(thread == null){

thread = new Thread(this);

thread.start();

}

}

public void run(){

ReceiveSMS();

}

public void ReceiveSMS() {

try {

Message msg = smsconn.receive();

if (msg != null) {

senderAddress = msg.getAddress();

setTitle("Dari: " + senderAddress);

if (msg instanceof TextMessage) {

StringItem stringItem = new StringItem("Isi : ",((TextMessage)msg).getPayloadText());

append(stringItem);

} else {

StringBuffer buf = new StringBuffer();

byte[] data = ((BinaryMessage)msg).getPayloadData();

for (int i = 0; i < data.length; i++) {

int intData = (int)data[i] & 0xFF;

if (intData < 0x10) {

buf.append("0");

}

buf.append(Integer.toHexString(intData));

buf.append(' ');

}

StringItem stringItem = new StringItem("Isi : ", buf.toString());

append(stringItem);

}

}

} catch (IOException e) {

}

}

};

e. Lakukan kompilasi dengan mengeklik tombol build, kemudian jalankan program dengan mengeklik tombol run. Maka tampilan field akan menunjukan penerimaan SMS.3. Buatlah program untuk mengirimkan MMS dengan langkah-langkah seperti berikut:a. Buka program Wireless Toolkit for CLDCb. Buat project baru dengan nama Projeck dan nama class SendMMS dengan setting JTWI dengan tambahan sbb.:Wireless messaging API 2.0 (JSR 205 pada tab API selection)c. Masukkan gambar dengan ukuran 30 KB kebawah di directory res dari Project SendMMS. Kemudian buatlah file SendMMS sbb dan simpan di directory src dari directory project SendMMS.import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class SendMMS

extends MIDlet {

Display display;

public SendMMS() {

display = Display.getDisplay(this);

}

public void startApp() {

MMSFormSend form = new MMSFormSend(this, display);

display.setCurrent(form);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

d. Buat pula file MMSFormSend seperti berikut pada directory src pada project SendMMS.import java.util.*;

import java.io.InputStream;

import java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class MMSFormSend

extends Form

implements CommandListener, Runnable {

private SendMMS midlet;

private Display display;

private Command cmSend, cmExit;

private Image bg;

private String text = "Ini MMS pertamaku dengan J2ME";

public MMSFormSend(SendMMS midlet, Display display) {

super("Send MMS");

this.midlet = midlet;

this.display = display;

cmSend = new Command("Kirim", Command.OK, 1);

addCommand(cmSend);

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

try {

bg = Image.createImage("/J2ME.jpg");

} catch (java.io.IOException e) {

}

append(bg);

append("\n");

append(text);

}

public void commandAction(Command c, Displayable s) {

if (c == cmExit){

midlet.exitMIDlet();

}else if(c == cmSend){

new Thread(this).start();

}

}

public void run(){

sendMMS();

}

public void sendMMS() {

String appID = midlet.getAppProperty("MMS-ApplicationID");

String address = "mms://+5550000:" + appID;

Vector part = new Vector();

addPart(part);

MessageConnection mmsconn = null;

try {

mmsconn = (MessageConnection) Connector.open(address);

MultipartMessage mmmessage =(MultipartMessage) mmsconn.newMessage(

MessageConnection.MULTIPART_MESSAGE);

mmmessage.setAddress(address);

MessagePart[] parts = getParts(part);

for (int i = 0; i < parts.length; i++) {

mmmessage.addMessagePart(parts[i]);

}

mmmessage.setSubject("MMS Pertama");

mmsconn.send(mmmessage);

} catch (Exception e) {

}

if (mmsconn != null) {

try {

mmsconn.close();

} catch (IOException ioe) {

}

}

}

public MessagePart[] getParts(Vector parts) {

MessagePart[] partsArray = new MessagePart[parts.size()];

parts.copyInto(partsArray);

return partsArray;

}

public void addPart(Vector parts){

int counter = 0;

MessagePart mpart;

String mimeType = "text/plain";

String encoding = "UTF-8";

try{

byte[] contents = text.getBytes(encoding);

mpart = new MessagePart(contents, 0, contents.length, mimeType, "id" +

counter, "contentLocation", encoding);

parts.addElement(mpart);

counter ++;

}catch(Exception e){

}

mimeType = "image/jpg";

String image = "/J2ME.jpg";

try{

InputStream is = getClass().getResourceAsStream(image);

byte[] contents = new byte[is.available()];

is.read(contents);

mpart = new MessagePart(contents, 0, contents.length,mimeType, "id" +

counter,"contentLocation", null);

parts.addElement(mpart);

counter ++;

}catch(Exception e){

}

}

};

e. Lakukan kompilasi dengan mengeklik tombol build, kemudian jalankan program dengan mengeklik tombol run. Maka tampilan field akan menunjukan pengiriman MMS.

4. Buatlah sebuah MIDlet untuk menerima MMS dengan langkah-langkah seperti berikut:a. Buka program Wireless Toolkit for CLDCb. Buat project baru dengan nama Projeck dan nama class ReceiveMMS dengan setting JTWI dengan tambahan sbb.:Wireless Messaging API 2.0 (JSR205) pada jendela setting tab API selection c. Buatlah file ReceiveMMS sbb dan simpan di directory src dari directory projectimport javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class ReceiveMMS

extends MIDlet {

Display display;

public ReceiveMMS() {

display = Display.getDisplay(this);

}

public void startApp() {

MMSFormReceive form = new MMSFormReceive(this, display);

display.setCurrent(form);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

d. Buat pula file MMSFormReceive seperti berikut dan simpan pada directory yang sama dengan file ReceiveMMSimport java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class MMSFormReceive

extends Form

implements CommandListener, Runnable, MessageListener {

private ReceiveMMS midlet;

private Display display;

private Command cmExit;

private Thread thread;

private String appID, address;

private String[] connections;

private MessageConnection mmsconn = null;

public MMSFormReceive(ReceiveMMS midlet, Display display) {

super("Receive MMS");

this.midlet = midlet;

this.display = display;

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

appID = midlet.getAppProperty("MMS-ApplicationID");

address = "mms://:" + appID;

connections = PushRegistry.listConnections(true);

if (connections == null || connections.length == 0) {

append("Menunggu MMS dengan ID aplikasi " + appID + "...");

}

try {

mmsconn = (MessageConnection) Connector.open(address);

mmsconn.setMessageListener(this);

} catch (Exception e) {

}

thread = new Thread(this);

thread.start();

}

public void commandAction(Command c, Displayable s) {

if (c == cmExit){

if (mmsconn != null) {

try {

mmsconn.close();

} catch (IOException ioe) {

}

}

midlet.exitMIDlet();

}

}

public void notifyIncomingMessage(MessageConnection conn) {

if(thread == null){

thread = new Thread(this);

thread.start();

}

}

public void run(){

ReceiveMMS();

}

public void ReceiveMMS() {

try {

Message msg = mmsconn.receive();

if (msg != null) {

String senderAddress = msg.getAddress();

deleteAll();

String titleStr = senderAddress.substring(6);

int colonPos = titleStr.indexOf(":");

if (colonPos != -1) {

titleStr = titleStr.substring(0, colonPos);

}

setTitle("Dari: " + titleStr);

if (msg instanceof MultipartMessage) {

MultipartMessage mpm = (MultipartMessage)msg;

StringBuffer buff = new StringBuffer("Subjek: ");

String subject;

buff.append((subject = mpm.getSubject()));

buff.append("\nTanggal: ");

buff.append(mpm.getTimestamp().toString());

buff.append("\nIsi:");

StringItem messageItem = new StringItem("Pesan",

buff.toString());

messageItem.setLayout(Item.LAYOUT_NEWLINE_AFTER);

append(messageItem);

MessagePart[] parts = mpm.getMessageParts();

if (parts != null) {

for (int i = 0; i < parts.length; i++) {

buff = new StringBuffer();

MessagePart mp = parts[i];

buff.append("Content-Type: ");

String mimeType = mp.getMIMEType();

buff.append(mimeType);

String contentLocation = mp.getContentLocation();

buff.append("\nContent:\n");

byte[] ba = mp.getContent();

try {

Image image = Image.createImage(ba, 0, ba.length);

append(buff.toString());

ImageItem imageItem = new ImageItem(contentLocation,

image, Item.LAYOUT_NEWLINE_AFTER, contentLocation);

append(imageItem);

} catch (IllegalArgumentException iae) {

buff.append(new String(ba));

StringItem stringItem = new StringItem("Part", buff.toString());

stringItem.setLayout(Item.LAYOUT_NEWLINE_AFTER);

append(stringItem);

}

}

}

}

}

} catch (IOException e) {

}

}

};

e. Lakukan kompilasi dengan mengeklik tombol build, kemudian jalankan program dengan mengeklik tombol run. Maka tampilan field akan menunjukan penerimaan MMS7.5 Lembar Kerja Tuliskanlah hasil dari langkah-langkah kerja yang anda lakuan untuk mengirimkan dan menerima SMS maupun MMS seperti tersebut di atas?.Jobsheet 7: Pengiriman PesanHalaman : 1