Java tutorial
import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.DateField; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.midlet.MIDlet; public class AlarmMIDlet extends MIDlet implements ItemStateListener, CommandListener { private Command alarmCommand = new Command("alarm", Command.SCREEN, 1); private Command resetCommand = new Command("Reset", Command.SCREEN, 1); private Command exitCommand = new Command("Exit", Command.EXIT, 1); private Display display; private DateField alarmTimeSetting; private Form aForm = new Form("Alarm Setting"); private int dateIndex; private Date currentTime = new Date(); private Timer aTimer; private boolean dateOK = false; public AlarmMIDlet() { display = Display.getDisplay(this); alarmTimeSetting = new DateField("", DateField.DATE_TIME); alarmTimeSetting.setDate(currentTime); dateIndex = aForm.append(alarmTimeSetting); aForm.addCommand(alarmCommand); aForm.addCommand(resetCommand); aForm.addCommand(exitCommand); aForm.setCommandListener(this); aForm.setItemStateListener(this); } public void startApp() { display.setCurrent(aForm); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void itemStateChanged(Item item) { if (item == alarmTimeSetting) { if (alarmTimeSetting.getDate().getTime() < currentTime.getTime()) dateOK = false; else dateOK = true; } } public void commandAction(Command c, Displayable s) { if (c == alarmCommand) { if (dateOK == false) { Alert aAlert = new Alert("Cannot set", "Warning", null, null); aAlert.setTimeout(Alert.FOREVER); aAlert.setType(AlertType.ERROR); display.setCurrent(aAlert); } else { aTimer = new Timer(); alarmTimerTask aTimerTask = new alarmTimerTask(); long amount = alarmTimeSetting.getDate().getTime() - currentTime.getTime(); aTimer.schedule(aTimerTask, amount); aForm.removeCommand(alarmCommand); aForm.removeCommand(resetCommand); aForm.delete(dateIndex); aForm.setTitle("Waiting...."); } } else if (c == resetCommand) { alarmTimeSetting.setDate(currentTime = new Date()); } else if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } } class alarmTimerTask extends TimerTask { public final void run() { Alert aAlert = new Alert("Alert!"); aAlert.setTimeout(Alert.FOREVER); aAlert.setType(AlertType.ALARM); AlertType.ERROR.playSound(display); display.setCurrent(aAlert); cancel(); } } }