1 / 63

Introduction to J2ME

Introduction to J2ME. Java 2 Platform Micro Edition (J2ME). Java platform for small devices A subset of J2SE Released mid June 1999 Target devices: Two-way pagers Mobile phones, smart phones PDAs (inc PocketPCs) TVs, VCRs, CD players Almost every mobile phone support J2ME. J2ME Phones.

Télécharger la présentation

Introduction to J2ME

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to J2ME

  2. Java 2 Platform Micro Edition (J2ME) • Java platform for small devices • A subset of J2SE • Released mid June 1999 • Target devices: • Two-way pagers • Mobile phones, smart phones • PDAs (inc PocketPCs) • TVs, VCRs, CD players • Almost every mobile phone support J2ME

  3. J2ME Phones

  4. 3 Java Platforms Java 2 Platform Java2 Standard Edition (J2SE) Java2 Enterprise Edition (J2EE) Java2 Micro Edition (J2ME) Standard desktop & Workstation Applications Heavy duty server systems Small & memory Constrained devices

  5. J2ME Architecture • To increase the flexibility of design, the J2ME consists of two distinct layers: Configurations and Profiles • Configuration • Defines the minimum Java technology for a broad range of devices with similar capabilities • Profile • Provides capabilities, on top of configuration, fora specific device type

  6. J2ME Architecture • Two types of J2ME configurations • Connected Device Configuration • Connected Limited Device Configuration J2ME Profile Profile Configuration CDC, or CLDC J2ME Libraries Java Virtual Machine

  7. CLDC 160 Kbytes to 512 Kbytes of total memory available 16-bit or 32-bit processor Low power consumption and often operating with battery power Connectivity with limited bandwidth. CDC 2Mbytes or more memory for Java platform 32-bit processor High bandwidth network connection, most often using TCP/IP CLDC vs CDC

  8. CLDC

  9. Mobile Information Device Profile (MIDP) • Is a set of APIs that allow developers to control mobile device-specific problems • i.e. user interfaces, local storage and client application lifecycles etc. • MIDlets minimum requirements • 96 x 54 pixels mono screen • two-way wireless network • input device (i.e. keypad) • 128 KB for CLDC/MIDP class and another 32 KB for the KVM • Midlets are the most important and popular applications in the J2ME family.

  10. MIDP

  11. Building J2ME Apps- Tool • We will use Sun Java Wireless Toolkit 2.x for CLDC (The newest version is 2.5.2 in Jan 2008) which can be downloaded from http://java.sun.com/j2me/download.html

  12. J2ME Wireless Toolkit Demo • Launch the Wireless Toolkit: • Start > Programs > Sun Java(TM) Wireless Toolkit 2.5.2 for CLDC • WTK already includes a set of demo programs ready to run.

  13. J2ME Wireless Toolkit Demo • Select menu item File > Open Project ... • Select UIDemo and click Open Project. • The projects can be used as the templates of your applications.

  14. J2ME Wireless Toolkit Demo • Click the Build and then the Run buttons.

  15. J2ME Wireless Toolkit Demo • The main menu screen is shown up. You can choose a program and select Launch to start the program.

  16. MIDlet Programming • Any MIDP application must extend MIDlet • This is the MIDP equivalent of an applet, where starting/stopping is under the control of the environment • Like Java applets, MIDlets have an application life cycle while running on a mobile device.

  17. MIDlet Transition States • Specifically, a MIDlet can be in one of three states as shown: Why do we need a Paused state?

  18. Midlet Skeleton Note that startApp(), pauseApp() and destroyApp() are abstract methods. You Midlet program must override these 3 methods even though you are not doing anything in it. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MyApp extends MIDlet { public void startApp() { // start up code } public void pauseApp() { // we aren't showing any more } public void destroyApp(boolean unconditional) { // clean up } }

  19. Two Level API • There are two levels of the API • the high and low-level API. • High-Level Provides input elements such as, • text fields, choices, and form • Low-level is for drawing on Canvases and capturing keyed events • All MIDlet applications need to import the necessary midlet and lcdui packages: • import javax.microedition.midlet.*; • import javax.microedition.lcdui.*;

  20. Displaying Objects • High-level Screens have a base class called Displayable. • To show something on a MIDP device, you need to obtain the device’s display • javax.microedition.lcdui.Display class. • This Display class is the one and only display manager for each active MIDlet and provides information about the device’s display capability. • Subclassed Displayable classes will fill the whole screen

  21. Displaying Objects • To show a Displayable object you must use the setCurrent() method on the Display object. Form mainForm = new Form ("First Program "); Display display = Display.getDisplay(this); display.setCurrent (mainForm); Note that Form is a Displayable subclass.

  22. First Example - HelloWorld import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorld extends MIDlet { public HelloWorld() { } public void startApp() { Form form = new Form( "First Program" ); form.append( "Hello World" ); Display.getDisplay(this).setCurrent( form ); } public void pauseApp() { } public void destroyApp( boolean unconditional ) { } }

  23. Building the MIDlet • After pressing the Create Project Button, a directory tree will be created for the project:

  24. Building the MIDlet • Use TextPad to create a source file HelloWorld.java and save it under the directory src.

  25. Building and Run the MIDlet • Click the Build and then the Run buttons.

  26. How can the program exit? • The program can not exit unless you close the emulator. • To provide a way to exit the program, you need to use Commands. • A command is like a button, it has a title, like "OK" or "Cancel," and your application can respond appropriately when the user invokes the command.

  27. Event Handling with Commands • Displayable, the parent of all screen displays, supports Commands. • The device determines how the commands are shown on the screen or invoked by user. • Every Displayable keeps a list of its Commands. You can add and remove Commands using the following methods: • public void addCommand(Command cmd) • public void removeCommand(Command cmd)

  28. Command Objects • In J2ME, commands are commonly represented with soft-buttons on the device. The following diagram shows two Command objects, one with the label "Exit" and one with label "View." soft-buttons

  29. Command Objects • If there are too many commands to be shown on the display, a device will create a menu to hold multiple commands. The following diagram shows how this might look.

  30. Use Command objects • The basic steps to process events with a Command object are as follows: • Create a Command object. • Add the Command to a Form (or other GUI objects TextBox, List, or Canvas). • Create and set a listener for the Form. • Upon detection of an event, the listener will call the method commandAction().

  31. Command Meaning Create a Command BACK returns to the previous screen. CANCEL standard negative answer to a dialog EXIT for exiting from the application. HELP a request for on-line help. ITEM specific to the items of the Screen or the elements of a Choice. OK standard positive answer to a dialog SCREEN an application-defined command STOP A command that will stop some currently running process, operation, etc. • To create a Command, you needto supply a label, a type, and a priority. • The type is used to signify a commonly used command. It helps device to arrange the commands.

  32. Create a Command • To create a standard OK command, for example, you would do this: Command c = new Command("OK", Command.OK, 0); • To create a command specific to your application, you might do this: Command c = new Command( "Launch", Command.SCREEN, 0); label type priority

  33. Priority and Long Label • Every command has a priority. • Lower numbers indicate a higher priority. • If you add a command with priority 0, then several more with priority 1, the priority 0 command will show up on the screen directly. The other commands will most likely end up in a secondary menu. • MIDP also supports for long labels on commands. • You can create a command with a short and long label like this: Command c = new Command("Run", "Run simulation", Command.SCREEN, 0); • The device decides which label it will use based on the available screen space and the size of the labels.

  34. Responding to Commands • Commands show up on the screen, but nothing happens automatically when a user invokes a command. • You need to write an object called a listenerwhich will be called when the user invokes any command in a Displayable. • The listener is an object that implements the CommandListener interface. • To register the listener with a Displayable, use the following method: • public void setListener(CommandListener l) • Note it is one Listener per Displayable, NOT one Listener per one Command.

  35. Example import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Commander extends MIDlet implements CommandListener { public void startApp() { Displayable d = new Form( "Test Command" ); Command c = new Command("Exit", Command.EXIT, 0); d.addCommand(c); d.setCommandListener(this); Display.getDisplay(this).setCurrent(d); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { notifyDestroyed(); } } Abstract method of CommandListener. Will be called when any command in the Form is selected.

  36. Another Command Example (Two Forms) Launch Exit 2nd Form Exit Go to First Form

  37. Another Command Example (Two Forms) import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class Commander2 extends MIDletimplements CommandListener { Display display = null; Form f1 = null; Form f2 = null; // command Command firstFormCommand = new Command("1st Form", "Go to First Form", Command.SCREEN, 0); Command secondFormCommand = new Command("2nd Form", "Go to Second Form", Command.SCREEN, 0); Command exitCommand = new Command("Exit", Command.EXIT, 1);

  38. Another Command Example (Two Forms) public void startApp() { display = Display.getDisplay(this); f1 = new Form( "Form 1" ); f1.append( "This is Form No. 1" ); f1.addCommand(secondFormCommand); f1.addCommand(exitCommand); f1.setCommandListener(this); f2 = new Form( "Form 2" ); f2.append( "This is Form No. 2" ); f2.addCommand(firstFormCommand); f2.addCommand(exitCommand); f2.setCommandListener(this); display.setCurrent( f1 ); }

  39. Another Command Example (Two Forms) public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable d) { String label = c.getLabel(); if (label.equals("Exit")) { notifyDestroyed(); } else if (label.equals("1st Form")) { Display.getDisplay(this).setCurrent( f1 ); } else { Display.getDisplay(this).setCurrent( f2 ); } } }

  40. Simple Debugging • System.out.printand System.out.printlncan be used for debugging. • When run in the simulator, the output is put on the console, not the phone. public void commandAction(Command c, Displayable d) { String label = c.getLabel(); if (label.equals("Exit")) { notifyDestroyed(); } else if (label.equals("1st Form")) { System.out.println("1st Form is called"); display.setCurrent( f1 ); } else { System.out.println("2nd Form is called"); display.setCurrent( f2 ); }

  41. J2ME User Interface I

  42. Major classes in the lcdui package To be discussed in this lecture

  43. TextBox • The simplest type of screen is the TextBox. • TextBox allows the user to enter a string. • Text input is a difficult task on mobile phones. Many devices only have a numeric keypad, so entering a single character is a matter of one, two, three or four button presses. • A good MIDlet requires minimal user input. an email TextBox

  44. TextBox • A TextBox is created by specifying four parameters: public TextBox(String title, String text, int maxSize, int constraints) • The title is used as the screen title • The text and maxSize determine the initial text and maximum size of the text box. • Theconstraintsare used to restrict the user's input. • ANY: allows any type of input. • NUMERIC: restricts the input to integers. • DECIMAL: allows numbers with fractional parts. • PHONENUMBER: requires a telephone number. • EMAILADDR: input must be an e-mail address. • URL: input must be a web address.

  45. TextBox Constraints • The devices don't allow invalid input; for example, a NUMERIC TextBox doesn't allow you to enter alphabetic characters. • Constraints may be combined with the flags listed below. • Constraints limit the behavior of users, while flags define the behavior of the TextBox. • The available flags are: PASSWORD: characters are not shown when entered; generally, they are represented by asterisks. UNEDITABLE: indicates text that cannot be edited.

  46. TextBox Flags SENSITIVE: indicates that text should not be stored. Some input schemes store input from the user for later use in autocompletion. This flag indicates that the text should not be saved or cached. NON_PREDICTIVE: indicates that you are expecting the user to enter text that any text-predicting input scheme will probably not be able to guess. For example, if you're expecting the user to enter an order number like Z51002S, you would use this flag to tell the input scheme to not bother trying to predict the input. INITIAL_CAPS_WORD: is used for input where each word should be capitalized. INITIAL_CAPS_SENTENCE indicates input where the first character of each sentence should be capitalized. • NOT all of these settings may be functional in all devices.

  47. TextBox Flags • The flags may be combined with any of the other constraints using the OR operator ( | ). • For example, to create a TextBox that asks the user to enter a number password, you would do something like this: • Displayable d = new TextBox( "PIN", "", 8, TextField.NUMERIC | TextField.PASSWORD);

More Related