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

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
<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 ?

Podobne dokumenty