45
Java 2 Micro Edition Разработване на приложения за мобилни телефони Пламен Желязов Eternity Logic

Java 2 Micro Edition Разработване на приложения за мобилни телефони

  • Upload
    emmy

  • View
    51

  • Download
    1

Embed Size (px)

DESCRIPTION

Пламен Желязов Eternity Logic. Java 2 Micro Edition Разработване на приложения за мобилни телефони. За какво ще говорим?. Какво е Java Какво e CLDC и MIDP Преглед на достъпни API Какво е Мидлет LCDUI – Класове и възможности Други важни класове Примерна програма. Какво е Java?. - PowerPoint PPT Presentation

Citation preview

Page 1: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Java 2 Micro EditionРазработване на приложения

за мобилни телефони

Пламен ЖелязовEternity Logic

Page 2: Java 2 Micro Edition Разработване на приложения за мобилни телефони

За какво ще говорим?

● Какво е Java

● Какво e CLDC и MIDP● Преглед на достъпни API● Какво е Мидлет● LCDUI – Класове и възможности● Други важни класове● Примерна програма

Page 3: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Какво е Java?

● Езикът Java

● Java editions– Standard Edition (J2SE)

– Enterprise Edition (J2EE)

– Micro Edition (J2ME)

● Java Community Process (JCP)– JSR – Java Specification Request

Page 4: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Структура на J2ME

● CDC – Connected Device Configuration

● CLDC – Connected Limited Device

Configuration

● Java Card Technology

Page 5: Java 2 Micro Edition Разработване на приложения за мобилни телефони

CLDC Technology (1/3)

● Connected Limited Device Configuration (CLDC); JSR 30, JSR 139

● Mobile Information Device Profile (MIDP);

JSR 37, JSR 118

● Information Module Profile, (IMP); JSR 195

Page 6: Java 2 Micro Edition Разработване на приложения за мобилни телефони

CLDC Technology (2/3)

● Java Technology for the Wireless Industry, (JTWI); JSR 185

● Mobile Media API (MMAPI); JSR 135

● File Connection and PIM API (JSR 75)

● Location API for J2ME; JSR 179

● SIP API for J2ME; JSR 180

Page 7: Java 2 Micro Edition Разработване на приложения за мобилни телефони

CLDC Technology (3/3)

● Security and Trust Services API for J2ME (SATA); JSR-177

● Mobile 3D Graphics; JSR-184

● J2ME Web Services APIs (WSA), JSR-172

● Bluetooth API JSR-82

● J2ME Content Handler API (CHAPI) JSR 211

Page 8: Java 2 Micro Edition Разработване на приложения за мобилни телефони

CLDC Версии

● CLDC 1.0 (JSR 30)– java.lang

– java.util

– java.io

– javax.microedition.io

● CLDC 1.1 (JSR 139)– floating point операции

– Поддръжка на weak reference

– Подобрения в нишките

Page 9: Java 2 Micro Edition Разработване на приложения за мобилни телефони

MIDP 1.0

● MIDP 1.0 (JSR 37)– javax.microedition.lcdui

– javax.microedition.lcdui.game

– javax.microedition.media

– javax.microedition.midlet

– javax.microedition.rms

Page 10: Java 2 Micro Edition Разработване на приложения за мобилни телефони

MIDP 2.0

● MIDP 2.0 (JSR 118)– Enhanced user interface

– Enhanced multimedia/gaming

– Better connectivity (unbound connections)

– OTA (over the air) provisioning

– Better security

Page 11: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Видове устройства

● MIDP 1.0 / CLDC 1.0– Nokia, Motorola, Siemens, LG, SE и други.

● MIDP 2.0 / CLDC 1.0– Новите устройства на Nokia ser. 40, Nokia ser.

60, Siemens 65x, Motorola, SE, и други.

● MIDP 2.0 / CLDC 1.1– Нови устройства от Nokia ser. 60, ser. 80, ser.

90, Siemens 65x, 75x, SE и други.

Page 12: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Optional Packages (1/2)

● Mobile Media API (MMAPI); JSR 135

● Mobile 3D Graphics; JSR-184

● J2ME Web Services APIs, (WSA); JSR 172

● Bluetooth API (JSR-82)

● Location API for J2ME; JSR 179

Page 13: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Optional Packages (2/2)

● SIP API for J2ME; JSR 180

● Security and Trust Services (SATSA); JSR-177

● File Connection and PIM API (JSR 75)

Page 14: Java 2 Micro Edition Разработване на приложения за мобилни телефони

API fragmentation

Проблемът:

Твърде много възможни комбинации:● Различни размери на екрана и брой цветове● Различни медийни формати ● Connectivity features (sms/ssl/udp)● Vendor specific API (Nokia, Siemens и др.)

Page 15: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Решение?

● Разработка на отделни версии на критичните сегменти код

● Използване на “условна компилация”

(j2mepolish, jpp и други).● Когато е възможно – използване на най-

ниска версия на API.

Page 16: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Java Technology for Wireless Industry:● Стандартизация на минимален набор от API с цел избягване на фрагментацията:

CLDC 1.0 (JSR 30) или CLDC 1.1 (JRS 139)MIDP 2.0 (JSR 118), WMA 1.1 (JSR 120), MMAPI (JSR 135)

Поддържа се от най-новите устройства на всички големи производители.

JTWI(JSR 185)

Page 17: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Какво е Midlet Suite

Приложение, написано според MIDP спецификацията :)

● Съдържа един или повече наследници на javax.microedition.midlet.MIDlet

● class файловете са преминали процес на верификация

● Class-файловете са пакетирани в JAR ● JAD файл с допълнителна информация

Page 18: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Жизнен цикъл на Midlet

Page 19: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Как изглежда кода?

import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;

public class HelloWorldMidlet extends MIDlet {

public HelloWorldMidlet() {super();

}

protected void startApp() throws MIDletStateChangeException {}

protected void pauseApp() {}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}}

Page 20: Java 2 Micro Edition Разработване на приложения за мобилни телефони

JADJava Application Descriptor

Съдържа информация за Midlet Suite

● Списък с мидлетите● Версия на CLDC и MIDP● Производител● Адрес за инсталация● Размер на JAR файла

Page 21: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Примерен JAD файл (1/2)

MIDlet-1: Hello World,/icon1.png,HelloWorldMidletMIDlet-2: Hello World

Canvas,/icon2.png,HelloWorldCanvasMIDlet-Name: Lecture Midlet SuiteMIDlet-Description: This is just DemoMIDlet-Jar-URL: http://eternity-logic.com/j2me/Lecture.jarMIDlet-Jar-Size: 5247MIDlet-Data-Size: 1024

MIDlet-Version: 1.0.0MIDlet-Vendor: Eternity LogicMicroEdition-Profile: MIDP-1.0MicroEdition-Configuration: CLDC-1.0

Page 22: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Примерен JAD файл (2/2)

MIDlet-Info-URL: http://eternity-logic.com/info/

MIDlet-Install-Notify: http://eternity-logic.com/midlet_install.jsp?name=HelloWorld

MIDlet-Delete-Notify: http://eternity-logic.com/midlet_uninstall.jsp?name=HelloWorld

MIDlet-Delete-Confirm: Are you shure?

MIDlet-Permissions: javax.microedition.io.Connector.http

Property1: Value1Property2: Value2

Page 23: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Преглед на LCDUI

➔ java.lang.Object➔ Displayable➔ Display➔ AlertType➔ Command➔ Font➔ Graphics➔ Image➔ Item➔ Ticker

➔ Displayable➔ Canvas➔ Screen

➔ Form➔ List➔ TextBox➔ Alert

➔ Item➔ ChoiceGroup➔ CustomItem➔ DateField➔ Gauge➔ ImageItem➔ Spacer➔ StringItem➔ TextField

javax.microedition.lcdui classes

➔ Choice• ChoiceGroup, List

➔ CommandListener➔ ItemCommandListener ➔ ItemStateListener

Interfaces

Page 24: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Hello World !

public class HelloWorldMidlet extends MIDlet implements CommandListener {

Form helloForm = new Form ("Demo");Command cmdExit = new Command ("Exit",Command.EXIT,0);

protected void startApp() throws MIDletStateChangeException {helloForm.append("Hello World!");helloForm.addCommand(cmdExit);helloForm.setCommandListener(this);Display.getDisplay(this).setCurrent(helloForm);

}

public void commandAction(Command cmd, Displayable displ) {

if (displ==helloForm && cmd==cmdExit) {Display.getDisplay(this).setCurrent(null);notifyDestroyed();

}}

}

Page 25: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът StringItem

mainForm.append("This is a simple label");item = new StringItem("This is a StringItem label: ",

"This is the StringItems text"); mainForm.append(item);

item = new StringItem("Short label: ", "text"); mainForm.append(item);

item = new StringItem("Hyper-Link ", "hyperlink", Item.HYPERLINK);

mainForm.append(item);

item = new StringItem("Button ", "Button", Item.BUTTON);

mainForm.append(item);

Page 26: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът Item

Базов клас за всички класове, чиито инстанции могат да се добавят във форма

По важни методи:

● getMinimumHeight(), getMinimumWidth() ,

getPreferredHeight(),

getPreferredWidth(),setPreferredSize()● notifyStateChanged() ● AddCommand (), removeCommand (),

setDefaultCommand (), setItemCommandListener● notifyStateChanged()

Page 27: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът Form

Контейнер за Item subclasses. Методи:

● append(Image img) , append(Item item),

append(String str), set(int itemNum, Item item)

● delete(int itemNum), deleteAll()

● Item get(int itemNum)

● getHeight(), getWidth()

● setItemStateListener(ItemStateListener iListener)

Page 28: Java 2 Micro Edition Разработване на приложения за мобилни телефони

The Layout (1/3)

● Не може да се разположи Item на конкретни координати.

● Елементите се показват по техния ред, в зависимост от имплементацията

● Елементите се разползагат в “Редове”

● Покзаването може да се управлява чрез метода setLayout () на класа Item

● Алгоритъмът за разползагане разчита на т.нар. Current Layout

Page 29: Java 2 Micro Edition Разработване на приложения за мобилни телефони

The Layout (2/3)

● LAYOUT_DEFAULT

● LAYOUT_LEFT

● LAYOUT_RIGHT

● LAYOUT_CENTER

● LAYOUT_TOP

● LAYOUT_BOTTOM

● LAYOUT_VCENTER

● LAYOUT_NEWLINE_BEFORE

● LAYOUT_NEWLINE_AFTER

● LAYOUT_SHRINK

● LAYOUT_VSHRINK

● LAYOUT_EXPAND

● LAYOUT_VEXPAND

● LAYOUT_2

Page 30: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът TextField

Constructor:

TextField(String label, String text,

int maxSize, int constraints)

Sample:

new TextField("Any Character", "", 15, TextField.ANY);

new TextField("E-Mail", "", 15, TextField.EMAILADDR);

new TextField("Number", "", 15, TextField.NUMERIC);

new TextField("Decimal", "", 15, TextField.DECIMAL);

new TextField("Phone", "", 15,TextField.PHONENUMBER);

new TextField("Password", "", 15, TextField.PASSWORD);

new TextField("URL", "", 15, TextField.URL);

Page 31: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът ChoiceGroup (1/2)

String[] sa = {"Option A", "Option B", "Option C", "Option D"};

Image img = Image.createImage (“/pic.img”);

form.append(new ChoiceGroup("Exclusive", ChoiceGroup.EXCLUSIVE, sa, img));

form.append(new ChoiceGroup("Multiple", ChoiceGroup.MULTIPLE, sa,img));

form.append(new ChoiceGroup("Pop-Up", ChoiceGroup.POPUP, sa,img));

Page 32: Java 2 Micro Edition Разработване на приложения за мобилни телефони
Page 33: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Класът Canvas –директен достъп до екрана

● Наследниците на Canvas имплементи-рат метод protected void paint(Graphics g)

● paint () не се вика директно – извиква се repaint ()

● За директен достъп до екрана се използва параметъра (Graphics g)

Page 34: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Canvased Hello World!

protected void paint(Graphics g) {

g.drawLine(5,5,30,30);

g.drawString("Hello World!", getWidth()/2, getHeight()/2,

Graphics.TOP | Graphics.HCENTER);

}

Page 35: Java 2 Micro Edition Разработване на приложения за мобилни телефони

CustomItemСъздаване на собствени контроли

● За създаване на собствени контроли се наследява класа javax.microedition.lcdui.CustomItem

● Задължително се имплементира

void paint(Graphics g, int w, int h);● Незадължително

– traverse, traverseOut, keyPressed,

keyReleased, keyRepeated и други.

Page 36: Java 2 Micro Edition Разработване на приложения за мобилни телефони
Page 37: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Други UI класове (Screen)

● List – Аналог на ChoiceGroup, но се показва на цял екран

● Alert – Показва съобщение на екрана (info,

warning, error и др.)

● TextBox – Аналог на TextField и също се

показва на цял екран

Page 38: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Други интересни възможности (RMS)

● RMS – Record Memory Store– javax.microedition.rms.RecordStore– Позволява записване на информация върху

мобилното устройство– Представлява номерирано множество от

записи byte []– Всеки запис се чете или записва наведнъж– Записите могат да се филтрират, търсят и

сравняват по дадени признаци

Page 39: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Вход/Изход

● Пакетът javax.microedition.io– javax.microedition.io.Connector – factory за

създаване на Connection обекти

– Connection – Базов интерфейс за вход/изход

– Поддържат се HttpConnection, HttpsConnection,

SocketConnection, StreamConnection,

UDPDatagramConnection

Page 40: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Пример за HTTP Вход

HttpConnection httpcon =

(HttpConnection) Connector.open(“http://fun.bg”);

InputStream is = httpcon.openInputStream();

byte [] buff = new byte[128];

int count = -1;

while ((count = is.read(buff))!=-1) {

String text = new String (buff,count);

form.append(text);

}

Page 41: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Демонстрация:Да направим един Midlet

● Weather Midlet – показва метеороло-гичните условия в даден град

● Използваме web service предоставен от

http://webservicex.net● Ще направим заявка, ще изтеглим,

обработим и визуализираме резултата

Page 42: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Формат на заявката и данните

HTTP Get Request:

webservicex.net/globalweather.asmx/GetWeather?CountryName=Bulgaria&CityName=Sofia

Page 43: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Формат на отговора

Response:<?xml version="1.0" encoding="utf-8"?><string xmlns="http://www.webserviceX.NET">

<CurrentWeather> <Location>

Sofia Observ. , Bulgaria (LBSF) 42-39N 023-23E 595M</Location><Time>

Nov 29, 2005 - 04:00 AM EST / 2005.11.29 0900 UTC</Time><Wind>Variable at 2 MPH (2 KT)</Wind><Visibility>4 mile(s)</Visibility><SkyConditions>mostly clear</SkyConditions><Temperature>48 F (9 C)</Temperature><DewPoint>41 F (5 C)</DewPoint><RelativeHumidity>75%</RelativeHumidity><Pressure>29.97 in. Hg (1015 hPa)</Pressure><Status>Success</Status>

</CurrentWeather></string>

Page 44: Java 2 Micro Edition Разработване на приложения за мобилни телефони

Да напишем кода

● Ще използваме Eclipse

● Плъгинът EclipseME ще автоматизира

част от работата● За емулатор – WTK 2.2 на Sun

Microsystems

Page 45: Java 2 Micro Edition Разработване на приложения за мобилни телефони

That’s all folks!

Благодаря Ви за вниманието!

Имате ли въпроси?