AlarmMIDlet.java Source code

Java tutorial

Introduction

Here is the source code for AlarmMIDlet.java

Source

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