BAB IV PEMOGRAMAN GRAFIK DAN SMS DENGAN J2ME - BAB IV Aplikasi Grafik dan SMS

BAB IV PEMOGRAMAN GRAFIK DAN SMS DENGAN J2ME PEMBAHASAN MATERI :  Java mobile yang dipelajari adalah J2ME.

   Pembuatan Program Grafik dengan Sun Java Wireless Toolkit 2.5.2.  Membuat Aplikasi SMS

  TUJUAN BELAJAR :

 Mahasiswa dapat mengetahui dan memahami pembuatan program kalkulator ( kali,

bagi, tambah dan kurang ) menggunakan java mobile J2ME dan menampilkannya ke Ponsel.

A. JAVA MOBILE

  Java Mobile biasa dikenal dengan istilah J2ME (Java 2 MicroEdition) merupakan

salah satu bagian dari paket pemrograman Java. Paket pemrograman Java untuk saat ini pada

umumnya terbagi tiga, yaitu :

  a) Java 2 Enterprise Edition (J2EE).

  Paket ini digunakan pada hardware yang mempunyai spesifikasi dan memori yang besar seperti pada komputer server.

  b) Java 2 Standard Edition (J2SE).

  Paket J2SE digunakan pada komputer desktop.

  c) Java 2 MicroEdition (J2ME).

  Paket J2ME digunakan pada perangkat keras yang memiliki memori kecil seperti ponsel, PDA dan sebagainya.

  J2ME merupakan superset dari J2SE, yang artinya Java API yang ada di J2ME

sebagian diadopsi dari Java API J2SE. Jika pada J2SE menggunakan JVM (Java Virtual

Machine) sebagai Interprenternya, lain halnya pada J2ME yang menggunakan Kilo Virtual

Machine (KVM) sebagai interprenternya. Berdasarkan spesifikasi perangkat kerasnya J2ME

memiliki 2 macam konfigurasi yaitu CLDC (Connected Limited Device Configuration) dan

CDC (Connected Device Configurations). Untuk aplikasi pada paket J2ME diberi nama

MIDlet.

  Perbedaannya CLDC dan CDC dapat dilihat pada Tabel 1.

CLDC CDC

  Mengimplementasikan seluruh fitur dari Mengimplementasikan sebagian fitur dari J2SE J2SE Menggunakan KVM (Kilo Virtual Machine) Menggunakan CVM Digunakan pada perangkat internet Digunakan pada Handphone, PDA, Pager yang Televisi, Nokia communicator yang memiliki memori terbatas (160-512)kb memiliki memori minimal 2 Mb Processor 16 / 32 bit Processor 32 bit

B. Membuat Aplikasi Sederhana dengan J2ME 1. Membuat Aplikasi Grafik

  Ketik kode berikut :

  import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.Random; public class Grafik extends MIDlet { private Command Keluar; private Display Layar; public Grafik() { Layar = Display.getDisplay(this); } public void startApp() { Acak TampilLayar=new Acak(this); Layar.setCurrent(TampilLayar); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } } class Acak extends Canvas implements Runnable { public int Lebar=this.getWidth(); public int Tinggi=this.getHeight(); public MIDlet Tampilan; public Image Gambar; public Random ProsesAcak; int Jumlah=0; public Acak(MIDlet mid) { this.Tampilan=Tampilan; ProsesAcak=new Random(255); Gambar=Image.createImage(Lebar,Tinggi); Thread Proses=new Thread(this); Proses.start(); } public void createpic(){ int red,green,blue; Graphics Garis=Gambar.getGraphics(); for (int i=0;i<500;i++){ red=Math.abs(ProsesAcak.nextInt() % (255)); green=Math.abs(ProsesAcak.nextInt() % 255); blue=Math.abs(ProsesAcak.nextInt() % 255); Garis.setColor(red,green,blue); Garis.drawLine(Math.abs(ProsesAcak. nextInt()%Lebar), Math.abs(ProsesAcak.nextInt() %Tinggi), Math.abs(ProsesAcak.nextInt() %Lebar), Math.abs(ProsesAcak.nextInt() %Tinggi)); }; } public void run(){ while (true){ createpic();

this.repaint(); try{ Thread.sleep(500); }catch(Exception e){ } } } public void paint (Graphics g){ g.drawImage(Gambar,0,0,0); } public void ClearScreen(Graphics g){ g.setColor(0,0,0); g.fillRect(0,0,Lebar,Tinggi); };

  }

  Keterangan pada aplikasi Grafik:

  

Baris 1-3 merupakan fungsi Java API yang akan kita gunakan untuk memanggil

kompenen-komponen J2ME.

   dalam class MidletGrafik.

  

Baris 4-18 mendeklarasikan class MidletGrafik dan mendefinisikan Method- Method

   mendefiniskan Variabel-Variabel dalam class Acak untuk tampilan aplikasi.

  

Baris 19-25 mendeklarasikan class Acak dalam class MidletGrafik kemudian

   acak.

  

Baris 26-32 kode-kode Constructor pada class Acak untuk menampilkan grafik secara

   secara acak dan berulang-ulang.

  

Baris 33-53 kode-kode yang berfungsi membuat logika grafik dalam format warna RGB

   Baris 67-70 kode-kode yang berfungsi untuk membersihkan layar.

  Baris 54-66 kode-kode yang berfungsi untuk menampilkan grafik.

   Baris 71 akhir dari blok kode class Acak.

   2.

   Membuat Aplikasi Listp Ketik kode berikut : import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Listp extendes MIDlet implements CommandListener { Display display; list list; TextBox texbox; Command exitCommand = new Command("Exit", Command.EXIT, 1); Command addCommand = new Command("Add Item", Command.OK, 1); Command removeCommand = new Command("Remove Item", Command.OK,1); Command okCommand = new Command("OK",Command.OK, 1); Command cancelCommand = new Command("Cancel",Command.EXIT,1); Ticker ticker = new Ticker("selamat Datang DI budidarma"); public Listp(){ list = new list ("Komputasinirkabel",List.IMPLICIT); list.setTicker(ticker); list.addCommand(exitCommand); list.addCommand(addCommand); list.addCommand(removeCommand); list.setCommandListener(this); textbox = new TextBok("Add list Item","",64, TextField.ANY); textbox.addCommand(okCommand); textbox.setCommandListener(this); } public void starApp() { if (display ==null) { display = Display.getDisplay(this); display.setCurrent(list); } } public void pauseApp() { }

public void destroyApp(boolean uncoditional) { } public void commandAction(Command c, Displayable d){ if (c == exitCommand){ notifyDestroyed(); } if (c == addCommand){ textbox.setString(""); display.setCurrent(textbox); } if (c == removeCommand){ iny index = list.getselectedIndex(); if (index != -1){ list.insert(index, textbox.getString(),null); } else{ // list might be empty list.append(textbox.getString(),null;} display.setCurrent(list); } if (c==cancelcommand){ display.setCurrent(list);} } }

3. Membuat Aplikasi MidletSMS

  Ketik kode berikut :

  import javax.microedition.midlet.*; import javax.microedition.io.*; import javax.microedition.lcdui.*; import javax.wireless.messaging.*; import java.io.IOException; public class MidletSMS extends MIDlet implements CommandListener { Command exitCommand = new Command( "Keluar", Command.EXIT, 2); Command okCommand = new Command( "OK", Command.OK, 1); Display display; String smsPort; TextBox destinationAddressBox; Alert errorMessageAlert; Alert sendingMessageAlert; KirimPesan sender; Displayable resumeScreen = null; public MidletSMS() { smsPort = getAppProperty("PortSMS"); display = Display.getDisplay(this); destinationAddressBox = new TextBox ("Masukkan Nomor HP Tujuan ?", null, 256, TextField.PHONENUMBER); destinationAddressBox.addCommand( exitCommand); destinationAddressBox.addCommand( okCommand); destinationAddressBox. setCommandListener(this); errorMessageAlert = new Alert( "SMS", null, null, AlertType.ERROR); errorMessageAlert.setTimeout(5000); sendingMessageAlert = new Alert( "SMS", null, null, AlertType.INFO); sendingMessageAlert.setTimeout(5000); sendingMessageAlert. setCommandListener(this);

sender = new KirimPesan( smsPort, display, destinationAddressBox, sendingMessageAlert); resumeScreen = destinationAddressBox; } public void startApp() { display.setCurrent(resumeScreen); } public void pauseApp() { resumeScreen = display.getCurrent(); } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { try { if (c == exitCommand || c == Alert.DISMISS_COMMAND) { destroyApp(false); notifyDestroyed(); } else if (c == okCommand) { promptAndSend(); } } catch (Exception ex) { ex.printStackTrace(); } } private void promptAndSend() { String address = destinationAddressBox.getString(); if (!MidletSMS.isValidPhoneNumber(address)) { errorMessageAlert.setString( "Nomor Telepon Tdak DiKenal"); display.setCurrent(errorMessageAlert, destinationAddressBox); return; } String statusMessage = "Mengirim Pesan Ke : "

  • address + "...";
sendingMessageAlert.setString(statusMessage); sender.promptAndSend("sms://" + address); } private static boolean isValidPhoneNumber( String number) { char[] chars = number.toCharArray(); if (chars.length == 0) { return false; } int startPos = 0; if (chars[0] == '+') { startPos = 1; } for (int i = startPos; i < chars.length; ++i) { if (!Character.isDigit(chars[i])) { return false; } } return true; } } class KirimPesan implements CommandListener, Runnable { Command sendCommand = new Command( "Kirim", Command.OK, 1); Command backCommand = new Command( "Kembali", Command.BACK, 2); Display display; String smsPort; String destinationAddress; TextBox messageBox; Displayable backScreen; Displayable sendingScreen; public KirimPesan(String smsPort, Display display, Displayable backScreen, Displayable sendingScreen) { this.smsPort = smsPort;

this.display = display; this.destinationAddress = null; this.backScreen = backScreen; this.sendingScreen = sendingScreen; messageBox = new TextBox( "Ketik Pesan", null, 65535, TextField.ANY); messageBox.addCommand(backCommand); messageBox.addCommand(sendCommand); messageBox.setCommandListener(this); } public void promptAndSend(String destinationAddress) { this.destinationAddress = destinationAddress; display.setCurrent(messageBox); } public void commandAction(Command c, Displayable s) { try { if (c == backCommand) { display.setCurrent(backScreen); } else if (c == sendCommand) { display.setCurrent(sendingScreen); new Thread(this).start(); } } catch (Exception ex) { ex.printStackTrace(); } } public void run() { String address = destinationAddress + ":" + smsPort; MessageConnection smsconn = null; try { smsconn = (MessageConnection) Connector.open(address); TextMessage txtmessage = (TextMessage) smsconn.newMessage( MessageConnection.TEXT_MESSAGE);

txtmessage.setAddress(address); txtmessage.setPayloadText( messageBox.getString()); smsconn.send(txtmessage); } catch (Throwable t) { System.out.println("Pesan Terkirim"); t.printStackTrace(); } if (smsconn != null) { try { smsconn.close(); } catch (IOException ioe) { System.out.println("Selesai"); ioe.printStackTrace(); } } }

  }

  Keterangan : Baris 1-5 merupakan fungsi Java API yang akan kita gunakan untuk memanggil

   kompenen-komponen J2ME.

   Variabel-Variabelnya.

  Baris 6-18 mendeklarasikan class MIDletSMS sebagai MIDlet, beserta Command dan

   akan dipakai pada program.

  Baris 19-43 kode-kode Constructor MidletSMS yang berisikan logika-logika yang

   Baris 44-63 kode-kode Method yang berisikan pengaturan fungsi-fungsi dan Variabel-Variabel yang akan dipanggil ketika berinteraksi dengan menu dalam program.

   dalam menu program.

  Baris 64-77 kode-kode yang berisikan logika program untuk menampilkan dialog

   nomor telepon yang dimasukkan.

  Baris 78-96 kode-kode yang berisikan logika program untuk memeriksa jumlah digit

   Baris 97-108 membuat dan mendeklarasikan class KirimPesan beserta Variabe- Variabel dan Commandnya di dalam MIDletSMS. Class KirimPesan nantinya akan berisi logika-logika yang berfungsi untuk melakukan pengiriman pesan.

   Baris 109-121 merupakan Constructor class.KirimPesan yang mendeklarasikan Variabel dan Command. yang akan digunakan.

   Baris 122-161 kode-kode logika yang terdapat pada Method-Method Class kirim pesan yang berfungsi untuk melakukan pengiriman pesan.

   Baris 162-165 akhir dari class dan blok kode.

  Catatan:

   Anda bisa mencoba aplikasi ini pada ponsel anda. Transfer File yang ada di “Folder

Project”\dist\”Nama Project”.jar ke Ponsel, kemudian Install aplikasi tersebut.

   Kedua aplikasi ini hanya pernah di coba pada Ponsel merk Nokia, belum pernah di coba pada Ponsel merk lain.

   Aplikasi ini pernah dicoba pada Ponsel Nokia seri 6600, hasilnya aplikasi bisa berjalan tanpa ada masalah.

   Aplikasi ini tidak cocok dengan Ponsel nokia seri N-Gage, muncul pesan Error pada saat instalasi.

DAFTAR PUSTAKA 1.

  Irawan, Java Mobile, maxiko, Palembang, ______

  • Hak Cipta © 2013 pada penulis,

    Hak Cipta dilindungi undang-undang. Seluruh dokumen ini dapat digunakan dan disebarkan

    secara bebas untuk tujuan belajar bukan komersial (non-profit), dengan syarat tidak

    menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam

    dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan izin tertulis

    terlebih dahulu dari Penulis.

TENTANG PENULIS,

  Ferlianus Gulo Lahir di Pulau Nias, 1990, anak pertama dari 5 bersaudara, pada tahun 2010 kuliah di salah satu sekolah tinggi swasta di Medan, Sumatera Utara, Sekolah Tinggi Manajemen Informatika dan Komputer (STMIK) Budidarma Medan dengan Jurusan Teknik Informatika Angkatan 2010. Penulis sudah lama aktif menulis di internet dan sebagian besar tulisannya ditujukan untuk berbagi pengalaman dan membantu para pemula dalam

mempelajari cara membuat website ( HTML, CSS, XML, PHP, SQL, PYTHON, JSP, ASP),

Pemrograman ( VB, Java, dll), Jaringan dan internet marketing. Penulis yang juga merupakan

pengelola sekaligus kontributor utama website : http://lengkapskripsi.blogspot.com yang

merupakan salah satu website populer untuk belajar membuat Kerja Praktek atau Skripsi.

  

Penulis dapat dihubungi di