Java Tutorial/J2ME/Timer

Материал из Java эксперт
Версия от 08:00, 1 июня 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Alarm with Timer and Alert

   <source lang="java">

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.rumand; import javax.microedition.lcdui.rumandListener; 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();
   }
 }

}</source>





Fixed Rate Schedule MIDlet

   <source lang="java">

import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; public class FixedRateScheduleMIDlet extends MIDlet implements CommandListener {

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);
 private Display display;
 TextBox t= new TextBox("Time setting", "", 256, 0);
 private Timer aTimer= new Timer();
 private Date currentTime= new Date();
 private Calendar now = Calendar.getInstance();
 public FixedRateScheduleMIDlet() {
   display = Display.getDisplay(this);
   now.setTime(currentTime);
 }
 public void startApp() {
   ClockTimerTask aTimerTask = new ClockTimerTask();
   aTimer.schedule(aTimerTask, 1000, 1000);
   t.addCommand(exitCommand);
   t.setCommandListener(this);
   display.setCurrent(t);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command c, Displayable s) {
   if (c == exitCommand) {
     destroyApp(false);
     notifyDestroyed();
   }
 }
 class ClockTimerTask extends TimerTask {
   public final void run() {
     t.setString("" + now.get(Calendar.HOUR) + ":" + now.get(Calendar.MINUTE) + ":"
         + now.get(Calendar.SECOND) + ":");
     display.setCurrent(t);
   }
 }

}</source>





Simple Timer

   <source lang="java">

import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; public class SimpleTimerMIDlet extends MIDlet implements CommandListener {

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);
 private Command scheduleCommand = new Command("schedule", Command.SCREEN, 1);
 private TextBox aTextBox = new TextBox("Setting", "Content", 20, 0);
 public static String aMessage = "";
 Display display;
 private Timer aTimer;
 private SimpleTimerTask aTimerTask;
 public SimpleTimerMIDlet() {
   display = Display.getDisplay(this);
 }
 public void startApp() {
   aTextBox.addCommand(exitCommand);
   aTextBox.addCommand(scheduleCommand);
   aTextBox.setCommandListener(this);
   display.setCurrent(aTextBox);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
 public void commandAction(Command c, Displayable s) {
   if (c == scheduleCommand) {
     aTimer = new Timer();
     aTimerTask = new SimpleTimerTask();
     aTimer.schedule(aTimerTask, 500);
     aTextBox.setString(aMessage);
   } else if (c == exitCommand) {
     destroyApp(false);
     notifyDestroyed();
   }
 }

} class SimpleTimerTask extends TimerTask {

 public final void run() {
   System.out.println("Executing ....");
   cancel();
 }

}</source>