pum2.pdf

(136 KB) Pobierz
Programowanie urządzeń mobilnych
Podstawy tworzenia aplikacji
Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME
ćwiczenia 2
Wykorzystanie plików graficznych w MIDlet’ach
utworzenie obiektu klasy Image (statyczna metoda createImage() )
utworzenie obiektu klasy ImageItem
dodanie utworzonego obiektu do formularza (lub innego obiektu)
Jedna z wersji metody createImage() tworzy obiekt z pliku graficznego (obsługiwany
format graficzny to PNG). Podajemy ścieżkę do pliku znajdującego się w katalogu res
(ang. resources - zasoby).
Przykładowa aplikacja
wykorzystywany plik: taurus.png znajdujący się w katalogu res
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import java.io.*;
/**
* MIDlet: Wyświetlanie grafiki
* Klasy główne: Form (dziedzicząca z klasy Screen)
* Klasy dodatkowe: Image oraz ImageItem (dziedzicząca z klasy Item)
*/
public class WyswietlanieGrafiki extends MIDlet implements CommandListener {
// wykorzystanie klasy Form (formularz)
private Form frm;
// wykorzystanie klasy Command (obsługa poleceń)
private Command exitCommand;
// wykorzystanie klasy Display
private Display dp;
// dodatkowe pola związane z formularzem
private ImageItem img;
private Image image;
// konstruktor tworzacy główny ekran
public WyswietlanieGrafiki () {
frm = new Form("Wyświetlanie grafiki");
try {
// Tworzymy "Obraz" / oznacza ścieżkę do katalogu res
image = Image.createImage("/taurus.png");
} catch (IOException e) {
System.out.println ("Nie można załadować obrazka!");
}
// tworzymy obiekt klasy ImageItem, ktry mozemy dodać do formularza
1
915068333.009.png 915068333.010.png
 
Programowanie urządzeń mobilnych
Podstawy tworzenia aplikacji
img = new ImageItem(null, image, ImageItem.LAYOUT_CENTER, "Obrazek
przedstawiający byka");
frm.append(img);
// tworzymy nowe polecenie
exitCommand = new Command("Zakończ", Command.EXIT, 0);
// dodajemy polecenia do formularza
frm.addCommand(exitCommand);
// wskazujemy obiekt obslugujacy zdarzenia
frm.setCommandListener(this);
}
public void startApp() {
// ustawiamy ekran poczatkowy
dp = Display.getDisplay(this);
dp.setCurrent(frm);
}
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();
}
}
}
2
915068333.011.png 915068333.001.png 915068333.002.png
 
Programowanie urządzeń mobilnych
Podstawy tworzenia aplikacji
Obsługa menu
Aplikacje posiadające wiele opcji powinny mieć możliwość umieszczenia ich w menu. W
MIDlet’ach opcje tworzone są za pomocą nowych obiektów klasy Command . Ich
umieszczenie uzależnione jest od typu, priorytetu oraz możliwości urządzenia.
Przykładowa aplikacja
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
/**
* MIDlet: TworzenieMenu
* Klasy główne: TextBox (dziedzicząca z klasy Screen)
*/
public class TworzenieMenu extends MIDlet implements CommandListener {
// wykorzystanie klasy TextBox
private TextBox tb;
// wykorzystanie klasy Command (obsługa poleceń)
private Command exitCommand, pisowniaCommand, wyslijSMSCommand, wyslijMMSCommnad,
wyslijBTCommnad, wyczyscCommand, zapiszCommand ;
// wykorzystanie klasy Display
private Display dp;
public TworzenieMenu () {
// tworzymy obiekt klasy TextBox
tb = new TextBox("Wprowadzanie tekstu", "", 320, TextField.ANY);
// tworzymy nowe polecenia
exitCommand = new Command("Zakończ", Command.EXIT, 0);
pisowniaCommand = new Command("Sprawdź pisownię", Command.SCREEN, 1);
wyslijSMSCommand = new Command("Wyślij SMS'em", Command.SCREEN, 1);
wyslijMMSCommnad = new Command("Wyślij MMS'em", Command.SCREEN, 1);
wyslijBTCommnad = new Command("Wyślij przez BT", Command.SCREEN, 1);
wyczyscCommand = new Command("Wyczyść", Command.SCREEN, 1);
zapiszCommand = new Command("Zapisz", Command.SCREEN, 1);
// dodajemy polecenia do pola tekstowego
tb.addCommand(exitCommand);
tb.addCommand(pisowniaCommand);
tb.addCommand(wyslijSMSCommand);
tb.addCommand(wyslijMMSCommnad);
tb.addCommand(wyslijBTCommnad);
tb.addCommand(wyczyscCommand);
tb.addCommand(zapiszCommand);
// wskazujemy obiekt obslugujacy zdarzenia
tb.setCommandListener(this);
}
3
915068333.003.png 915068333.004.png
 
Programowanie urządzeń mobilnych
Podstawy tworzenia aplikacji
public void startApp() {
// ustawiamy ekran poczatkowy
dp = Display.getDisplay(this);
dp.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();
}
// obsluga pozostałych poleceń
// ............
}
}
Wykorzystanie GUI niskiego poziomu – klasa Canvas
Klasa Canvas jest klasą reprezentującą ekran urządzenia mobilnego. Wykorzystanie
bezpośredniego dostępu do ekranu polega na utworzeniu klasy dziedziczącej z klasy
Canvas . Przesłonięcie odpowiednich metod pozwala na obsługę większości zdarzeń
związanych z ekranem. Metodą, którą zawsze musimy przesłonić jest metoda paint()
(wywoływana gdy urządzenie potrzebuje zaktualizować dane na ekranie). Parametrem
metody jest referencja do obiektu klasy Graphics reprezentującego ekran urządzenia.
Większość metod związanych z obsługą ekranu dostępna jest w klasie Graphics
(rysowanie figur, zmiana koloru, wyświetlanie tekstu itp.). Parametry fizyczne ekranu
urządzenia mobilnego uzyskamy za pomocą metod klasy Canvas (np. getWidth() ,
getHeight() ) oraz metod klasy Display (np. isColor() ).
Przykładowa aplikacja
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
// klasa dziedzicząca z klasy Canvas (musimy przesłonić przynajmniej metodę paint())
class Ekran extends Canvas {
public void paint(Graphics g) {
// pobieramy rozmiary ekranu
int szer = getWidth();
int wys = getHeight();
// czyścimy ekran na biało
g.setColor(0x00ffffff);
g.fillRect(0, 0, szer - 1 , wys - 1);
4
915068333.005.png 915068333.006.png
 
Programowanie urządzeń mobilnych
Podstawy tworzenia aplikacji
// rysujemy czerwony prostokąt
g.setColor(0x00ff0000);
g.drawRect(szer / 10, wys / 10, szer / 5, wys / 5);
// rysujemy zieloną linię
g.setColor(0x0000ff00);
g.drawLine(10, 10, 70, 70);
// piszemy niebieski tekst
g.setColor(0x000000ff);
g.drawString("Piszemy po ekranie...", 10, 90, Graphics.TOP | Graphics.LEFT);
}
}
public class ObslugaEkranu extends MIDlet implements CommandListener {
// pola klasy (jedno z pól jest referencją do obiektu klasy Ekran)
private Ekran ekr;
private Command exitCommand;
private Display dp;
// konstruktor
public ObslugaEkranu () {
ekr = new Ekran();
exitCommand = new Command("Zakończ", Command.EXIT, 0);
ekr.addCommand(exitCommand);
ekr.setCommandListener(this);
}
public void startApp() {
dp = Display.getDisplay(this);
dp.setCurrent(ekr);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
// obsluga polecenia exitCommand (kończymy działanie aplikacji)
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
}
}
5
915068333.007.png 915068333.008.png
 
Zgłoś jeśli naruszono regulamin