Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lab 2: J2ME: Java 2 Micro Edition (Writing Programs for Mobile Phones using Java) Luis F. G. Sarmenta draft 3/13/2008 MIT D-Lab ICT4D.

Similar presentations


Presentation on theme: "Lab 2: J2ME: Java 2 Micro Edition (Writing Programs for Mobile Phones using Java) Luis F. G. Sarmenta draft 3/13/2008 MIT D-Lab ICT4D."— Presentation transcript:

1 Lab 2: J2ME: Java 2 Micro Edition (Writing Programs for Mobile Phones using Java) Luis F. G. Sarmenta draft 3/13/2008 MIT D-Lab ICT4D

2 D-Lab ICT for Development Lab 2: SMS Services Slide 2 Recap: Mobile Phone Capabilities, Apps SMS (Text Messaging) –based services –send text commands, receive info –receive alerts and subscriptions MMS (Multimedia Messaging) –based services –send and receive multimedia to/from server J2ME (Java 2 Micro Edition) applications –programs running on the phone –e.g., games Internet/Web services –via WAP (limited) and/or GPRS (dialup-speed connection) –via 3G (broadband speed connection) Location-based services –services that make use of location of users Micropayment applications –ability to send/transfer cellphone credits via SMS –leads to cash-less, credit-card less, electronic payment mechanisms

3 Overview

4 D-Lab ICT for Development Lab 2: SMS Services Slide 4 What is J2ME for? Writing Programs that run on the phone –no need to be connected online –uses processor and interface of phone Applications –Games for fun, but can be educational –Calculation / Computation tools e.g., medical calculators, etc. –Provide a better user interface to a service e.g., Maps for mobile (Google, Microsoft, et al) can be useful for data forms

5 D-Lab ICT for Development Lab 2: SMS Services Slide 5 What J2ME lets you do Computation / logic –general-purpose language –limited only by processor speed and memory Graphics –including 3D on new phones Connectivity –SMS, MMS, Bluetooth, HTTP Other Features –NFC/RFID, Location, etc. “Write Once Run Anywhere” –… IF you write your program well, AND your device supports all optional features you use

6 D-Lab ICT for Development Lab 2: SMS Services Slide 6 Development or Free Use –via Bluetooth, cable, or infrared –“free” download over the web via GPRS/3G download the jad file first, which makes phone download the jar file Note: you may pay traffic cost Commercial deployment –packaged with phone –download from the MNO –download from a software vendor/aggregator’s web site –request by SMS –(all of these usually require network connectivity, but may not charge you traffic cost) Deployment and Business Model

7 J2ME Application Development

8 D-Lab ICT for Development Lab 2: SMS Services Slide 8 References Book (Highly Recommended!) –Li and Knudsen. Beginning J2ME: From Novice to Professional, Third Edition. Published by Apress. (http://www.apress.com/book/view/1590594797)http://www.apress.com/book/view/1590594797 Examples –The Sun Wireless Toolkit has many examples! –See also http://java.sun.com/javame/reference/ Lectures –http://eprom.mit.edu/education.htmlhttp://eprom.mit.edu/education.html

9 D-Lab ICT for Development Lab 2: SMS Services Slide 9 Tools Java Sun Wireless Toolkit Eclipse EclipseME

10 D-Lab ICT for Development Lab 2: SMS Services Slide 10 Mobile Phone for Our Labs (Thanks to Nokia Research Center Cambridge!) N82 and N95 –camera, 3G, GPS, TV out E61i –QWERTY keyboard 6131 NFC –mid-range phone with NFC (contactless RFID) reader N810 –Internet tablet (not a phone) –hi-res screen, GPS, camera, QWERTY, etc. 2610 –low-end phone –only $9.99 for an official refurb unit, no contract!

11 D-Lab ICT for Development Lab 2: SMS Services Slide 11 Why High-End Phones? You can always simulate a low-end phone with a high- end phone … but not the other way around For some projects, using high-end phones is OK, since only a few people (e.g., health workers) need to have these Also … prices will inevitably go down in the future In any case, we will encourage designing solutions that have the broadest impact –e.g., SMS-based services and platform-independent J2ME

12 Basics from MIT AITI lecture in Kenya by Mike Gordon (MIT) Summer 2007

13 D-Lab ICT for Development Lab 2: SMS Services Slide 13 Compilation for J2ME Extra steps versus desktop Java: –Compilation using Java compiler Must include the J2ME Java libraries –Pre-verification of bytecode –Package the classes application for deployment Create a jar archive of the class files All this is done for you in the Java Wireless Toolkit

14 D-Lab ICT for Development Lab 2: SMS Services Slide 14 Terminology Soft Buttons Select (OK) Button Navigation (Arrow) Buttons

15 D-Lab ICT for Development Lab 2: SMS Services Slide 15 CLDC/MIDP Applications All cell phone applications inherit from the MIDlet class –javax.microedition.midlet.MIDlet The MIDlet class defines 3 abstract methods that the cell phone app must override: –protected abstract void startApp(); –protected abstract void pauseApp(); –protected abstract void destroyApp(boolean unconditional);

16 D-Lab ICT for Development Lab 2: SMS Services Slide 16 MIDlets These methods are called by the J2ME runtime system (interpreter) on your phone. –startApp(), when application is started –pauseApp(), when application is paused –destroyApp(boolean) when application is exited

17 D-Lab ICT for Development Lab 2: SMS Services Slide 17 Life Cycle of a MIDlet Paused ActiveDestroyed

18 D-Lab ICT for Development Lab 2: SMS Services Slide 18 Differences Between J2SE and CLDC/MIDP No floating point (before CLDC 1.1) System.out.print/println don’t do anything on real phone Subset of java.lang –Limited implementation of many classes Very limited java.util / java.io Make sure you are reading the JavaDoc for the J2ME MIDP when you are developing!

19 D-Lab ICT for Development Lab 2: SMS Services Slide 19 The MIDlet Philosophy Abstraction: –Specify the user interface in abstract terms –Just specify the components to add –A limited set of predefined components –Let the MIDP implementation decide on the placement and appearance Example –add a “done” command somewhere on the screen

20 D-Lab ICT for Development Lab 2: SMS Services Slide 20 The MIDlet Philosophy The device’s display is represented by an object of the Display class –Think of it as an easel Objects that can be added to a Display are subclasses of Displayable –Canvas on the easel MIDlets change the display by calling setCurrent(Displayable) in Display

21 D-Lab ICT for Development Lab 2: SMS Services Slide 21 The MIDlet Philosophy 1.Show a Displayable with something on it 2.Wait for input from user 3.Decide what Displayable to show next and what should be on this Displayable. 4.Go to 1.

22 D-Lab ICT for Development Lab 2: SMS Services Slide 22 Example Application: ToDoList

23 D-Lab ICT for Development Lab 2: SMS Services Slide 23 The Displayable Hierarchy Displayable Screen Alert List Form TextBox Canvas The Screen sub-classes are abstract, meaning it is up the MIDP implementation to decided on their appearance All these classes are defined in javax.microedition.lcdui

24 D-Lab ICT for Development Lab 2: SMS Services Slide 24 Commands A command is something the user can invoke We don’t really care how it is shown on the screen Example: –Command c = new Command(“OK”, Command.OK, 0); You can add commands to a Displayable using: –public void addCommand(Command) Commands

25 D-Lab ICT for Development Lab 2: SMS Services Slide 25 Responding to Command Events When a Command is invoked by the user, a method is called to service the command The exact method is: public void commandAction( Command c, Displayable d) c is the Command invoked and d is the Displayable the Command was added to.

26 D-Lab ICT for Development Lab 2: SMS Services Slide 26 Responding to Command Events We need to tell the Displayable the object in which to call commandAction() Two Steps: 1.The class of the object must implement the interface CommandListener CommandListener defines commandAction() 2.You tell the Displayable which object by calling setCommandListener(CommandListener) on the Displayable

27 D-Lab ICT for Development Lab 2: SMS Services Slide 27 Example import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class HelloWorld extends MIDlet implements CommandListener { private static Command CMD_EXIT = new Command("Exit", Command.EXIT, 0); private static Command CMD_NEXT = new Command("Next", Command.OK, 0); private TextBox textBox1; private TextBox textBox2;

28 D-Lab ICT for Development Lab 2: SMS Services Slide 28 Example public void startApp() { textBox1 = new TextBox("TextBox1", "The first Displayable", 30, TextField.ANY); textBox1.addCommand(CMD_NEXT); textBox1.setCommandListener(this); textBox2 = new TextBox("TextBox2", "The second Displayable", 30, TextField.ANY); textBox2.addCommand(CMD_EXIT); textBox2.setCommandListener(this); Display.getDisplay(this).setCurrent(textBox1); }

29 D-Lab ICT for Development Lab 2: SMS Services Slide 29 Example public void commandAction(Command c, Displayable d) { if (d == textBox1 && c == CMD_NEXT) Display.getDisplay(this).setCurrent(textBox2); else if (d == textBox2 && c == CMD_EXIT) notifyDestroyed(); } public void pauseApp() { } public void destroyApp(boolean u) { }

30 D-Lab ICT for Development Lab 2: SMS Services Slide 30 Example Run

31 Forms A form includes collection of UI controls called Items public Form(String title) public Form(String title,Item[] items) public int append() public void set(int index,Item item) public void delete(int index) public void deleteAll() public int size() public Item get(int index)

32 Forms example Form form = new Form(“Form Title”); StringItem strItem = new StringItem(“Label:”, “Value”); form.append(strItem);

33 Forms - Items String, textfield, image Items, datefield Choice Group – similar to Lists before events and item changes as well Can create custom items to use on your own and now you can build up almost any type of UI component to make your needs

34 Example

35 D-Lab ICT for Development Lab 2: SMS Services Slide 35 Example: Form and SMS import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class Hello extends MIDlet implements CommandListener { private static Command CMD_EXIT = new Command("Exit", Command.EXIT, 0); private static Command CMD_OK = new Command("OK", Command.OK, 0); private Form form; private TextField textField; public Hello() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { form = new Form(""); textField = new TextField("Name", "", 20, TextField.ANY); form.append(textField); form.addCommand(CMD_EXIT); form.addCommand(CMD_OK); form.setCommandListener(this); Display.getDisplay(this).setCurrent(form); } public void okPressed() { SMSLibrary.sendShortMessage("Hello " + textField.getString(), "6174606583"); } public void commandAction(Command c, Displayable d) { if (c == CMD_OK) { okPressed(); } else if (c == CMD_EXIT) { notifyDestroyed(); }

36 D-Lab ICT for Development Lab 2: SMS Services Slide 36 Some Notes Don’t forget to add the Midlet class file to the list of Midlets in the jad Make sure Java Compiler is set to generate 1.1 code

37 J2ME Basic GUI Programming from MIT AITI lecture in Kenya by Mike Gordon (MIT) Summer 2007

38 Graphics

39 Other Features

40 D-Lab ICT for Development Lab 2: SMS Services Slide 40 SMS and Messaging API For simple sending, just use the SMSLibrary class provided for you See Knudsen book for more details and more advanced features –receiving SMS –sending and receiving MMS –binary SMS –etc.

41 D-Lab ICT for Development Lab 2: SMS Services Slide 41 NFC (Contactless) NFC – Near Field Communications –communicate with contactless / “RFID” devices Supported by Nokia 6131 NFC phone and a few others Reading Unique ID is simple You can also send more complex commands to the NFC Download Nokia 6131 NFC from forum.nokia.com Get NFC tags from Rich Fletcher

42 D-Lab ICT for Development Lab 2: SMS Services Slide 42 Other Features GUI Controls and Graphics Location Security Bluetooth Web etc. See Knudsen book for Bluetooth and Web access See Sun Wireless Toolkit Examples for other examples

43 D-Lab ICT for Development Lab 2: SMS Services Slide 43 Exercise Collect user’s input and send it via SMS to server –no need to receive the SMS via J2ME for now

44 J2ME Basic GUI Programming from MIT AITI lecture in Kenya by Mike Gordon (MIT) Summer 2007

45 J2ME GUI Idea: Use abstractions to support many different mobile devices, different screen sizes, colors, different input types Displayables –Alerts –Lists –Form –TextBox

46 Textbox allows the user to enter a String (zipcode,name,password) depending on input may be a tedious process public TextBox(String title, String text, int maxSize, int constraints) – title = screen title – text = initial text on screen – maxSize = maximum size of text box – constraints – restrict input

47 TextBox - Constraints Constrain the input characters –TextField.ANY – allows any type of input supported by the device –TextField.NUMERIC– restricts to only integers –TextField.DECIMAL– allows numbers with fractional parts –TextField.PHONENUMBER – requires a telephone number –TextField.EMAILADDR – requires an email address –TextField.URL – requires a web address

48 Text Box - Flags Flags define behaviour, opposed to restricting it –TextField.PASSWORD –TextField.UNEDITABLE –TextField.SENSITIVE –TextField.NON_PREDICTIVE –TextField.INITIAL_CAPS_WORD –TextField.INTIAL_CAPS_SENTENCE No Validation than use TextField.ANY and 0 for constraints parameter

49 Text Box - Flags Combine flags and constraints with | (or) Displayable d = new TextBox(“Email”,64,TextField.ANY | TextField.PASSWORD);

50 Alerts timed – certain amount of time – “Your transaction complete” modal – until user dismisses it – “are you sure you want to quit?” “exit without saving?” – alert types: ALARM, CONFIRMATION,ERROR,INF O, and WARNING

51 Alerts public Alert() or public Alert(String title, String alertText, Image alertImg, AlertType alertType) any or all parameters can be null – default timeout, but can change timeout length – Forever timeout means that it is modal

52 Alerts You can create an alert with: Alert alt = new Alert(“Sorry”, “I Am sorry Dave”, null, null); Set the timeout to 5 seconds by: alt.setTimeout(5000); Make it a modal alert by: alt.setTimeout(FOREVER);

53 Lists users select items (called elements) from choices Exclusive -Single Selection – ex. radio buttons Multiple – Multiple Selection – ex. check list Text String or image is used to represent each element

54 Lists Exclusive Multiple

55 Creating Lists public List(String title, int type) public List(String title, int type,String[] stringElements, Image[] imageElements)

56 Modifying Lists public void set(int elementNum, String stringPart, Image imagePart) public void insert(int elementNum, String stringPart, Image imagePart) public int append(String stringPart, Image imagePart)

57 Modifying Lists public String getString(int elementNum) public String getImage(int elementNum) public void delete(int elementNum) public void deleteAll() public boolean isSelected(int index) public int getSelectedIndex() public void setSelectedIndex(int index, boolean selected)

58 Forms A form includes collection of UI controls called Items public Form(String title) public Form(String title,Item[] items) public int append() public void set(int index,Item item) public void delete(int index) public void deleteAll() public int size() public Item get(int index)

59 Forms example Form form = new Form(“Form Title”); StringItem strItem = new StringItem(“Label:”, “Value”); form.append(strItem);

60 Forms - Items String, textfield, image Items, datefield Choice Group – similar to Lists before events and item changes as well Can create custom items to use on your own and now you can build up almost any type of UI component to make your needs

61 Form Layout Left to right, rows top to bottom items have labels, and can also have commands set size set layouts for individual items –setLayout(); getLayout(); –LAYOUT_LEFT, LAYOUT_CENTER....

62 Commands Command c = new Command(“OK”, Command.OK, 0); To Create a command, you need a name, type and also a priority. Ex: public void addCommand(Command cmd) public void removeCommand(Command cmd)

63 Command Types There are different types of commands available for you to use: Command.OK – Confirms a selction Command.CANCEL – Cancels pending changes Command.BACK – Moves the user back to a previous screen Command.STOP – Stop a running operation Command.HELP – Shows application Instructions Command.SCREEN – indicates generic type for specific application commands Command c = new Command("Launch", Command.SCREEN, 0);

64 J2ME GUI Resources Knudsen and Li. Beginning J2ME: From Novice to Professional, Third Edition. Apress. (http://www.apress.com/book/view/1590594797)http://www.apress.com/book/view/1590594797 http://www.onjava.com/pub/a/onjava/excerpt/wirelessjava_ch5/index1.html http://developers.sun.com/mobility/midp/articles/ui/ - Sun's J2ME GUI tutorialhttp://developers.sun.com/mobility/midp/articles/ui/ http://www.j2mepolish.org/ –A powerful dual-license open-source GUI Designer which may be useful for your own projects beyond this course


Download ppt "Lab 2: J2ME: Java 2 Micro Edition (Writing Programs for Mobile Phones using Java) Luis F. G. Sarmenta draft 3/13/2008 MIT D-Lab ICT4D."

Similar presentations


Ads by Google