Urządzenia mobilne
Transkrypt
Urządzenia mobilne
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 - 128 MB RAM Małe zasoby procesora - 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 - ActionScript - C++ System operacyjny Java ME (najpopularniejszy) FlashLite BREW Windows Mobile Symbian OS Palm OS iPhone Android MeeGo - C++, C#, XAML - C++, (Qt) -C - Objective-C - Java - C++ (Qt) Środowiska na systemach operacyjnych Python Lazarus (Pascal) .Net (powiązany z Windows Mobile), C# Prognozy rozwoju smartfonów Gartner System operacyjny Symbian Udział w rynku(%) Android Udział w rynku(%) Research In Motion Udział w rynku(%) iOS Udział w rynku(%) Windows Phone Udział w rynku(%) Inne systemy mobilne Udział w rynku(%) Cały rynek smartfonów 2009 80,876.30 46.9 6,798.40 3.9 34,346.80 19.9 24,889.80 14.4 15,031.10 8.7 10,431.90 6.1 172,374.30 2010 2011 107,662.40 141,278.60 40.1 34.2 47,462.10 91,937.70 17.7 22.2 46,922.90 62,198.20 17.5 15.0 41,461.80 70,740.00 15.4 17.1 12,686.50 21,308.80 4.7 5.2 12,588.10 26,017.30 4.7 6.3 268,783.70 413,480.50 2014 264,351.80 30.2 259,306.40 29.6 102,579.50 11.7 130,393.00 14.9 34,490.20 3.9 84,452.90 9.6 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 Android - iOS - Symbian - - programowanie oparte o język Java dobre wsparcie dla developerów konkurencyjna cena urządzeń - - ogromna liczba użytkowników open source bardzo dopracowany, bezpieczny i wydajny niska cena urządzeń - bardzo dobra integracja z komputerem wyposażonym w system Windows - - Windows - pomijalne różnice pomiędzy urządzeniami wysokiej jakości dokumentacja techniczna - Research In Motion Zalety open source częste aktualizacje dobrze wyposażone urządzenia popularny na całym świecie - - - - - Wady duża różnorodność urządzeń niejednolity proces aktualizacji systemu wysoka cena urządzeń restrykcyjna polityka firmy dot. nowych produktów rynek nasycony aplikacjami użytkownikami są osobe związane głównie z biznesem popularność jedynie w USA 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 – Zainstalować SDK dla danego środowiska – – – każde jest inne 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 – – środowisko uruchomieniowe – emulator maszyny wirtualnej KVM. – – zawierające zarówno wszystkie standardowe pakiety składające się na J2SE jak i standardową maszynę Javy (JVM) 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 Wróć Dalej 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; GameApi public class grafika extends GameCanvas implements Runnable { public grafika() { super(true); } 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 } 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) przygotowana dla J2SE (kompatybilna z J2SE 1.5) obsługiwane procesory: StrongARM, Xscale obsługiwane OS : PocketPC 2003 - Windows Mobile 5.0 BibliotekiktórychużywabazująnaGNUClasspath0.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 <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 SDK : 3000$ Konto Developera : 99$ (rocznie) Prowizja sklepu: 30-60% Umieszczenie aplikacji: 0$/20$ Czas oczekiwania: 1 dzień Czas oczekiwania: >20 dni application Adobe HTML framework Flash (javascript 5 Microsoft Java Silverlight (applets) weak partially supported Explorer 8 support supported Mozilla good supported supported supported + canvas) web browser Internet supported Firefox supported 10 support Google Chrome supported good partially 17 support supported good partially support supported weak good supported supported support support supported good not supported supported not supported supported supported supported Safari 5 Symbian Anna * RIM 7 * supported supported support Bada 2.0 * supported good support Windows 7.5 * supported good support Czy warto się nauczyć programować urządzenia mobilne ?