midlet user interface (2)

38
MIDlet User Interface (2) As’ad Djamalilleil http://kampusku.uni.me [email protected]

Upload: jorden-kennedy

Post on 01-Jan-2016

71 views

Category:

Documents


0 download

DESCRIPTION

MIDlet User Interface (2). As’ad Djamalilleil http://kampusku.uni.me [email protected]. Class Command. Command adalah sebuah fitur pada Class Displayable, sehingga dapat ditambahkan pada user interface, bahkan yang menggunakan low-level API - PowerPoint PPT Presentation

TRANSCRIPT

MIDlet User Interface (2)

As’ad Djamalilleil

http://kampusku.uni.me

[email protected]

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

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

Tipe Arti

OK Menyatakan persetujuan oleh user terhadap operasi yang akan dilakukan. Ditempatkan di lokasi yang mudah terlihat

BACK Mengganti layar yang tampil dengan layar sebelumnyaCANCEL Membatalkan operasi sebelum dijalankan. Misalnya untuk

meminta konfirmasi atas proses yang tidak dapat dibalikSTOP Menghentikan operasi yang sedang berjalanEXIT Permintaan untuk menghentikan semua operasi dan aplikasi

dihentikanHELP Meminta bantuan secara umum atau sesuai konteksSCREEN Berhubungan dengan proses pada layar aktif, tetapi selain dari

kategori proses yang terdaftar di atasITEM Berhubungan dengan user interface tertentu

Parameter Tipe Command

• 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

• 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

• 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

Command exitCommand = new Command(

"Exit", Command.EXIT, 0);

form1.addCommand(exitCommand);

form2.addCommand(exitCommand);

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()

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

• 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

Aplikasi Demo Command 1import 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);

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);

}

public void commandAction(Command c, Displayable d) { if (c == KELUAR) { destroyApp(true); notifyDestroyed(); }elseif (c == OKE) {

System.out.println("Tombol oke ditekan"); }elseif (c == HAPUS) {

isian.setString(null); }else

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

public void startApp(){}

public void pauseApp(){ }

public void destroyApp(boolean unconditional){ }

}

• 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”

• 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()

• 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()

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

• 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

• 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

• Tipe-tipe yang tersedia adalah:AlertType.ALARMAlertType.CONFIRMATIONAlertType.ERRORAlertType.INFOAlertType.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

• 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:

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);

• 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();

• 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();

• 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

Aplikasi Demo Alert 1import 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); }

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){}

}

Aplikasi Demo Alert 2import 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); }

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){}

}

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.

• 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

Aplikasi Demo Alert 3import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class DemoSound extends MIDlet{ private Display disp; private Alert alt;

public DemoSound(){ disp = Display.getDisplay(this); }

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){}

}

Minggu depan KUIS !!!

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