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