Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste...

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

Transcript of Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste...

Page 1: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Programowanie urządzeń mobilnych

dr inż. Tomasz Walkowiak

Page 2: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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 …

Page 3: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Mobilne urządzenia internetowe

Telefony komórkowe

/smartfony

PDA / Pocket PC (Personal Digital Assistant)

Page 4: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 5: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 6: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Dlaczego taka tematyka ?

ARM

JAVA

Urządzenia peryferyjne

RIA

Prace dyplomowe i

projekty inżynierskie

Steve Furber

Page 7: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Urządzenia mobilne - komunikacja

Infra red

US

B

WiFi

Bluetooth

Page 8: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Urządzenia mobilne - lokalizacja

GPS- Global Positioning System

8

Page 9: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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#

Page 10: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 11: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 12: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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ń

- trudności podczas certyfikowania

oprogramowania

- słabe wyposażenie części urządzeń

- mała popularność w USA

Windows - bardzo dobra integracja z komputerem

wyposażonym w system Windows

- mała liczba urządzeń i

użytkowników

- kolejne wersje system znacznie się

od siebie różnią

Page 13: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

MeeGo ………. ….

Linux

Moblin + Maemo

Page 14: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 15: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Java ME – 350 milionów telefonów

Page 16: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 17: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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) {

}

}

Page 18: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 19: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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óć

Page 20: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 21: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

GameApi

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)

{ } } } }

// 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

}

Pakiet javax.microedition.lcdui.game:

• GameCanvas

• Layer,

• LayerManager,

• Sprite,

• TiledLayer.

Page 22: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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‏Classpath0.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

Page 23: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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$)

Page 24: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Flash Lite – zintegrowane środowisko

Zintegrowane środowisko firmy Adobe

Page 25: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Flash Lite - przykład

Page 26: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

.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

Page 27: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

.NET C#

Page 28: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

.NET C#

Przygotowaną aplikację można już bez większych

problemów przetestować.

Page 29: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Flash Lite – C# przykład

Page 30: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność
Page 31: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 32: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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ę.

Page 33: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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>

Page 34: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Interfejs Użytkownika. Metro UI.

Page 35: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 36: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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

Page 37: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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);

}

Page 38: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

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)

Page 39: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Android - przykład

Page 40: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Android - przykład

Page 41: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Porównanie

Android Market SDK : Darmowe Konto Developera : 25$ (raz) Prowizja sklepu: 30% Umieszczenie aplikacji: Darmowe Czas oczekiwania: 1 dzień

Windows Phone Market SDK : 3000$ Konto Developera : 99$ (rocznie) Prowizja sklepu: 30-60% Umieszczenie aplikacji: 0$/20$ Czas oczekiwania: >20 dni

Page 42: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

application

framework

web browser

Adobe

Flash

HTML 5

(javascript

+ canvas)

Microsoft

Silverlight

Java

(applets)

Internet

Explorer 8

supported weak

support

partially

supported

supported

Mozilla Firefox

10

supported good

support

supported supported

Google Chrome

17

supported good

support

partially

supported

supported

Safari 5 supported good

support

partially

supported

supported

Symbian Anna * weak

support

good

support

supported supported

RIM 7 * supported good

support

not supported supported

Bada 2.0 * supported good

support

not supported supported

Windows 7.5 * supported good

support

supported supported

Page 43: Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste aktualizacje - dobrze wyposażone urządzenia - popularny na całym świecie - duża różnorodność

Czy warto się nauczyć programować urządzenia mobilne ?