Programowanie urządzeń mobilnych

Transkrypt

Programowanie urządzeń mobilnych
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME
ćwiczenia 1
Budowa aplikacji MIDP
•
utworzenie klasy dziedziczącej z klasy java.microedition.midlet.MIDlet
Klasa musi posiadać przynajmniej trzy metody:
•
•
•
startApp() inicjalizacja MIDlet’u lub powrót ze stanu zatrzymania
pauseApp() zatrzymanie aplikacji (np. podczas odbierania rozmowy)
destroyApp() zamknięcie aplikacji
Szkielet aplikacji
import javax.microedition.midlet.MIDlet;
public class PierwszyMIDlet extends MIDlet {
public void startApp(){
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
}
1
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Wyświetlanie informacji na ekranie
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class PierwszyMIDlet extends MIDlet {
// wykorzystanie klasy TextBox (okno tekstowe)
private TextBox tb;
public void startApp() {
// tworzymy obiekt klasy TextBox
tb = new TextBox("Wyświetlanie tekstu", "Pisanie
programów w Javie ME nie jest trudne", 160,
TextField.UNEDITABLE);
// ustawiamy ekran poczatkowy
Display.getDisplay(this).setCurrent(tb);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
}
Należy pamiętać o poprawnym wykorzystaniu utworzonych obiektów (sprawdzamy czy
istnieje referencja lub tworzymy obiekty w konstruktorze MIDletu)
// tworzymy obiekt klasy TextBox tylko gdy go jeszcze nie ma
if (tb == null) {
tb = new TextBox("Wyświetlanie tekstu", "Pisanie programów w Javie ME
nie jest trudne", 160, TextField.UNEDITABLE);
}
// tworzymy obiekt w konstruktorze MIDletu
public PierwszyMIDlet() {
tb = new TextBox("Wyświetlanie tekstu", "Pisanie programów w Javie ME
nie jest trudne", 160, TextField.UNEDITABLE);
}
Obsługa komend w MIDletach związana jest z implementacją interfejsu CommandListener
public void commandAction(Command c, Displayable d);
2
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Przykładowa aplikacja z obsługą komend (zamykanie MIDletu)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
/**
* MIDlet: Wyswietlanie tekstu
* Klasa główna: TextBox (dziedzicząca z klasy Screen)
*/
public class WyswietlanieTekstu extends MIDlet implements CommandListener {
// wykorzystanie klasy TextBox (okno tekstowe)
private TextBox tb;
// wykorzystanie klasy Command (obsługa komend)
private Command exitCommand;
public void startApp() {
// sprawdzamy czy istnieje instancja obiektu klasy TextBox
if (tb == null) {
// tworzymy obiekt klasy TextBox
tb = new TextBox("Wyświetlanie tekstu", "Pisanie
programów w Javie ME nie jest trudne", 160,
TextField.UNEDITABLE);
// tworzymy nowe polecenie
exitCommand = new Command("Zakończ", Command.EXIT, 0);
// dodajemy polecenie do pola tekstowego
tb.addCommand(exitCommand);
// wskazujemy obiekt obslugujacy zdarzenia
tb.setCommandListener(this);
}
// ustawiamy ekran poczatkowy
Display.getDisplay(this).setCurrent(tb);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
// ciało metody z interfejsu CommandListener
public void commandAction(Command c, Displayable d) {
// obsluga polecenia exitCommand (kończymy działanie aplikacji)
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
}
}
3
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Klasy wykorzystywane przy tworzeniu graficznego interfejsu użytkownika
(pakiet javax.microedition.lcdui)
Komponenty GUI wysokiego poziomu
Nazwa klasy
Alert
Opis
Wyświetlanie przez pewien czas lub też do chwili akceptacji przez
użytkownika okna dialogowego z komunikatem, obrazkiem.
Wyświetlanie grupy elementów w formie formularza
Form
List
TextBox
Element
ChoiceGroup
DateField
Gauge
ImageItem
StringItem
TextField
Opis
Grupa wyboru z opcji
Edytowalne pole daty i czasu
Wskaźnik
Obrazek z tekstem
Nieedytowalny tekst
Pole tekstowe
Wybór z wielu opcji tekstowych lub graficznych
Edytowalne pole tekstowe
4
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Przykładowa aplikacja wykorzystująca klasę Alert
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class Alerty extends MIDlet implements CommandListener {
private TextBox tb;
private Command exitCommand, infoCommand;
private Display dp;
public void startApp() {
if (tb == null) {
tb = new TextBox("Wprowadzanie danych", null, 160,
TextField.ANY);
// tworzymy nowe polecenia (polecenia związane z aplikacją
// mają typ Command.SCREEN)
exitCommand = new Command("Zakończ", Command.EXIT, 0);
infoCommand = new Command("Informacje", Command.SCREEN, 1);
tb.addCommand(exitCommand);
tb.addCommand(infoCommand);
tb.setCommandListener(this);
}
dp = Display.getDisplay(this);
dp.setCurrent(tb);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
// obsluga polecenia infoCommand (wyświetlenie informacji
// użytkownikowi)
if (c == infoCommand) {
// tworzymy obiekt klasy Alert wraz z odpowiednimi danymi
Alert al = new Alert("Informacja", "Wprowadziłeś " +
tb.getString().length() + " znaków",
null, AlertType.INFO);
// ustawiamy czas (podany w ms) przez jaki Alert ma być
// wyświetlany
al.setTimeout(2000);
// wyświetlamy Alert oraz wskazujemy na ekran, który ma
// zostać wyświetlony po zamknięciu Alerta
dp.setCurrent(al, tb);
}
}
}
5
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Wykorzystanie klasy Form oraz obsługi zdarzeń (aplikacja obliczająca kwotę brutto)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class ProstyFormularz extends MIDlet implements CommandListener {
// wykorzystanie klasy Form (formularz)
private Form frm;
private Command exitCommand, calcCommand;
private Display dp;
// dodatkowe pola związane z formularzem
private TextField netto;
// konstruktor tworzacy formularz (jest to alternatywny sposob tworzenia obiektu
// głównego)
// w poprzednich przykładach obiekty te były tworzone w metodzie startApp()
public ProstyFormularz () {
frm = new Form("Obliczanie wartości brutto");
netto = new TextField("Podaj kwotę netto:", null, 20, TextField.DECIMAL);
frm.append(netto);
exitCommand = new Command("Zakończ", Command.EXIT, 0);
calcCommand = new Command("Oblicz", Command.SCREEN, 1);
frm.addCommand(exitCommand);
frm.addCommand(calcCommand);
frm.setCommandListener(this);
}
public void startApp() {
// ustawiamy ekran poczatkowy
dp = Display.getDisplay(this);
dp.setCurrent(frm);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
// obsluga polecenia calcCommand
if (c == calcCommand) {
// obliczamy kwotę netto, brutto oraz VAT
6
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
double kwotaNetto = Double.parseDouble(netto.getString());
double kwotaBrutto = kwotaNetto * 1.22;
double kwotaVAT = kwotaBrutto - kwotaNetto;
// formatowanie liczb (2 miejsca po przecinku) - w Javie ME brak klasy
// DecimalFormat
kwotaNetto = (double)(int)((kwotaNetto + 0.005) * 100.0) / 100.0;
kwotaBrutto = (double)(int)((kwotaBrutto + 0.005) * 100.0) / 100.0;
kwotaVAT = (double)(int)((kwotaVAT + 0.005) * 100.0) / 100.0;
// tworzymy obiekt klasy Alert wraz z odpowiednimi danymi (kwoty)
Alert al = new Alert("Wynik", "Kwota netto: " + kwotaNetto + "\nKwota
VAT: " + kwotaVAT + "\nKwota brutto: " +
kwotaBrutto, null, AlertType.CONFIRMATION);
// ustawiamy Alert modalny
al.setTimeout(Alert.FOREVER);
// wyświetlamy Alert oraz wskazujemy na ekran, który ma zostać
// wyświetlony po zamknięciu Alerta
dp.setCurrent(al, frm);
}
}
}
7
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Zadania
1. Napisz MIDlet umożliwiający wprowadzanie danych (ogranicz ilość wprowadzanych
znaków do 100). Wykorzystaj klasę TextBox. Zapoznaj się z możliwościami tej
klasy oraz zmień typ wprowadzanych danych (np. tylko wartości liczbowe, hasło
itp.).
2. Uzupełnij MIDlet z pierwszego zadania o nową komendę „Test” umożliwiającą
wyświetlenie Alertu (wykorzystaj klasę Alert) zawierającego wpisany do tej pory
tekst.
3. Korzystając z klasy Form oraz odpowiednich komponentów utwórz MIDlet
pobierający od użytkownika imię oraz dzień i miesiąc urodzenia oraz wyświetlający
po wybraniu opcji „Podaj znak” odpowiedni znak zodiaku (np. Kasia jest Bykiem).
4. Zmodyfikuj kod aplikacji ProstyFormularz tak, aby móc dokonywać przeliczenia
dolarów USD na złotówki. Użytkownik podaje określoną liczbę dolarów, program
przelicza ją na złotówki oraz wyświetla wynik na ekranie (możesz wykorzystać np
klasę Alert). Ustal stały kurs wymiany.
5. Zapoznaj się z aplikacją FormularzWaluty. Dodaj nową walutę GBP oraz pole
umożliwiające podanie ilości środków w danej walucie. Po podaniu wszystkich
danych program ma wyświetlić aktualny kurs oraz przeliczoną na PLN wartość
podanych środków.
8

Podobne dokumenty