html5-img
1 / 38

MIDlet User Interface (2)

MIDlet User Interface (2). As’ad Djamalilleil http://kampusku.uni.me asad.kom@gmail.com. Class Command. Command adalah sebuah fitur pada Class Displayable, sehingga dapat ditambahkan pada user interface, bahkan yang menggunakan low-level API

Download Presentation

MIDlet User Interface (2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIDlet User Interface (2) As’ad Djamalilleil http://kampusku.uni.me asad.kom@gmail.com

  2. Class Command • Command adalah sebuah fitur pada Class Displayable, sehingga dapat ditambahkan pada user interface, bahkan yang menggunakan low-level API • Command digunakan untuk menangani aksi yang diberikan oleh user lewat interface yang disediakan oleh MIDlet • Command layaknya tombol aplikasi desktop atau yang diistilahkan dengan soft button pada MIDlet

  3. Membuat Command • Command memiliki sebuah constructor public Command(String label, int type, int priority); • label • teks yang digunakan untuk mewakili command pada interface • type • tipe dari command yang dibuat • priority • prioritas urutan command yang tampil

  4. Parameter Tipe Command

  5. Untuk menampilkan command pada user interface digunakan metode addCommand() pada class Displayable public void addCommand(Command cmd); • Semakin kecil nilai parameter priority dari sebuah command, maka posisi command tersebut lebih diutamakan penempatannya atau lebih mudah dijangkau oleh user

  6. Jika jumlah command melebihi jumlah soft key yang ada pada perangkat mobile (handphone/HP), maka tergantung dari kebijakan sistem operasi yang digunakan pada HP untuk menentukan urutan pemetaan command pada soft key yang tersedia • Contohnya jika terdapat tiga buah command dengan hanya dua buah soft key pada HP, maka sebuah command akan menempati satu soft key dan dua buah command lainnya akan membentuk menu yang dapat diakses pada soft key kedua

  7. Pemetaan command ke soft key ini ditentukan oleh sistem operasi pada HP dengan cara melihat nilai dari parameter tipe dan priority pada setiap command • Cara pemetaan tersebut mungkin berbeda antara satu HP ke HP yang lain • Beberapa command, seperti EXIT mungkin ingin ditampilkan pada beberapa layar aplikasi yang berbeda. Maka satu command EXIT dapat ditampilkan pada lebih dari satu layar

  8. Command exitCommand = new Command( "Exit", Command.EXIT, 0); form1.addCommand(exitCommand); form2.addCommand(exitCommand);

  9. Merespon Aksi UserPada Command • Agar dapat menerima notifikasi ketika user menjalankan satu command, maka terlebih dulu menghubungkan sebuah CommandListener dengan objek Displayable dimana command tersebut ditambahkan • Cara ini bisa dilakukan lewat metode setCommandListener()

  10. public void setCommandListener( CommandListener l); • Metode commandAction() dipanggil setiap kali salah satu command pada objek Displayable dijalankan, yaitu pada saat user menekan soft key yang telah terhubung dengan command public void commandAction( Command c, Displayable d) • Argumen pertama (Command) lebih berguna karena kita dapat mengetahui operasi apa yang user ingin lakukan

  11. Argumen Displayable berguna jika kita menambahkan Command yang sama pada lebih dari satu layar, sehingga aksi yang dihasilkan bergantung dari layar yang aktif • Argumen ini juga berguna jika aksi memerlukan referensi ke layar untuk dapat menjalankan operasi yang seharusnya • Metode setCommandListener hanya memungkinkan sebuah CommandListener yang terhubung pada satu waktu

  12. Aplikasi Demo Command 1 import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.*; public class TekanTombol extends MIDlet implements CommandListener { private static final Command KELUAR = new Command("Keluar", Command.EXIT, 0); private static final Command OKE = new Command("Oke", Command.OK, 0); private static final Command HAPUS = new Command("Hapus", Command.SCREEN, 1);

  13. private static final Command BALIK = new Command("Balik", Command.SCREEN, 1); private Display layar; private TextBox isian; public TekanTombol() { layar = Display.getDisplay(this); isian = new TextBox("Sepatah kata", "Ini contoh sebuah tulisan", 50, 0); isian.addCommand(OKE); isian.addCommand(KELUAR); isian.addCommand(HAPUS); isian.addCommand(BALIK); isian.setCommandListener(this); layar.setCurrent(isian); }

  14. public void commandAction(Command c, Displayable d) { if (c == KELUAR) { destroyApp(true); notifyDestroyed(); } else if (c == OKE) { System.out.println("Tombol oke ditekan"); } else if (c == HAPUS) { isian.setString(null); } else

  15. if (c == BALIK) { String isi = isian.getString( ); if (isi != null) { StringBuffer sb = new StringBuffer(isi); isian.setString(sb.reverse().toString()); } } } public void startApp(){ }

  16. public void pauseApp(){ } public void destroyApp(boolean unconditional){ } }

  17. Command “Keluar” dan “Oke” masing-masing bertipe Command.EXIT dan Command.OK dan memiliki priority 0 yang berarti kedua command tersebut seharusnya ditempatkan pada soft key yang lebih mudah diakses oleh user • Kedua command yang lain bertipe Command.SCREEN karena berupa proses yang ditentukan oleh program yang tidak memiliki arti yang khusus, dan priority 1 menandakan bahwa command ini memiliki prioritas yang lebih rendah dibandingkan command “Keluar” dan “Oke”

  18. Agar operasi ini tersedia pada user interface, maka keempat command tersebut harus ditambahkan pada sebuah objek Displayable (di contoh ini adalah sebuah TextBox) dengan menggunakan metode addCommand() • Kemudian TextBox tersebut di-set agar aksi yang dilakukan oleh user terhadap command yang berada pada TextBox dapat “didengar” oleh MIDlet, maka digunakan metode setCommandListener()

  19. Langkah terahir adalah dengan menambahkan metode commandAction() yang bertanggungjawab menjalankan operasi yang berkaitan dengan command • Tugas pertama adalah menentukan operasi apa yang user ingin lakukan. Kita harus bisa mengetahui command yang mana yang ditekan oleh user. Hal ini dapat diketahui lewat argumen pertama pada metode commandAction()

  20. Class Alert • Alert adalah sebuah subclass dari Screen yang mirip dengan kotak dialog, walaupun dengan fungsionalitas terbatas • Ketika Alert ditampilkan dengan memanggil metode setCurrent(), akan tampil menutupi sebagian atau seluruh layar dan menerima semua kunci dan pointer event yang dibangkitkan oleh aksi user selama Alert terlihat • Alert dapat berupa bersifat modal atau non-modal. Modal artinya Alert akan tetap tampil hingga user secara sengaja menutupnya, sedangkan non-modal artinya ditampilkan selama jangka waktu tertentu sebelum ditutup secara otomatis

  21. Alert memiliki beberapa atribut yang menentukan tampilan dan tingkah lakunya: • Title • Atribut ini diwarisi dari class Screen, dimana judul Alert sifatnya opsional • String • Atribut ini berisi pesan yang ditampilkan Alert kepada user. Perpindahan baris dapat dibuat di dalam pesan dengan menyisipkan karakter newline • Image • Sebuah gambar opsional dapat ditampilkan bersamaan dengan pesan

  22. Timeout • Menentukan berapa lama Alert ditampilkan. Timeout default akan digunakan bila tidak ditentukan secara eksplisit. Alert.FOREVER digunakan untuk menentukan bahwa Alert ditampilkan hingga user menutupnya • Type • Atribut ini merupakan konstanta di dalam class AlertType, hanya untuk disampaikan kepada perangkat mobile yang digunakan. Platform perangkat dapat menggunakan AlertType untuk menampilkan pesan maupun suara yang berbeda-beda kepada user sesuai tipenya

  23. Tipe-tipe yang tersedia adalah: AlertType.ALARM AlertType.CONFIRMATION AlertType.ERROR AlertType.INFO AlertType.WARNNG • Tipe CONFIRMATION dimaksudkan untuk memberikan konfirmasi kepada user bahwa sebuah aksi yang diminta telah selesai dijalankan, bukan untuk meminta respon (seperti Yes, No atau Cancel) sebelum aksi dijalankan • Tidak dimungkinkan untuk membuat sebuah Alert yang dapat menerima input

  24. Hanya Alert dengan timeout Alert.FOREVER dapat ditutup oleh user secara implisit, namun secara eksplisit dapat ditambahkan Command pada Alert yang memungkinkan untuk berpindah ke Displayable yang lain setelah sebelumnya menutup Alert secara eksplisit • Kode untuk membuat dan menampilkan sebuah Alert sangat sederhana:

  25. Alert alt = new Alert("Judul Alert", "Ini sebuah pengingat", alarmImage, AlertType.ALARM); Display.getDisplay(this).setCurrent(alt); • Ketika Alert ditutup, layar yang sebelumnya akan ditampilkan kembali. Terkadang lebih baik untuk menampilkan layar yang berbeda setelah Alert ditutup. Hal ini dapat diatur dengan menggunakan sebuah bentuk metode setCurrent() yang berbeda: public void setCurrent(Alert alert, Displayable displayable);

  26. Metode di atas menampilkan Alert yang dikirim sebagai argumen pertama, ketika ditutup, Displayable sebagai argumen kedua ditampilkan • Mengirim null sebagai argumen Displayable akan mengembalikan tampilan kembali ke layar sebelumnya • AlertType dapat diperoleh atau diubah menggunakan metode-metode berikut: public void setAlertType(AlertType alertType); public AlertType getAlertType();

  27. Teks atau gambar pada Alert dapat diperoleh maupun diubah menggunakan metode-metode berikut: public void setString(String string); public String getString(); public void setImage(Image image); public Image getImage(); • Ketika Alert dibuat menggunakan timeout default yang dapat diperoleh lewat metode getDefaultTimeout() public int getDefaultTimeout();

  28. Metode di atas mengembalikan nilai timeout default dalam milidetik • Metode berikut digunakan untuk memperoleh atau mengubah timeout aktual untuk Alert tertentu: public int getTimeout(); public void setTimeout(int timeOut); • Jika memanggil setTimeout() dengan argumen Alert.FOREVER, maka Alert bersifat modal

  29. Aplikasi Demo Alert 1 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Alert; public class DemoAlert extends MIDlet{ private Display disp; private Alert alt; public DemoAlert(){ disp = Display.getDisplay(this); }

  30. public void startApp(){ alt = new Alert("Demo Alert", "Ini Contoh Pesan", null, AlertType.CONFIRMATION); alt.setTimeout(5000); disp.setCurrent(alt); } public void pauseApp(){} public void destroyApp(boolean unconditional){} }

  31. Aplikasi Demo Alert 2 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.Alert; public class DemoAlert extends MIDlet{ private Display disp; private Alert alt; private Form frm; public DemoAlert(){ disp = Display.getDisplay(this); }

  32. public void startApp(){ frm = new Form("Tampil Setelah Alert"); frm.append("Form ini ditampilkan setelah Alert ditutup"); alt = new Alert("Demo Alert", "Ini Contoh Pesan", null, AlertType.CONFIRMATION); alt.setTimeout(Alert.FOREVER); disp.setCurrent(alt, frm); } public void pauseApp(){} public void destroyApp(boolean unconditional){} }

  33. Memainkan Bunyi • MIDP tidak memiliki API untuk memainkan sembarang bunyi, tapi dimungkinkan untuk membuat bunyi menggunakan metode pada AlertType • Metode pada AlertType memiliki sebuah metode public yang memainkan bunyi: • public boolean playSound(Display display); • Dimana display adalah objek Display yang dihubungkan dengan MIDlet.

  34. Kode berikut meminta perangkat untuk memainkan suara yang berhubungan dengan ALARM: • AlertType.ALARM.playSound(Display.getDisplay(this)); • Perangkat tidak diharuskan untuk memainkan bunyi atau membangkitkan bunyi yang berbeda untuk setiap AlertType • Jika metode playSound() dapat memainkan bunyi, maka akan mengembalikan nilai true

  35. Aplikasi Demo Alert 3 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class DemoSound extends MIDlet{ private Display disp; private Alert alt; public DemoSound(){ disp = Display.getDisplay(this); }

  36. public void startApp(){ alt = new Alert("Demo Sound"); alt.setType(AlertType.ALARM); alt.setString("Tes Telinga"); disp.setCurrent(alt); AlertType.ALARM.playSound(disp); } public void pauseApp(){} public void destroyApp(boolean unconditional){} }

  37. Minggu depan KUIS !!!

  38. Tugas 3 • Buatlah sebuah aplikasi MIDlet yang memiliki 5 buah command: • NIM  tampilkan NIM pada TextBox • Nama  tampilkan Nama pada TextBox • Alamat  tampilkan Alamat pada TextBox • Pesan  tampilkan sembarang pesan pada Alert selama 20 detik dan menggunakan bunyi • Keluar  keluar dari MIDlet • Di-upload paling lambat 2 minggu depan

More Related