Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste...
Transcript of Programowanie urządzeń mobilnych · System Zalety Wady Android - open source - częste...
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
Infra red
US
B
WiFi
Bluetooth
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ń
- 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ą
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
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.
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 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
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
Czy warto się nauczyć programować urządzenia mobilne ?