Programowanie urządzeń mobilnych. dr inż. Tomasz Walkowiak



Podobne dokumenty
Java Platform Micro Edition

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Piotr Orzechowski. Technologie Biznesu Elektronicznego

ZAPOZNANIE SIĘ Z TWORZENIEM

Autor : Mateusz Kupczyk

Programowanie aplikacji na urządzenia mobilne

Wprowadzenie do J2ME

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

M-biznes: Mobile Business. Realizacja aplikacji mobilnych w języku Java. Typy urządzeń przenośnych. Przykłady zastosowań

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Wykład 1: Wprowadzenie do technologii Java

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

Android - wprowadzenie. Łukasz Przywarty

WPROWADZENIE DO JĘZYKA JAVA

Cloud Customers Relationships Wymagania wersja systemu:

OpenLaszlo. OpenLaszlo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie obiektowe

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Windows Mobile. Andy Wigley, Daniel Moth, Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press 2007

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Narzędzia i platformy programowania w Internecie

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 3

Programowanie obiektowe zastosowanie języka Java SE

Specyfikacja Wymagań Oprogramowania

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Java jako język programowania

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Wymagania systemowe dla Qlik Sense. Qlik Sense February 2018 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Platforma szkoleniowa krok po kroku

SEMINARIUM DYPLOMOWE

Tworzenie cross-platformowych aplikacji w Xamarin.Forms

Czym jest technologia Bluetooth?

Wymagania systemowe dla Qlik Sense. Qlik Sense June 2017 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

STWORZENIE PRZYKŁADOWEJ

Programowanie w C. dr inż. Stanisław Wszelak

Szczegółowy Opis Przedmiotu Zamówienia

Wymagania systemowe dla Qlik Sense. Qlik Sense 3.0 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Systemy operacyjne na platformach mobilnych

Systemy wbudowane i mobilne

Laboratorium programowania urządzeń mobilnych

Windows Phone 7. Zacznij, Twórz, Zarabiaj. Paweł Żochowski. Action Centrum Edukacji

Wymagania systemowe dla Qlik Sense. Qlik Sense 3.1 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Instrukcja instalacji oprogramowania dla środowiska Windows

Wstęp do programowania w języku Java

Wyświetlanie publikacji w formacie DjVu. Wyświetlanie publikacji w Bałtyckiej Bibliotece Cyfrowej można realizować na 3 sposoby:

Zagadnienia wstępne WSTĘP DO PROGRAMOWANIA APLIKACJI MOBILNYCH DLA SYSTEMU ANDROID

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Systemy operacyjne na platformach mobilnych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

I2: J2ME programowanie w NetBeans IDE Wydział Transportu PW semestr /11

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Wymagania systemowe dla Qlik Sense. Qlik Sense June 2018 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Szczegółowy opis zamówienia:

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

MOBILNA BANKOWOŚĆ potrzeba czy moda?

Programowanie RAD Delphi

Programowanie urządzeń mobilnych na platformie Java ME

Programowanie dla ios

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Wstęp do programowania w języku Java

Podstawy programowania. Wprowadzenie

Systemy operacyjne dla telefonów komórkowych i urządzeń typu smartphone

OpenGL Embedded Systems

Google Web Toolkit. Piotr Findeisen

Usługi mobilne ipko biznes

Programowanie urządzeń mobilnych

Wstęp do programowania w języku Java

Platforma szkoleniowa krok po kroku. Poradnik Kursanta

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Moc, wydajność i łatwa obsługa

Środowiska i platformy programistyczne

BUDOWA APLIKACJI NA PLATFORMĘ IPHONE/IPAD. dr inż. Marcin Tomana

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Konspekt pracy inżynierskiej

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

SOP System Obsługi Parkingów

Programowanie obiektowe. Wprowadzenie

Java w Internecie - czy to ma sens? ;)

SYLABUS/KARTA PRZEDMIOTU

Multimedia JAVA. Historia

Przetwarzanie danych w chmurze

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

ZAPOZNANIE SIĘ ZE ŚRODOWISKIEM MICROSOFT VISUAL STUDIO 2005 WYKORZYSTYWANYM W

Transkrypt:

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?