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 PDA / Pocket PC /smartfony (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 - 128 MB RAM  Małe zasoby procesora - 416 MHz  Działanie na bateriach – pobór energii  Rozbudowany interfejs komunikacyjny

Dlaczego taka tematyka ? Steve Furber  ARM  JAVA  Urządzenia peryferyjne  RIA  Prace dyplomowe i projekty inżynierskie

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  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 - duża różnorodność urządzeń - częste aktualizacje - niejednolity proces aktualizacji - dobrze wyposażone urządzenia systemu - popularny na całym świecie iOS - pomijalne różnice pomiędzy - wysoka cena urządzeń urządzeniami - restrykcyjna polityka firmy dot. - wysokiej jakości dokumentacja nowych produktów techniczna - rynek nasycony aplikacjami Research - programowanie oparte o język Java - użytkownikami są osobe związane In Motion - dobre wsparcie dla developerów głównie z biznesem - konkurencyjna cena urządzeń - popularność jedynie w USA

Symbian - ogromna liczba użytkowników - trudności podczas certyfikowania - open source oprogramowania - bardzo dopracowany, bezpieczny i - słabe wyposażenie części urządzeń wydajny - mała popularność w USA - niska cena urządzeń Windows - bardzo dobra integracja z komputerem - mała liczba urządzeń i wyposażonym w system Windows użytkowników - kolejne wersje system znacznie się od siebie różnią MeeGo ………. ….

 Linux  Moblin +

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

import java.io.IOException; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.GameCanvas; public class grafika extends GameCanvas GameApi implements Runnable { public grafika() { super(true); } public void start() { Pakiet javax.microedition.lcdui.game: // uruchamia się główny wątek Thread runner = new Thread(this); • GameCanvas runner.start(); } • Layer, • LayerManager, public void run() { • Sprite, while(true) { /// lub while(gra = true) • TiledLayer. • obsługa klawiszy, • aktualizowanie zmiennych dla obiektów // klasa główna itp aktualizacja grafiki (getGraphics()) public class Gra extends MIDlet { na ekranie z uwzględnieniem nowych grafika gcanvas; parametrów (animacja, przesunięcie itp) ) public Gra() { gcanvas = new grafika(); try{ Thread.currentThread().sleep(30); } //aby nie obciążąć public void startApp() { Display wyswietl = } catch(Exception e) Display.getDisplay(this); gcanvas.start(); { } } } } wyswietl.setCurrent(gcanvas); } // reszta kodu midletu } Maysaifu JVM

http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html

 licencja open-source (GPL v.2)

 przygotowana dla J2SE (kompatybilna z J2SE 1.5)‏

 obsługiwane procesory: StrongARM, Xscale

 obsługiwane OS : PocketPC 2003 - Windows Mobile 5.0

Biblioteki‏których‏używa‏bazują‏na‏GNU‏Classpath‏0.20

• 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

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 #include 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 SDK : 3000$ Konto Developera : 25$ (raz) Konto Developera : 99$ (rocznie) Prowizja sklepu: 30% Prowizja sklepu: 30-60% Umieszczenie aplikacji: Darmowe Umieszczenie aplikacji: 0$/20$

Czas oczekiwania: 1 dzień Czas oczekiwania: >20 dni application Adobe HTML 5 Microsoft Java framework Flash (javascript Silverlight (applets) + canvas) web browser Internet supported weak partially supported Explorer 8 support supported Mozilla Firefox supported good supported supported 10 support Google Chrome supported good partially supported 17 support supported Safari 5 supported good partially supported support supported Symbian Anna * weak good supported supported support support RIM 7 * supported good not supported supported support Bada 2.0 * supported good not supported supported support Windows 7.5 * supported good supported supported support Czy warto się nauczyć programować urządzenia mobilne ?