MOBILE COMPUTING LABORATORY - Department of … · 1 mobile computing laboratory list of...

29
1 MOBILE COMPUTING LABORATORY LIST OF EXPERIMENTS 1. ADDITION OF TWO NUMBERS USING WML 2. DESIGN A CALCULATOR USING WML 3. DESIGN OF CALENDAR USING J2ME 4. DESIGN OF TIMER TO SYSTEM TIME USING J2ME 5. DESIGN A QUIZ GAME USING J2ME 6. DESIGN A GAME USING J2ME (TIC TAC TOE) 7. ANIMATING AN IMAGE USING J2ME 8. DESIGN A PERSONAL PHONE BOOK 9. SIMULATON OF AUTHENTICATION TECHNIQUE 10. BROWSING THE INTERNET USING MOBILE PHONE SIMULATOR

Transcript of MOBILE COMPUTING LABORATORY - Department of … · 1 mobile computing laboratory list of...

1

MOBILE COMPUTING LABORATORY

LIST OF EXPERIMENTS

1. ADDITION OF TWO NUMBERS USING WML

2. DESIGN A CALCULATOR USING WML

3. DESIGN OF CALENDAR USING J2ME

4. DESIGN OF TIMER TO SYSTEM TIME USING J2ME

5. DESIGN A QUIZ GAME USING J2ME

6. DESIGN A GAME USING J2ME (TIC TAC TOE)

7. ANIMATING AN IMAGE USING J2ME

8. DESIGN A PERSONAL PHONE BOOK

9. SIMULATON OF AUTHENTICATION TECHNIQUE

10. BROWSING THE INTERNET USING MOBILE PHONE SIMULATOR

2

ADDITION OF TWO NUMBERS USING WML

PROGRAM:

add.wml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"

"http://www.wapforum.org/DTD/wml13.dtd">

<wml>

<card id="valid" title="Validate">

<p> Simple Calculator!

Enter first number:

<input name="num1" title="firstnum" format="N"/><br/>

Enter second number:

<input name="num2" title="secondnum" format="N"/><br/>

<do type="accept" label="Check">

<go href="add.wmlsc#add($(num1),$(num2))"/>

</do>

</p>

</card>

<card id="result" title="result">

<p> Number1+Number2 = $(res) <br/></p>

</card>

</wml>

add.wmls

extern function add(A,B) {

// enter your function body here

var aNum = WMLBrowser.getVar("num1");

var bNum = WMLBrowser.getVar("num2");

WMLBrowser.setVar("res",A+B);

WMLBrowser.go("add.wml#result");

}

3

DESIGN A CALCULATOR USING WML

PROGRAM:

Calc.wml

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="card1" title="Calculator" newcontext="true">

<p>

Value1: <br/><input format="N*M" name="amount1" title="First Amount:"/>

Operator : <br/><select name="operator" value="ADD" title="Operation:">

<option value="ADD">Addition</option>

<option value="SUB">Subtraction</option>

<option value="MULT">Multiplication</option>

<option value="DIV">Division</option>

</select>

Value2: <br/><input format="N*M" name="amount2" title="Second Amount:"/>

Result : = <b>$(answer)</b>

<do type="accept" label="Result">

<go href="calc.wmls#operation('answer',$(amount1),'$(operator)',$(amount2))"/>

</do>

</p>

</card>

</wml>

4

Calc.wmls

extern function operation(result,val1,operate,val2) {

var ans=0;

if (operate=='ADD')

{

ans = val1 + val2;

}

else if (operate=='SUB')

{

ans=val1 - val2;

}

else if (operate=='MULT')

{

ans=val1 * val2;

}

else

{

ans=val1 / val2;

}

WMLBrowser.setVar(result,ans);

WMLBrowser.refresh();

}

DESIGN OF CALENDAR USING J2ME

PROGRAM:

CalenderMIDlet.java

import javax.microedition.lcdui.*;

import javax.microedition.midlet.MIDlet;

import java.util.Date;

import java.util.TimeZone;

public class CalenderMIDlet extends MIDlet{

private Form form;

private Display display;

private DateField calender;

5

private static final int DATE = 0;

public CalenderMIDlet(){

calender = new DateField("Date In:", DateField.DATE, TimeZone.getTimeZone("GMT"));

}

public void startApp(){

display = Display.getDisplay(this);

Form form = new Form("Calender");

form.append(calender);

display.setCurrent(form);

}

public void pauseApp(){}

public void destroyApp(boolean destroy){

notifyDestroyed();

}}

6

DESIGN A TIMER TO SYSTEM TIME USING J2ME

PROGRAM:

DateAndTime.java

import java.util.*;

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class DateAndTime extends MIDlet implements CommandListener{

private Display disp;

private Date d;

Calendar c = Calendar.getInstance();

String time;

private DateField currentDate;

private Command start, exit;

private Form form;

private int index;

public DateAndTime(){

form = new Form("Data and Time");

d = new Date();

start = new Command("start", Command.SCREEN, 1);

exit = new Command("Exit", Command.EXIT, 0);

currentDate = new DateField("", DateField.DATE_TIME);

currentDate.setDate(d);

7

}

public void startApp(){

form.append("CURRENT TIME IS: ");

index = form.append(currentDate);

form.addCommand(start);

form.addCommand(exit);

form.setCommandListener(this);

disp = Display.getDisplay(this);

disp.setCurrent(form);

}

public void pauseApp(){}

public void destroyApp(boolean uncond){}

public void commandAction(Command cmd, Displayable s){

if (cmd == exit){

notifyDestroyed();

}else if (cmd == start){

d = new Date();

c.setTime(d);

time = c.get(Calendar.HOUR_OF_DAY) + ":" +c.get(Calendar.MINUTE)

+ ":" + c.get(Calendar.SECOND);

form.append("" + time);

8

form.append("\n");

} } }

DESIGN A QUIZ GAME USING J2ME

Program

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Form;

import javax.microedition.lcdui.TextField;

import javax.microedition.midlet.*;

public class quiz extends MIDlet implements CommandListener {

int score=0;

private Display display;

private Form inputpage;

String lastscore = (new Integer(score)).toString();

private TextField username;

private Command startgame;

//form1 intialize

private Form form1;

String q1 ="What is MN?\n";

private String q1ans1="1. a\n";

private String q1ans2="2. b\n";

private String q1ans3="3. All of the above\n";

private Command q1ans11;

private Command q1ans12;

private Command q1ans13;

//form2

private Form form2;

String q2 ="J2me course started by?\n";

private String q2ans1="1. a\n";

private String q2ans2="2. b\n";

private String q2ans3="3. None of the above\n";

private Command q2ans11;

private Command q2ans12;

private Command q2ans13;

//form3

private Form form3;

String q3 ="Mobile C Text Book Author\n";

private String q3ans1="1. a\n";

private String q3ans2="2. b\n";

private String q3ans3="3. None of the above\n";

9

private Command q3ans11;

private Command q3ans12;

private Command q3ans13;

//form4

private Form form4;

String q4 ="Which software is used to make javaME applications?\n";

private String q4ans1="1. Internetbeans\n";

private String q4ans2="2. Netbeans\n";

private String q4ans3="3. Nobeans\n";

private Command q4ans11;

private Command q4ans12;

private Command q4ans13;

//form5

private Form form5;

String q5 ="Best feature of GSM?\n";

private String q5ans1="1. Gifts\n";

private String q5ans2="2. Vidoe call\n";

private String q5ans3="3. None of above\n";

private Command q5ans11;

private Command q5ans12;

private Command q5ans13;

//form6

private Form form6;

String q6 ="Congrats \n";

public quiz (){

display = Display.getDisplay(this);

inputpage = new Form("username");

username =new TextField("Enter Your name;", "", 50, TextField.ANY);

inputpage.append(username);

startgame = new Command("Start game", 1, 1);

inputpage.addCommand(startgame);

inputpage.setCommandListener(this);

//form1 declaration

form1 = new Form("Welcome to 1st question");

q1ans11 = new Command("1", 1, 1);

q1ans12 = new Command("2", 1, 2);

q1ans13 = new Command("3", 1, 3);

form1.append(q1);

form1.append(q1ans1);

form1.append(q1ans2);

form1.append(q1ans3);

form1.addCommand(q1ans11);

form1.addCommand(q1ans12);

form1.addCommand(q1ans13);

form1.setCommandListener(this);

10

//form2

form2 = new Form("Welcome to 2nd question");

q2ans11 = new Command("1", 1, 1);

q2ans12 = new Command("2", 1, 2);

q2ans13 = new Command("3", 1, 3);

form2.append(q2);

form2.append(q2ans1);

form2.append(q2ans2);

form2.append(q2ans3);

form2.addCommand(q2ans11);

form2.addCommand(q2ans12);

form2.addCommand(q2ans13);

form2.setCommandListener(this);

//form3

form3 = new Form("Welcome to 3rd question");

q3ans11 = new Command("1", 1, 1);

q3ans12 = new Command("2", 1, 2);

q3ans13 = new Command("3", 1, 3);

form3.append(q3);

form3.append(q3ans1);

form3.append(q3ans2);

form3.append(q3ans3);

form3.addCommand(q3ans11);

form3.addCommand(q3ans12);

form3.addCommand(q3ans13);

form3.setCommandListener(this);

//form4

form4 = new Form("Welcome to 4th question");

q4ans11 = new Command("1", 1, 1);

q4ans12 = new Command("2", 1, 2);

q4ans13 = new Command("3", 1, 3);

form4.append(q4);

form4.append(q4ans1);

form4.append(q4ans2);

form4.append(q4ans3);

form4.addCommand(q4ans11);

form4.addCommand(q4ans12);

form4.addCommand(q4ans13);

form4.setCommandListener(this);

//form5

form5 = new Form("Welcome to 5th question");

q5ans11 = new Command("1", 1, 1);

q5ans12 = new Command("2", 1, 2);

q5ans13 = new Command("3", 1, 3);

form5.append(q5);

form5.append(q5ans1);

11

form5.append(q5ans2);

form5.append(q5ans3);

form5.addCommand(q5ans11);

form5.addCommand(q5ans12);

form5.addCommand(q5ans13);

form5.setCommandListener(this);

//form6

form6 = new Form("Congrats : ");

form6.append(q6);

}

public void startApp() {

display.setCurrent(inputpage);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

public void commandAction(Command c, Displayable d) {

//form1 actions

if (c==startgame)

{

score= score;

display.setCurrent(form1);

}

if (c==q1ans13 || c==q1ans12 || c==q1ans11)

{

if(c==q1ans13)

score= score+1;

display.setCurrent(form2);

}

if (c==q2ans11 || c==q2ans12 || c==q2ans13)

{

if (c==q2ans11)

score= score+1;

display.setCurrent(form3);

}

if (c==q3ans12 || c==q3ans13 || c==q3ans11)

{

if (c==q3ans12)

score= score+1;

display.setCurrent(form4);

12

}

if (c==q4ans12 || c==q4ans13 || c==q4ans11)

{

if (c==q4ans12)

score= score+1;

display.setCurrent(form5);

}

if (c==q5ans11 || c==q5ans12 || c==q5ans13)

{

if (c==q5ans11)

score=score+1;

String congrats="\nYour total points is:";

String us=username.getString();

String aa="\n\nwow you have scored 100%, you are genious..";

String aaa="\n\nyou have scored more than 60%.. you have greate IQ level ";

String aaaa="\n\nyou are in need to develope your IQ";

lastscore = (new Integer(score)).toString();

form6.append(us);

form6.append(congrats);

form6.append(lastscore);

if(score==5)

form6.append(aa);

else if(score>=3)

form6.append(aaa);

else

form6.append(aaaa);

display.setCurrent(form6);

}

}

}

DESIGN A GAME USING J2ME (TIC TAC TOE)

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class TicTacToe extends MIDlet implements CommandListener {

private Display theDisplay;

private TicTacToeCanvas canvas;

13

private String winner = "";

private boolean gameOver = false;

private int whoseturn = 0;

private char board[][] = { {'1' , '2' , '3'} ,

{'4' , '5' , '6'} ,

{'7' , '8' , '9'} };

static final Command exitCommand = new Command("Exit", Command.STOP, 1);

public TicTacToe()

{

theDisplay = Display.getDisplay(this);

}

class TicTacToeCanvas extends Canvas

{

TicTacToeCanvas()

{

}

public void paint(Graphics g)

{

int width = getWidth();

int height = getHeight();

g.setColor( 150, 150, 70 );

g.fillRect( 0, 0, width, height );

g.setColor( 255, 255, 255);

String r1 =" "+ board[0][0]+" "+board[0][1]+"

"+board[0][2]+"\n";

String r2 =" "+ board[1][0]+" "+board[1][1]+"

"+board[1][2]+"\n";

String r3 =" "+ board[2][0]+" "+board[2][1]+" "+board[2][2];

g.drawString("TIC TAC TOE",15,0, Graphics.LEFT|Graphics.TOP);

g.drawString(r1,25,50, Graphics.LEFT|Graphics.TOP);

g.drawString(r2,25,100, Graphics.LEFT|Graphics.TOP);

g.drawString(r3,25,150, Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",a,25,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",a,75,Graphics.LEFT|Graphics.TOP);

14

for(int a=25;a<=175;a++)

g.drawString("-",a,125,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",a,175,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",25,a,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",75,a,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",125,a,Graphics.LEFT|Graphics.TOP);

for(int a=25;a<=175;a++)

g.drawString("-",175,a,Graphics.LEFT|Graphics.TOP);

if (winner != "")

{

g.drawString("WINNER:"+winner,70,200,Graphics.LEFT|Graphics.TOP);

}

else

{

g.drawString("TURN:

Player"+(whoseturn+1),70,200,Graphics.LEFT|Graphics.TOP);

}

}

protected void keyPressed(int keyCode) {

if (keyCode >= 49 && keyCode <= 57 && !gameOver)

{

int x = 0, y = 0;

keyCode -= 49;

if (keyCode < 3)

{

x = keyCode;

y = 0;

}

else if (keyCode < 6)

{

x = keyCode-3;

y = 1;

}

else

{

x = keyCode-6;

y = 2;

}

15

if (board[y][x] != 'X' && board[y][x] != 'O')

{

if (whoseturn == 0)

board[y][x] = 'X';

else

board[y][x] = 'O';

whoseturn = 1-whoseturn;

checkForWinner();

canvas.repaint();

}

}

}

}

protected void startApp() throws MIDletStateChangeException

{

canvas = new TicTacToeCanvas();

canvas.addCommand(exitCommand);

canvas.setCommandListener(this) ;

theDisplay.setCurrent(canvas);

}

protected void pauseApp() { }

public void destroyApp(boolean unconditional)

{

}

public void commandAction(Command c, Displayable d)

{

if (c == exitCommand)

{

destroyApp(false);

notifyDestroyed();

}

}

16

private void checkForWinner()

{

int i,j;

int numXConsec = 0;

int numOConsec = 0;

boolean tie=true;

for (i=0; i<3; i++)

{

for (j=0; j<3; j++)

if (board[i][j] != 'X' || board[i][j] != 'O')

{

tie = false;

break;

}

}

if (tie)

{

GameOver(-1);

return;

}

for (i=0; i<3; i++)

{

numXConsec = numOConsec = 0;

for (j=0; j<3; j++)

{

if (board[i][j] == 'X')

numXConsec++;

else if (board[i][j] == 'O')

numOConsec++;

else

break;

}

if (numXConsec > 2)

{

GameOver(0);

return;

}

else if (numOConsec > 2)

{

GameOver(1);

17

return;

}

}

for (i=0; i<3; i++)

{

numXConsec = numOConsec = 0;

for (j=0; j<3; j++)

{

if (board[j][i] == 'X')

{

numXConsec++;

}

else if (board[j][i] == 'O')

numOConsec++;

else

break;

}

if (numXConsec > 2)

{

GameOver(0);

return;

}

else if (numOConsec > 2)

{

GameOver(1);

return;

}

}

if ( ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) &&

(board[2][2] == 'X')) ||

((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) &&

(board[2][0] == 'X')) )

{

GameOver(0);

return;

}

if ( ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) &&

(board[2][2] == 'O')) ||

((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) &&

(board[2][0] == 'O')) )

{

GameOver(1);

18

return;

}

}

private void GameOver(int p)

{

if (p == -1)

winner = "Tie!";

else if (p == 0)

winner = "Player 1!";

else

winner = "Player 2!";

gameOver = true;

}

}

ANIMATING AN IMAGE USING J2ME

PROGRAM:

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class SweepImageAnimation extends MIDlet {

public void startApp() {

final SweepCanvas sweeper = new SweepCanvas();

sweeper.start();

sweeper.addCommand(new Command("Exit", Command.EXIT, 0));

sweeper.setCommandListener(new CommandListener() {

public void commandAction(Command c, Displayable s) {

sweeper.stop();

notifyDestroyed();

}

});

19

Display.getDisplay(this).setCurrent(sweeper);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

}

class SweepCanvas extends Canvas implements Runnable {

private boolean mTrucking;

private int mTheta;

private int mBorder;

private int mDelay;

public SweepCanvas() {

mTheta = 0;

mBorder = 10;

mDelay = 50;

}

public void start() {

mTrucking = true;

Thread t = new Thread(this);

t.start();

}

public void stop() {

mTrucking = false;

}

public void paint(Graphics g) {

20

int width = getWidth();

int height = getHeight();

// Clear the Canvas.

g.setGrayScale(255);

g.fillRect(0, 0, width - 1, height - 1);

int x = mBorder;

int y = mBorder;

int w = width - mBorder * 2;

int h = height - mBorder * 2;

for (int i = 0; i < 8; i++) {

g.setGrayScale((8 - i) * 32 - 16);

g.fillArc(x, y, w, h, mTheta + i * 10, 10);

g.fillArc(x, y, w, h, (mTheta + 180) % 360 + i * 10, 10);

}

}

public void run() {

while (mTrucking) {

mTheta = (mTheta + 1) % 360;

repaint();

try { Thread.sleep(mDelay); }

catch (InterruptedException ie) {}

}

}

}

21

DESIGN A PERSONAL PHONE BOOK

Program

import javax.microedition.lcdui.Alert;

import javax.microedition.lcdui.Choice;

import javax.microedition.lcdui.ChoiceGroup;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Form;

import javax.microedition.lcdui.TextField;

import javax.microedition.midlet.MIDlet;

import javax.microedition.rms.RecordEnumeration;

import javax.microedition.rms.RecordStore;

import javax.microedition.rms.RecordStoreException;

import javax.microedition.rms.RecordStoreNotOpenException;

public class SearchContact extends MIDlet implements CommandListener {

private Display display;

private ChoiceGroup searchChoice;

private Form searchForm;

private TextField searchTxtField;

private Command exitCmd;

private Command addContactCmd;

private Form addContactForm;

private TextField nameTxtField;

private TextField numberTxtField;

22

private Command backCmd;

private Command saveCmd;

private String nameStr;

private String numberStr;

private Alert addAlert;

private RecordStore openRecStore;

public void startApp() {

display = Display.getDisplay(this);

searchForm = new Form("Search Contact");

searchTxtField = new TextField("Search Here", "", 30, TextField.ANY);

searchForm.append(searchTxtField);

searchChoice = new ChoiceGroup("",Choice.EXCLUSIVE);

searchForm.append(searchChoice);exitCmd = new Command("Exit", Command.EXIT, 7);

searchForm.addCommand(exitCmd);addContactCmd = new Command("Add", Command.OK,

4);

searchForm.addCommand(addContactCmd);

searchForm.setCommandListener(this);

display.setCurrent(searchForm);

addContactForm = new Form("Add Contacts");

nameTxtField = new TextField("Name", "", 80, TextField.ANY);

addContactForm.append(nameTxtField);

numberTxtField = new TextField("Number", "", 20, TextField.PHONENUMBER);

addContactForm.append(numberTxtField);

backCmd = new Command("Back", Command.BACK, 2);

addContactForm.addCommand(backCmd);

saveCmd = new Command("Save", Command.OK, 4);

addContactForm.addCommand(saveCmd);

23

addContactForm.setCommandListener(this);

try {

openRecStore = RecordStore.openRecordStore("Contacts", true);

} catch (RecordStoreException ex) {

ex.printStackTrace();

}

loadContacts();

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable d) {

if (c == exitCmd) {notifyDestroyed();

} else if (c == addContactCmd) {

nameTxtField.setString("");

numberTxtField.setString("");

display.setCurrent(addContactForm);

} else if (c == backCmd) {

searchTxtField.setString("");

display.setCurrent(searchForm);

} else if (c == saveCmd) {

nameStr = nameTxtField.getString();

numberStr = numberTxtField.getString();

String fullDetails = nameStr + "*" + numberStr;

addAlert = new Alert("Added to the Contacts");

loadContacts();

display.setCurrent(addAlert, searchForm);

24

searchTxtField.setString("");

byte[] byteArray = fullDetails.getBytes(); // String class

try {

openRecStore.addRecord(byteArray, 0, fullDetails.length());

} catch (RecordStoreException ex) {

ex.printStackTrace();

}loadContacts();

}

}

private void loadContacts() {

searchChoice.deleteAll();

try {

RecordEnumeration enuRec = openRecStore.enumerateRecords(null, null, true);

while (enuRec.hasNextElement()) {

try {

byte[] nextRec = enuRec.nextRecord();

String nextRecStr = new String(nextRec);

String takeName = nextRecStr.substring(0, nextRecStr.indexOf("*"));

String takeNumber = nextRecStr.substring(nextRecStr.indexOf("*") + 1,nextRecStr.length());

searchChoice.append(takeName, null);

} catch (RecordStoreException ex) {

ex.printStackTrace();

}

}

} catch (RecordStoreNotOpenException ex) {

ex.printStackTrace();

25

}

}

}

SIMULATON OF AUTHENTICATION TECHNIQUE

PROGRAM:

LoginExample.java

import javax.microedition.midlet.MIDlet;

import javax.microedition.lcdui.*;

public class LoginMidlet extends MIDlet implements CommandListener {

private Display display;

private TextField userName;

private TextField password;

private Form form;

private Command cancel;

private Command login;

public LoginMidlet() {

userName = new TextField("LoginID:", "", 10, TextField.ANY);

password = new TextField("Password:", "", 10, TextField.PASSWORD);

form = new Form("Sign in");

cancel = new Command("Cancel", Command.CANCEL, 2);

login = new Command("Login", Command.OK, 2);

}

26

public void startApp() {

display = Display.getDisplay(this);

form.append(userName);

form.append(password);

form.addCommand(cancel);

form.addCommand(login);

form.setCommandListener(this);

display.setCurrent(form);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

notifyDestroyed();

}

public void validateUser(String name, String password) {

if (name.equals("qm") && password.equals("j2")) {

menu();

} else {

tryAgain();

}

}

public void menu() {

27

List services = new List("Choose one", Choice.EXCLUSIVE);

services.append("Check Mail", null);

services.append("Compose", null);

services.append("Addresses", null);

services.append("Options", null);

services.append("Sign Out", null);

display.setCurrent(services);

}

public void tryAgain() {

Alert error = new Alert("Login Incorrect", "Please try again", null, AlertType.ERROR);

error.setTimeout(Alert.FOREVER);

userName.setString("");

password.setString("");

display.setCurrent(error, form);

}

public void commandAction(Command c, Displayable d) {

String label = c.getLabel();

if(label.equals("Cancel")) {

destroyApp(true);

} else if(label.equals("Login")) {

validateUser(userName.getString(), password.getString());

}

}

}

28

BROWSING THE INTERNET USING MOBILE PHONE SIMULATOR

29