43
Intelligens környezet és e-technológiák 1 Intelligens környezet és e-technológiák Multiplatform mobil fejlesztések Bányász Gábor BME - Automatizálási és Alkalmazott Informatikai Tanszék TÁMOP-4.2.1/B-09/1/KMR-2010-0002

Multiplatform mobil fejlesztések

Embed Size (px)

DESCRIPTION

Aki manapság bárki számára elérhető mobilalkalmazás fejlesztésére adja a fejét, tetemes plusz munkát vállal magára.

Citation preview

Page 1: Multiplatform mobil fejlesztések

Intelligens környezet és

e-technológiák

1

Intelligens környezet és e-technológiák

Multiplatform mobil fejlesztések

Bányász Gábor

BME - Automatizálási és Alkalmazott Informatikai Tanszék

TÁMOP-4.2.1/B-09/1/KMR-2010-0002

Page 2: Multiplatform mobil fejlesztések

Az előadás alapfelvetése

„Desktop alkalmazás fejlesztő vagyok. Kíváncsi

vagyok hogyan lehet alkalmazásokat fejleszteni az

okos mobilokhoz. Hogyan kezdjek hozzá, mire

figyeljek?”

Page 3: Multiplatform mobil fejlesztések

MOBIL PLATFORMOKMelyik platformot válasszam?

Page 4: Multiplatform mobil fejlesztések

Szoftver platformok

• A korai mobileszközökre nem lehetett harmadik félnek szoftvert fejleszteni

• Mára a helyzet megváltozott: nem ritka, hogy egy készülékre akár 3 különféle nyelven is lehet szoftvert írni (pl. natív C++, Java ME, Python)

• Mobil szoftverplatform

• Programozási nyelv

• Kódkönyvtárak

• Fejlesztőeszközök (SDK, emulátor)

Page 5: Multiplatform mobil fejlesztések

C nyelv

• Symbian

• Maemo (GTK+)

• Android (fejlesztői könyvtárak)

Csökken a támogatottsága, a C++ leváltja

Page 6: Multiplatform mobil fejlesztések

Objective C nyelv

• iOS

A Mac OS X fejlesztők használhatják a jól bevált

eszközöket: XCode, Interface Builder

Page 7: Multiplatform mobil fejlesztések

C++ nyelv• Symbian

• Natív (egyéni)

• Open

• Maemo/MeeGo

• Bada

• Natív (egyéni)

• Android (fejlesztői könyvtárak)

Page 8: Multiplatform mobil fejlesztések

C#, VB, .NET compact fw

• Windows Phone 7 (Silverlight)

• (Symbian)

Page 9: Multiplatform mobil fejlesztések

Java• Java ME (Java Mobile Edition)

• A Java mobilkészülékekre kifejlesztett változata

• A legtöbb mobilkészülék által támogatott

• Kompatibilitási problémák (extension-ök miatt)

• Módosított Java

• Android (Dalvik JVM)

• BlackBerry (RIM API)

Page 10: Multiplatform mobil fejlesztések

Python

• Symbian

• Maemo/MeeGo

• Portok léteznek további mobil platformokra is

Page 11: Multiplatform mobil fejlesztések

JavaScript, CSS, HTML

• WebOS (HP)

• A többi platformon web browser

Page 12: Multiplatform mobil fejlesztések

CROSS-PLATFORM

MEGOLDÁSOK

Ha egyszerre több platformra fejlesztenénk

Page 13: Multiplatform mobil fejlesztések

Flash lite

• Flash mobilokra optimalizált verziója

• Android, iOS, BlackBerry Tablet OS

• Alapvetően UI készítésre, de képes elérni a készülék

bizonyos alacsonyszintű funkcióit is

• Gyakran lassúcska a vektoros grafika miatt

Page 14: Multiplatform mobil fejlesztések

Qt• C++

• Platformok

• Asztali platformok

• Linux, Windows, Mac OS X

• Beágyazott platformok

• Embedded Linux, Windows CE, QNX, VxWorks

• Mobil platformok

• Symbian, Maemo/MeeGo, Android (alpha)

• Képes elérni az eszközök alacsony funkcióit is

Page 15: Multiplatform mobil fejlesztések

MoSync

• C, C++

• Platformok

• Android, iOS, Symbian, MeeGo, Java ME

• Az alacsony szintű funkciók elérhetősége

platformonként változó

Page 16: Multiplatform mobil fejlesztések

Platformok elterjedtsége

• Elterjedtek:

• Android(33%), Symbian(31%), iOS(16%),

RIM(14%)

• Feltörekvők

• Windows Phone, Maemo/MeeGo, Bada, webOS

Page 17: Multiplatform mobil fejlesztések

A Symbian, a Windows

Phone, és a MeeGo jövője

Page 18: Multiplatform mobil fejlesztések

ÁTTÉRÉS DESKTOPRÓL

Mire kell odafigyelnie egy desktop fejlesztőnek mobilon?

Page 19: Multiplatform mobil fejlesztések

Desktop - mobil különbségek

• Bemeneti lehetőségek

• Erőforrások

• Egyéb eltérések

Page 20: Multiplatform mobil fejlesztések

Bemeneti lehetőségek• Érintő képernyő nem egér

• Csak bal klikk

• Nincs egér mozgás

• Nehéz célzás

• Multitouch

• Gombok

• Néhány, főként rendszer funkciókhoz

• Billentyűzet

• Ha van, akkor is korlátozott

Page 21: Multiplatform mobil fejlesztések

Erőforrások

• Számítási teljesítmény

• Memória

• Háttértár

• Akkumulátor

• Hosszú számítások, folyamatos kommunikáció

szívják el az energiát.

• A kommunikáció pénzbe kerül

Page 22: Multiplatform mobil fejlesztések

Egyéb eltérések

• Azonos fejlesztő platform esetén is adódnak eltérések

• Általában kezelhetőek és egységes maradhat a forrás

Page 23: Multiplatform mobil fejlesztések

ESETTANULMÁNY

DESKTOP - MOBIL VÁLTÁSRA

Page 24: Multiplatform mobil fejlesztések

Mennyire cross az a cross-

platform?

• Qt-val a cross-platform egyszerű

• Az SDK-val lefordítjuk a cél platformra

• A Qt lib automatikusan kezeli a megjelenést

Page 25: Multiplatform mobil fejlesztések

Maemo - QtCreator

(MADDE)

Page 26: Multiplatform mobil fejlesztések

Qt desktop - Maemo

eltérések 1/4

• Új elemek

• Edit Bar

• Információs sávok: Note, Banner

• Picker Button

• Stacked Windows

Page 27: Multiplatform mobil fejlesztések

Qt desktop - Maemo

eltérések 2/4

• A desktop window managerhez képest megkötések

vannak:

• Nincs átlátszó ablak

• Az ablakok mérete normál vagy teljes képernyős

• Tájkép és portré mód

Page 28: Multiplatform mobil fejlesztések

Qt desktop - Maemo

eltérések 3/4

• Nem mindent widget van adaptálva, csak az

általánosabbak

• Az általános dialógus ablakok hiányoznak

• Egy szintű menü

• Kinetikus scroll

Page 29: Multiplatform mobil fejlesztések

Qt desktop - Maemo

eltérések 4/4

• Qt Mobility

• Mobilspecifikus funkciókat tömörítő API-k

• Sok funkció desktop operációs rendszeren is

használható

• Messaging, Multimedia, Publish and Subscribe,

Page 30: Multiplatform mobil fejlesztések

Mobility 1.1 részei (1/2)API Framework Leírás

BearerManagement

A telefon hálózati kapcsolat menedzselő API

Camera Fotók, videó készítése, vaku, zoom állítása

Contacts Contact (címtár) adatok lekérése helyi vagy távoli tárolóból

DocumentGallery

Dokumentumok metaadat alapján történő keresése, böngészése

Feedback A vibramotor és a piezo (tactile) rezgő visszajelzések kezelése

Location Helymeghatározáshoz, POI-k kezeléséhez, térkép és navigációkezeléséhez szükséges gyűjtemény

Maps /Navigation

Térképek és útvonal információk elérése, térképek mozgatása,jelzések elhelyezése

Page 31: Multiplatform mobil fejlesztések

Mobility 1.1 részei (2/2)API Framework Leírás

Messaging A különböző üzenetkezelési lehetőségek elérése (SMS, MMS, e-mail)

Multimedia Média felvétele, visszajátszása, rádió

Organizer Naptár, ütemezés, személyes adatok (feljegyzések, napló/blog)elérése lokális vagy távoli szolgáltatóktól

Publish andSubscribe

A Publish and Subscribe API, a Value Space segítségével, lehetővéteszi különböző célra értékek eltárolását, visszaolvasását, illetvefeliratkozást az érték megváltozására.

Sensor Hozzáférés a HW szenzorokhoz, az eszköz orientáció érzékelése

ServiceFramework

Különböző célú szolgáltatások felfedezésére és használatáraszolgáló általános API

SystemInformation

A rendszerinformációk lekérdezése és értesítés kérése

Versit Versit dokumentumok (vCard, iCal) kezelése.

Page 32: Multiplatform mobil fejlesztések

GYAKORLATI PÉLDA

Page 33: Multiplatform mobil fejlesztések

Mit alkotunk?

Page 34: Multiplatform mobil fejlesztések

Mivel?

Page 35: Multiplatform mobil fejlesztések

Létrehozunk egy projektet

Page 36: Multiplatform mobil fejlesztések

Létrehozunk egy Widgetet

Page 37: Multiplatform mobil fejlesztések

Megadjuk a megjelenésétvoid MyWidget::paintEvent(QPaintEvent*)

{

QPainter p(this);

qreal deg1 = state * 2 * M_PI;

drawThing(p, c + QPointF(c.x() * 0.6 * qSin(deg1), c.y() * 0.6 * qCos(deg1)), r,

Qt::red, 0.55 + 0.45 * qCos(deg1));

}

void MyWidget::drawThing(QPainter& p, const QPointF& center, qreal r, QColor

color, qreal opacity)

{

QRadialGradient g(center, 10);

g.setSpread(QGradient::RepeatSpread);

g.setColorAt(0.0, Qt::white);

g.setColorAt(1.0, color);

p.setBrush(g); p.setOpacity(opacity);

p.drawEllipse(center, r, r);

}

Page 38: Multiplatform mobil fejlesztések

Hozzáadjuk az animációtMyWidget::MyWidget(QWidget* parent) :

QWidget(parent)

{

state = 0;

pTimeLine = new QTimeLine(3000, this);

pTimeLine->setCurveShape(QTimeLine::LinearCurve);

connect(pTimeLine, SIGNAL(valueChanged(qreal)), this,

SLOT(doAnim(qreal)));

}

void MyWidget::doAnim(qreal v)

{

state = v;

update();

}

void MyWidget::mousePressEvent(QMouseEvent*)

{

if(pTimeLine->state() != QTimeLine::Running) pTimeLine->start();

}

Page 39: Multiplatform mobil fejlesztések

Forgás irány beállításaHeader:

public slots:

void slotForward(int forward);

Forrás:

void MyWidget::slotForward(int forward)

{

if(forward == Qt::Unchecked)

{

pTimeLine->setDirection(QTimeLine::Backward);

}

else

{

pTimeLine->setDirection(QTimeLine::Forward);

}

}

Page 40: Multiplatform mobil fejlesztések

Összeállítjuk a felületet

Page 41: Multiplatform mobil fejlesztések

Bekötjük a szignálokat

Page 42: Multiplatform mobil fejlesztések

Lefordítjuk a platformokra

Page 43: Multiplatform mobil fejlesztések