ZombieDetector: Difference between revisions

From Mobile Application Design
Jump to navigationJump to search
No edit summary
 
m Protected "ZombieDetector" [edit=autoconfirmed:move=autoconfirmed]
 
(9 intermediate revisions by 8 users not shown)
Line 1: Line 1:
== Zombie Detector ==
=== Overview ===


=== Setup ===
=== Setup ===
Line 17: Line 17:
# Run your MIDlet
# Run your MIDlet


<pre>package src;
<pre>
 
import javax.microedition.midlet.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.*;
Line 146: Line 145:
return isZombie;
return isZombie;
}
}
}
}</pre>

Latest revision as of 21:09, 13 May 2007

Overview

Setup

  1. Create a new J2ME Midlet Suite in Eclipse by right-clicking in the Package Manager, selecting New -> Project -> J2ME Midlet Suite
  2. Call this ZombieDetector. Leave everything else as is.
  3. Right-click on your ZombieDetector project and select New -> Class
  4. Use src as your package and ZombieDetector as the class name. Click Finish.
  5. Open your new ZombieDetector class
  6. Cut and paste the code from below into your file. Save.
  7. Open up the ZombieDetector.jad file
  8. Click on the Midlets tab. Click Add.
  9. Write in ZombieDetector as the MIDlet name.
  10. Click in the button that appears in class. You may have to start typing Zombie in. It should find your class automatically. If nothing happens, try closing all the files down and opening them again.
  11. Right-click your project again, select Run As, then Run...
  12. Setup so that it looks something like this - run_dialog.png
  13. Run your MIDlet
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 * Zombie Detector
 * @author Michael Sharon
 * 
 * This program will allow a user to type in a sentence and detect if they are a zombie or not. 
 *
 * Notice that we're implementing the CommandListener and Runnable. Read up on those two classes in the API docs.
 * Runnable - http://uberthings.com/mobile/docs/midp1/java/lang/Runnable.html
 * CommandListenter - http://uberthings.com/mobile/docs/midp1/javax/microedition/lcdui/CommandListener.html
 */
public class ZombieDetector extends MIDlet implements CommandListener, Runnable {

	//Create our variables

	//Every MIDlet will always contain exactly one Display object
	//Display represents the device's display manager and input devices
	private Display mDisplay;

	private Command mExitCommand, mDetectCommand, mCancelCommand;

	//Setting up the Textbox and Progress Forms (like the example in class)
	private TextBox mSubmitBox;

	private Form mProgressForm;

	private StringItem mProgressString;

	//Field / Form style
	private TextField mSubmitField;

	private Form mDetectionForm;

	public ZombieDetector() {
		mExitCommand = new Command("Exit", Command.EXIT, 0);
		mDetectCommand = new Command("Detect", Command.SCREEN, 0);

		mSubmitBox = new TextBox("ZombieDetector", "Am I a Zombie?", 32, 0);
		mSubmitBox.addCommand(mExitCommand);
		mSubmitBox.addCommand(mDetectCommand);
		mSubmitBox.setCommandListener(this);

		mSubmitField = new TextField(
				"Type a few words below to check if you are a zombie:",
				"I am not a zombie.. honest..", 32, 0);
		mDetectionForm = new Form("Zombie Detector");
		mDetectionForm.addCommand(mExitCommand);
		mDetectionForm.addCommand(mDetectCommand);
		mDetectionForm.append(mSubmitField);
		mDetectionForm.setCommandListener(this);

		mProgressForm = new Form("Lookup progress");
		mProgressString = new StringItem(null, null);
		mProgressForm.append(mProgressString);
	}

	public void startApp() {
		mDisplay = Display.getDisplay(this);

		//uncomment the mSubmitbox line below to run it like the example in class
		//mDisplay.setCurrent(mSubmitBox);
		mDisplay.setCurrent(mDetectionForm);

	}

	public void pauseApp() {
	}

	public void destroyApp(boolean unconditional) {
	}

	//This is called whenever we select a command
	public void commandAction(Command c, Displayable s) {
		if (c == mExitCommand) {
			destroyApp(false);
			notifyDestroyed();
		} else if (c == mDetectCommand) {
			// Show the progress form.
			mDisplay.setCurrent(mProgressForm);
			// Kick off the thread to do the query.
			Thread t = new Thread(this);
			t.start();
		}
	}

	/*
	 * The run() method is automatically called when a new Thread is started. 
	 *
	 */
	public void run() {

		//uncomment the line below if you want use the TextBox
		//String word = mSubmitBox.getString();
		String word = mSubmitField.getString();
		//System.out.println is useful for debugging and sending things to the console. 
		System.out.println("Got the String - " + word);
		String result;

		result = checkForZombie(word);

		//Place the result into an Alert
		Alert results = new Alert("Result", result, null, null);
		results.setTimeout(Alert.FOREVER);

		//Display the Alert, followed by the next Displayable - in this case our Form or Textbox
		//Uncomment the line below to use the Textbox
		//mDisplay.setCurrent(results, mSubmitBox);
		mDisplay.setCurrent(results, mDetectionForm);
	}

	private String checkForZombie(String word) {
		String isZombie = null;
		int zombieCheck = 0;

		//Check if we're dealing with a zombie
		zombieCheck = word.indexOf("brain");

		if (zombieCheck == -1) {
			isZombie = "This is a live one. No zombies here.";
		} else {
			isZombie = "Eeek! Run for your lives!";
		}

		return isZombie;
	}
}