LAMPIRAN A Project SendSMS /////////////////////////////////////////////////////// ParsingKata.java

dokumen-dokumen yang mirip
BAB III PERANCANGAN SIMULASI

Membuat Aplikasi Kirim SMS. Menggunakan Java J2ME

Nilai Properti Constrains pada TextField

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum MMAPI. Setelah mempelajari bab ini, Pelajar diharapkan mampu untuk :

Mobile Computing. Ramos Somya

1.Mengatur jadwal tugas menggunakan Timers 2.Mengetahui bagaimana membaca file dari aplikasi mobile sederhana

DateField adalah objek yang dapat digunakan untuk menampilkan atau mengedit objek yang bertipe Date.

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum TiledLayer

11.1 Tujuan Timers

PEMOGRAMAN APLIKASI BERGERAK (Java ME)

MODUL 11 J2ME (Java 2 Micro Edition)

Low Level User Interface

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum Layer Manager

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 12 WIRELESS JAVA PROGRAMMING WITH JAVA 2 MICRO EDITION (J2ME)

Robertus Lilik Haryanto

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Company LOGO

Mobile Computing. Ramos Somya

Yoannita Company LOGO

LOGIN FORM MENGGUNAKAN PROGRAM JAVA

LAMPIRAN A. Universitas Kristen Maranatha

J2ME GUI dan Manajemen Event

LAMPIRAN Listing Program

MODUL 9 J2ME (Java 2 Micro Edition)

P4 Bab 4 User Interface

BONUS. Dasar Java Mobile. Mengenal Java Mobile Mengenal MIDlet Mobile Grafis Mobile Animasi Latihan Soal

1.Tujuan. 2. Latar Belakang. 3. Percobaan

Copyright Chocolove Mic 2003 IlmuKomputer.Com

Membuat Aplikasi Nilai dengan Login. Menggunakan Java J2ME

BAB IV SIMULASI DAN ANALISIS

PENGEMBANGAN APLIKASI MOBILE MODUL PRAKTIKUM. Persistence. Versi 1.0 JAVA EDUCATION NETWORK INDONESIA

Badiyanto, S.Kom., M.Kom. PBO java

2 TIPE DATA DAN VARIABEL

Kode tereksekusi dengan baik sehingga mendapatkan output "JENI Java Education Network Indonesia" yang diikuti oleh "Hello Jeni"

BAB II VARIABEL DAN TIPE DATA

PRAKTIKUM 2 ANTAR MUKA TINGKAN ATAS

Bab Tujuan. 2.2 Pengenalan. 2.3 "Hello, world!" MIDlet

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

BAHASA PEMROGRAMAN JAVA

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

PENGEMBANGAN APLIKASI MOBILE MODUL PRAKTIKUM. Optional Packages. Versi 1.0 JAVA EDUCATION NETWORK INDONESIA

Pengenalan JavaScript

DASAR PEMOGRAMAN JAVA

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Yoannita

PEMAHAMAN DASAR DASAR JAVA

Penggunaan Canvas Pada J2ME Untuk Game Programming

MODUL 10 J2ME (Java 2 Micro Edition)

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Elemen Dasar Dalam Bahasa Java

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

1.Tujuan. 2. Latar Belakang. 3. Percobaan Percobaan 1 Pembuatan Nada :

Bahasa Pemrograman :: Dasar Pemrograman Java

PERFORMANSI MODIFIKASI LZW UNTUK KOMPRESI SMS LAPORAN TUGAS AKHIR. Deny Aprianto /Teknik Telekomunikasi

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pendahuluan ( First Session). Baca terlebih dahulu halaman ini :

Optional Packages. Bab ini akan membahas bagaimana memulai penggunaan Mobile Media API (MMAPI) dan Wireless Messaging API (WMA).

Tidak perlu ditentukan jumlah karakternya Inisialisasi iili i: Langsung tanpa kata kunci new Langsung dengan kata kunci new

Pertemuan 2 Struktur Kontrol Percabangan

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Riwayat Pendidikan: SDK Lemuel II, Pos Pengumben, Jakarta Barat SMPK Lemuel, Pos Pengumben, Jakarta Barat SMUN 78, Kemanggisan, Jakarta Barat

BAB 1 KONSEP DASAR JAVA

IKG2I4 / Software Project I

BAB IV IMPLEMENTASI DAN PENGUJIAN

PEMROGRAMAN SOCKET LANJUTAN

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

Mulai. Pembangkitan Pasangan Kunci RSA. Penyertaan penandaan digital pada SMS. Verifikasi penandaan digital pada SMS. Selesai

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

BAB V IMPLEMENTASI DAN PENGUJIAN

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

BAB IV PERANCANGAN. SMSSender. - inter : Interface + run () : void. inbox inboxdate outbox outboxdate sender receiver

gplat,1,, rrl "f-dj.; alp' fll --s =- f a,ufrrnr"rpi c o .'lr, rr* f a;lrjiiltr* '. 'i-r'f rr srlagi'(+ SISTEM MOBILE (PRAKTIKUM) DISUSUN OLEH:

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Company LOGO

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

BAB 5 Mendapatkan Input dari Keyboard

MK. Pemrograman Berorientasi Objek. Input dari Keyboard. Karmilasari

BAB 5 Mendapatkan Input dari Keyboard

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Yoannita

Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu

SUMBER BELAJAR PENUNJANG PLPG

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

LAMPIRAN A: SOURCE CODE PROGRAM CLASS METODE

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Thread. 16 th week Estu Sinduningrum ST,MT

Implementasi Fungsi Hash untuk Pertukaran Data pada Telepon Seluler

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

A. TUJUAN PEMBELAJARAN

SATUAN ACARA PERKULIAHAN (SAP) Dosen menerangkan materi kuliah. Mahasiswa duduk berkelompok dan saling membantu memahami penjelasan dosen

Praktikum JTable. Gambar 1

Terdiri atas deretan karakter String diimplementasikan oleh java dalam bentuk class. Dapat langsung di konstruksi tanpa perintah new

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Array 1 Dimensi pada Java

IF PEMROGRAMAN LANJUT ARRAY. Oleh : Andri Heryandi, M.T.

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Transkripsi:

DAFTAR PUSTAKA [1] Patrick Naughton, Java Handbook, ANDI and McGraw-Hikk Co,Yogyakarta, 2002. [2] M.Shalahuddin, Rosa A.S., Pemrograman J2ME, Informatika, Bandung, 2006. [3] Hendrawan, Slide Kuliah ET-5014- Dictionary Techniques. [4] Hendrawan, Slide Kuliah ET-5014-Informasi dan Coding. [5]http://ebooks.ee.itb.ac.id/ComputerHardware/Compression_Algorithm/j eff-compression-tute.htm, 12 Juni 2007. [6]http://en.wikipedia.org/wiki/Short_Message_Service, 17 Juni 2007. [7]http://homepages.uel.ac.uk/D.Bowden, 10 Juli 2007 [8]Budi Raharjo, Imam Heryanto, Arif Haryono, Tuntunan Pemrograman Java untuk Handphone, Informatika, Bandung, 2007. 56

LAMPIRAN A Project SendSMS ParsingKata.java package src; public class ParsingKata public static short[] parser(string kalimat) String [] kata = new String [320]; String [] katabaru = new String[320]; int j = 0; int l = 0; int i; for (i = 0 ; i < kalimat.length() ; i++) //misahin kalo ada spasi if (kalimat.substring(i,i+1).equals(" ")) String tmp = ""; tmp = kalimat.substring(j,i+1); kata [i] = tmp.trim(); j = i+1; //buat objek buat nyimpen kata sebelum spasi if (i == kalimat.length()-1) kata[i] = kalimat.substring(j,i+1); //nge-short null for (int k = 0 ; k < kalimat.length() ; k++) if (kata[k]!= null) katabaru[l]= kata[k]; l++; short [] b = new short [2*i]; String temp; byte [] z = new byte [2*l]; for (int m = 0 ; m < l ; m++) temp = katabaru[m]; System.out.println(katabaru[m]); // ngeluarin parsing katanya System.out.println(""+ParsingHuruf.huruf(temp)); // ngeluarin dict ParsingHuruf.sisa = new StringBuffer(); b[2*m] = (byte)(parsinghuruf.huruf(temp) >>> 8); b[2*m+1] = (byte)(parsinghuruf.huruf(temp) - (b[2*m] << 8)); A- 1

short [] baru = new short [2*l]; for (int r = 0 ; r < 2*l ; r++) System.out.println(b[r]+","); baru [r] = b[r]; return baru; ParsingHuruf.java package src; import java.util.vector; import java.lang.stringbuffer; public class ParsingHuruf public static StringBuffer sisa; /** Creates a new instance of ParsingHuruf */ public static int huruf(string kata) boolean ketemu = false; int i; int j = 0; Vector dict = DictTable.getDict(); for (i = 0 ; i < kata.length() ; i++) String temp = kata.substring(i); sisa = new StringBuffer(kata.substring(0, i)); // nyimpen huruf yang ga ada di dict for (j = 0 ; j < dict.size() ; j++) String temp2 = (String)dict.elementAt(j); if (temp.equals(temp2)) // buat nyocokin ama dict ketemu = true; break; else String hasil=""; hasil = kata.substring(0, i+1); // nyimpen hasilnya if (ketemu == false) return 0; else return j; return -1; A- 2

SendSMS.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import src.*; public class SendSMS extends MIDlet implements CommandListener private Display display; private Command cmexit, cmok; private PhoneInput form; public 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", "",600, 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(); PhoneInput.java import javax.microedition.lcdui.*; A- 3

import javax.microedition.io.*; import javax.wireless.messaging.*; import java.io.ioexception; import src.*; 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) A- 4

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); short [] m = ParsingKata.parser(msg); String s = ""; for (int i = 0 ; i < m.length ; i++) s = s + String.valueOf(m[i]) + ","; txtmessage.setpayloadtext(string.valueof(s)); //String m = ParsingKata.parser(msg); //txtmessage.setpayloadtext(string.valueof(m)); System.out.println(s); int persentase = ((s.length()*800)/(msg.length()*7)); System.out.println("Besarnya persentase kompresi = "+persentase+"%"); System.out.println("panjang sms = "+msg.length()); smsconn.send(txtmessage); Alert alert = new Alert("Info", "Pesan Terkirim", null, AlertType.INFO); alert.settimeout(alert.forever); A- 5

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) Project TerimaSMS Decompress.java package src; import java.util.*; public class Decompress public static String decompress(byte [] data) Vector dict = DictTable.getDict(); String str = ""; boolean ketemu; int temp; short [] hasil_decode = new short [80]; for (int i = 0; i < data.length/2 ; i++) hasil_decode[i] = (short)((short)(data[2*i] << 8) (short)(data[2*i+1])); temp=0; temp = dict.indexof(hasil_decode); if (hasil_decode[i]==temp) ketemu = true; break; str += dict.elementat((hasil_decode[i])); str += " "; A- 6

if (data[i]==-1) break; return str; TerimaSMS.java /*************************************************** Program 5.2. Menerima SMS ***************************************************/ package src; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.wireless.messaging.*; import javax.microedition.io.*; import java.io.ioexception; import src.*; public class TerimaSMS extends MIDlet implements CommandListener, Runnable, MessageListener private Display display; private Alert alert; private TextBox tfpesan; private Thread thread; private MessageConnection conn; private Message pesan; private String[] daftarkoneksi; private boolean selesaiproses; private String port; String [] karakter = new String [100]; String [] hilangkoma = new String [100]; int jumlahdata = 0; int temp = 0; private final Command cmdkeluar = new Command("Keluar", Command.EXIT, 1); public TerimaSMS() port = getappproperty("port-sms"); display = Display.getDisplay(this); alert = new Alert("Terima SMS"); alert.settimeout(alert.forever); alert.addcommand(cmdkeluar); A- 7

alert.setcommandlistener(this); tfpesan = new TextBox(null, null, 500, TextField.ANY); tfpesan.addcommand(cmdkeluar); tfpesan.setcommandlistener(this); public void startapp() String alamatkoneksi = "sms://:" + port; if (conn == null) try conn = (MessageConnection) Connector.open(alamatKoneksi); conn.setmessagelistener(this); catch (IOException ioe) ioe.printstacktrace(); daftarkoneksi = PushRegistry.listConnections(true); if (daftarkoneksi == null daftarkoneksi.length == 0) alert.setstring("menunggu SMS pada port " + port + "..."); startnewthread(); display.setcurrent(alert); public void pauseapp() selesaiproses = true; thread = null; public void destroyapp(boolean unconditional) selesaiproses = true; thread = null; if (conn!= null) try conn.close(); catch (IOException e) public void commandaction(command c, Displayable s) if (c == cmdkeluar c == Alert.DISMISS_COMMAND) destroyapp(false); notifydestroyed(); // method ini ada karena kita mengimplementasikan // interface Runnable public void run() try pesan = conn.receive(); if (pesan!= null) A- 8

String alamatpengirim = pesan.getaddress(); tfpesan.settitle("pesan dari: " + alamatpengirim.substring(6)); if (pesan instanceof TextMessage) TextMessage pesanteks = (TextMessage) pesan; String awal = pesanteks.getpayloadtext(); for (int i = 0; i < awal.length(); i++) karakter [i] = awal.substring(i,i+1); if(jumlahdata == 0) hilangkoma[jumlahdata] = awal.substring(0,i); jumlahdata++; temp = i; else hilangkoma[jumlahdata] = awal.substring(temp+1, i); jumlahdata++; temp = i; byte [] ubahkebyte = new byte [jumlahdata]; //String m = ""; for (int j = 0; j < jumlahdata ; j++) ubahkebyte [j] = Byte.parseByte(hilangkoma[j]); //m += ubahkebyte[j] + " "; String m = Decompress.decompress(ubahkebyte); tfpesan.setstring(m); display.setcurrent(tfpesan); catch (IOException ioe) ioe.printstacktrace(); // method ini ada karena kita mengimplementasikan // interface MessageListener public void notifyincomingmessage(messageconnection conn) if (thread == null) startnewthread(); public void startnewthread() A- 9

selesaiproses = false; thread = new Thread(this); thread.start(); A- 10

LAMPIRAN B Atribut dan Method Class Java Atribut dan method yang akan dijelaskan pada lampiran ini hanya atribut dan method pada class Java yang berkaitan dengan proses kompresi dan dekompresi, yaitu class ParsingKata.java, ParsingHuruf.java, DictTable.java, Decompress.java Tabel Lampiran - 1 Atribut Kompresi dan Dekompresi Deklarasi Fungsi String [] Menyediakan suatu variabel penampung dalam bentuk array of string short [ ] Menyediakan suatu variabel penampung dalam bentuk array of short byte [ ] Menyediakan variabel penampung dalam bentuk array of byte boolean Nilai kembalian dari atribut ini nilai true atau false Vector Menyediakan variabel penampung dalam bentuk kolom seperti vector getdict() dict.addelement public static string decompress() indexof elementat length() Tabel Lampiran - 2 Method Kompresi dan Dekompresi Deklarasi Fungsi Suatu cara untuk mendapatkan suatu nilai yang ada pada dictionary Menambahkan suatu eleman yang spesifik ke dalam dictionary. Jika elemen sudah ditambahkan maka ukuran vektor dari dictionary akan bertambah 1. Suatu metode untuk mengembalikan suatu hasil decoding menjadi kalimat semula Mencari nilai indeks dari suatu objek yang diberikan dengan menggunakan metode persamaan. Mengembalikan objek dari suatu nilai indeks yang diberikan Metode untuk mencari panjang dari suatu objek yang diberikan B- 1

public static short [ ] parser metode yang digunakan untuk memarsing kata dict.size() Metode untuk mengetahui ukuran dari suatu dictionary public static int huruf() Metode untuk memarsing huruf dan membandingkan dengan dictionary. Nilai kembalian dari metode ini adalah indeks dari dictionary substring() Nilai kembaliannya adalah suatu string baru yang merupakan substring dari string sebelumnya. Substring diawali dari suatu index string tertentu sampai dengan akhir kalimat B- 2