Programowanie urządzeń mobilnych dr inż. Tomasz Walkowiak
Urządzenia mobilne Kieszonkowych rozmiarów urządzenie komputerowe typowo z dotykowym ekranem lub mini-klawiaturą Rodzaje: mobilne komputery (NetBook, PDA, ) przenośne konsole gry (Game Boy, Nintendo, ) urządzenia komunikujące (telefony) inne
Mobilne urządzenia internetowe Telefony komórkowe /smartfony PDA / Pocket PC (Personal Digital Assistant)
Przykładowy MID HTC Desire Z Procesor: 800 Mhz Pamięć: 512 RAM, 1,5 GB Ekran: 480 x 800 pikseli Komunikacja: Bluetooth 2.1, USB, WiFi System operacyjny: Android Posiada moduł GPS
Cechy charakterystyczne urządzeń mobilnych Ograniczona rozdzielczość ekranu - 3,5 240x320 Ograniczony interfejs wejściowy Mała ilość pamięci Małe zasoby procesora - 128 MB RAM - 416 MHz Działanie na bateriach pobór energii Rozbudowany interfejs komunikacyjny
Dlaczego taka tematyka? ARM JAVA Urządzenia peryferyjne RIA Prace dyplomowe i projekty inżynierskie Steve Furber
Urządzenia mobilne - komunikacja Bluetooth WiFi Infra red USB
Urządzenia mobilne - lokalizacja GPS- Global Positioning System 8
Jak programować urządzenia mobilne? Środowisko programistyczne Java ME (najpopularniejszy) - Java FlashLite - ActionScript BREW - C++ System operacyjny Windows Mobile - C++, C#, XAML Symbian OS - C++, (Qt) Palm OS - C iphone - Objective-C Android - Java MeeGo - C++ (Qt) Środowiska na systemach operacyjnych Python Lazarus (Pascal).Net (powiązany z Windows Mobile), C#
Prognozy rozwoju smartfonów Gartner System operacyjny 2009 2010 2011 2014 Symbian 80,876.30 107,662.40 141,278.60 264,351.80 Udział w rynku(%) 46.9 40.1 34.2 30.2 Android 6,798.40 47,462.10 91,937.70 259,306.40 Udział w rynku(%) 3.9 17.7 22.2 29.6 Research In Motion 34,346.80 46,922.90 62,198.20 102,579.50 Udział w rynku(%) 19.9 17.5 15.0 11.7 ios 24,889.80 41,461.80 70,740.00 130,393.00 Udział w rynku(%) 14.4 15.4 17.1 14.9 Windows Phone 15,031.10 12,686.50 21,308.80 34,490.20 Udział w rynku(%) 8.7 4.7 5.2 3.9 Inne systemy mobilne 10,431.90 12,588.10 26,017.30 84,452.90 Udział w rynku(%) 6.1 4.7 6.3 9.6 Cały rynek smartfonów 172,374.30 268,783.70 413,480.50 875,573.80
Operating System Market share in 2011 (%) Market share in 2015 (%) Android 50.9 48.8 ios 23.8 17.2 Symbian 11.7 0.1 Research In Motion 8.8 11.1 Bada 2.1 not included Microsoft 1.9 19.5 Others 0.8 3.3
System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność urządzeń - niejednolity proces aktualizacji systemu ios - pomijalne różnice pomiędzy urządzeniami - wysokiej jakości dokumentacja techniczna - wysoka cena urządzeń - restrykcyjna polityka firmy dot. nowych produktów - rynek nasycony aplikacjami Research In Motion - programowanie oparte o język Java - dobre wsparcie dla developerów - konkurencyjna cena urządzeń - użytkownikami są osobe związane głównie z biznesem - popularność jedynie w USA Symbian - ogromna liczba użytkowników - open source - bardzo dopracowany, bezpieczny i wydajny - niska cena urządzeń Windows - bardzo dobra integracja z komputerem wyposażonym w system Windows - trudności podczas certyfikowania oprogramowania - słabe wyposażenie części urządzeń - mała popularność w USA - mała liczba urządzeń i użytkowników - kolejne wersje system znacznie się od siebie różnią
MeeGo.. Linux Moblin + Maemo
Co trzeba wiedzieć żeby tworzyć programy na urządzenia mobilne? Język programowania (C i pochodne) API programistyczne danego środowiska każde jest inne Zainstalować SDK dla danego środowiska każde inne większość darmowa albo są wersje darmowe stacjonarny komputer Windows/Linux lub Mac OS (konieczny dla iphone) Znać API dla poszczególnych technologii obsługa klawiatury czy ekranu dotykowego modele zdarzeniowe obsługa okien modele obiektowy komunikacja: BlueTooth GPRS, UMTS, -> SMS, TCP/IP WiFi TCP/IP GPS port szeregowy, NMEI
Java ME 350 milionów telefonów
MIDLET jak napisać? JDK kompilator zawierające zarówno wszystkie standardowe pakiety składające się na J2SE jak i standardową maszynę Javy (JVM) środowisko uruchomieniowe emulator maszyny wirtualnej KVM. emulatory telefonów można pobrać ze stron ich producentów. Sun proponuje emulator JME Wireless Toolkit. edytor tekstowy lub inne środowisko Sun ONE Studio, Mobile Edition, Borland Jbuilder i MobileSet NetBeans (Mobility) Eclipse
Pierwszy MIDlet import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HelloMidlet extends MIDlet { public void startapp() { Display d = Display.getDisplay(this); Form f = new Form("HelloMidlet"); f.append("hello, world"); d.setcurrent(f); } public void pauseapp() { } public void destroyapp(boolean unconditional) { }
Trójwarstwowość w MIDP Warstwa prezentacji Klasy potomne klasy Displayable Klasy zawierają tylko i wyłącznie metody do ustawiania i odczytu zawartości pól UI Warstwa logiki Interfejs CommandListener By odczytać lub ustawić wartości pól UI wywołuje się metody klas potomnych klasy Displayable Warstwa dostępu do danych Record Store Generic Connection Framework JSR-82 - Bluetooth API
Przykład użycia zdarzeń klawiatury telefonu public void commandaction(command c, Displayable s) { if (c == cmok && s == lmenu){ if (lmenu.getstring(lmenu.getselectedindex()) == "TextField + Alert"){ ekran.setcurrent(ftextform); }; }; if (c == cmok && s == ftextform){ aalert = new Alert("Alert!!!!","Napisales: +tftekst_m.getstring(),null,alerttype.info); aalert.settimeout(gczas.getvalue()*300); ekran.setcurrent(aalert); } if (c == cmwroc && s == ftextform){ ekran.setcurrent(lmenu);} }; Dalej Dalej Wróć
Możliwości J2ME Multimedia Oddzielne API: Mobile Media API 1.1 JSR-135 Nie jest powszechnie dostępne w telefonach komórkowych dlatego najbardziej podstawowe elementy wydzielono i dołożono do MIDP 2.0 Możliwości: odtwarzanie plików dźwiękowych (midi/wav/mp3?) odtwarzanie plików wideo (mpeg) nagrywanie audio wykonywanie zdjęć nagrywanie plików wideo
GameApi Pakiet javax.microedition.lcdui.game: GameCanvas Layer, LayerManager, Sprite, TiledLayer. // klasa główna public class Gra extends MIDlet { grafika gcanvas; public Gra() { gcanvas = new grafika(); } public void startapp() { Display wyswietl = Display.getDisplay(this); gcanvas.start(); wyswietl.setcurrent(gcanvas); } // reszta kodu midletu } import java.io.ioexception; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.gamecanvas; public class grafika extends GameCanvas implements Runnable { public grafika() { super(true); } public void start() { // uruchamia się główny wątek Thread runner = new Thread(this); runner.start(); } public void run() { while(true) { /// lub while(gra = true) obsługa klawiszy, aktualizowanie zmiennych dla obiektów itp aktualizacja grafiki (getgraphics()) na ekranie z uwzględnieniem nowych parametrów (animacja, przesunięcie itp) ) try{ Thread.currentThread().sleep(30); //aby nie obciążąć } catch(exception e) { } } } }
Maysaifu JVM http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html licencja open-source (GPL v.2) ( 1.5 przygotowana dla J2SE (kompatybilna z J2SE obsługiwane procesory: StrongARM, Xscale obsługiwane OS : PocketPC 2003 - Windows Mobile 5.0 0.20 ClasspathGNUnabazująużywaktórychBiblioteki obsługuje pliki skompresowane, Bootstrap class loader ładuje klasy prosto z plików JAR JVM wykorzystuje kmmalloc do alkoacji heap memory JVM wykorzystuje libiconv do kodowania/dekodowania znaków parsowanie XML
Flash Lite Flash Lite PDA i niektóre komórki (głównie 1.1) Flash Lite 2.0 Bazuje na Flash 7 SVG Tiny Przetwarzanie: obrazy, wideo, dźwięk Dostęp do danych: XML & Web Services Action Script 2.0 (O.O.) PHP i dostęp do DB (mysql) Mobile web Desktop web Środowisko darmowe ale wymaga Flash 8 pro (700$)
Flash Lite zintegrowane środowisko Zintegrowane środowisko firmy Adobe
Flash Lite - przykład
.NET C# Wymagania: Visual Studio (poza wersją Express); PDA z systemem Windows CE (wersja 5.0 i nowsze). Instalacja, odpowiedniego zgodnego z pisanym programem,.net Frameworka na PDA
.NET C#
.NET C# Przygotowaną aplikację można już bez większych problemów przetestować.
Flash Lite C# przykład
Narzędzia 1.Microsoft Visual Studio 2010 Express For Phone Ultimate 2.Microsoft Silverlight 3,4 SDK + Microsoft Silverlight for Windows Phone Toolkit 3.Windows Phone Emulator 4. Microsoft XNA Game Studio 4.0 5.Microsoft Expression Blend 4
Silverlight Microsoft Silverlight technologia internetowa umożliwiająca wyświetlanie treści multimedialnych za pomocą przeglądarki. Rozwijany był pod kodową nazwą Windows Presentation Foundation/Everywhere (WPF/E) i zaprojektowany tak, aby współpracował z językami XAML oraz JavaScript. W wersji 2.0 możliwe jest pisanie w dowolnym języku obsługiwanym przez.net, dodatkowo obsługuje języki interpretowane takie jak Ruby i Python. Większość aplikacji napisanych na platformę Windows Phone 7 wykorzystuję tę technologię.
Silverlight składnia <controls:panoramaitem Header="Repertuar kin " Orientation="Horizontal"> <toolkit:wrappanel x:name="wrappanel" Orientation="Vertical"> </toolkit:wrappanel> <!--Double line list with text wrapping--> </controls:panoramaitem> <!--Panorama item two--> <!--Use 'Orientation="Horizontal"' to enable a panel that lays out horizontally--> <controls:panoramaitem Header="Kina"> <Grid> <ListBox x:name="_listboxkina" SelectionChanged="listBoxKina_SelectionChanged" ItemsSource="{Binding Items, Mode=OneWay}"> <ListBox.ItemTemplate > <DataTemplate> <StackPanel Margin="0,0,0,17" Width="432"> <TextBlock TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" Text="{Binding Nazwa}"/> <TextBlock Text="{Binding miasto}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </controls:panoramaitem>
Interfejs Użytkownika. Metro UI.
Programowanie w Symbian środowisko Debuggowanie oraz emulacja programów: Emulatorem jest aplikacja okienkowa uruchamiana w środowisku SDK Możliwość pisania programów przeznaczonych dla systemu Symbian w znanych środowiskach programistycznych: Microsoft Visual C++ i.net Metrowerks Code Warrior Borland C++ BuilderX or Builder 6.0 GNUPoc
Programowanie w Symbian język C++ Wykorzystanie języka C++ jako podstawowego języka programistycznego dla systemu Symbian Umożliwia wykorzystanie wielu komponentów języka C++ Cech języka C++ wykorzystywane są również przez API systemowe
Programowanie w Symbian przykład Przykład prostego programu napisanego w systemie Symbian: #include <e32base.h> #include <e32cons.h> CConsoleBase* console; TInt E32Main() { _LIT(KName, Hello, World"); _LIT(KAnyKey,"[Press any key]"); console=console::newl(kname, TSize(KConsFullScreen,KConsFullScreen)); console->printf(_l("hello\n")); console->printf(kanykey); console->getch(); delete console; return(0); }
Android - środowisko Instalacja SDK i dodanie pakietów: http://developer.android.com/sdk/installing.html Instalacja ADT Plugin (Eclipse): http://developer.android.com/sdk/eclipse-adt.html Konfiguraja emulatora: instalacja AVD (Android Virtual Device)
Android - przykład
Android - przykład
Porównanie Android Market Windows Phone Market SDK : Darmowe Konto Developera : 25$ (raz) Prowizja sklepu: 30% Umieszczenie aplikacji: Darmowe Czas oczekiwania: 1 dzień SDK : 3000$ Konto Developera : 99$ (rocznie) Prowizja sklepu: 30-60% Umieszczenie aplikacji: 0$/20$ Czas oczekiwania: >20 dni
application Adobe HTML 5 framework Flash (javascript + canvas) web browser Internet supported weak Explorer 8 support Mozilla Firefox supported good 10 support Google Chrome supported good 17 support Safari 5 supported good support Symbian Anna * weak good support support RIM 7 * supported good support Bada 2.0 * supported good support Windows 7.5 * supported good support Microsoft Silverlight partially supported supported partially supported partially supported supported not supported not supported supported Java (applets) supported supported supported supported supported supported supported supported
Czy warto się nauczyć programować urządzenia mobilne?