SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Intelligens környezet és
e-technológiák



                Multiplatform
   Intelligens környezet és
              mobil fejlesztések
             e-technológiák
                                  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             1
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?”
Melyik platformot válasszam?

MOBIL PLATFORMOK
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)
C nyelv

•   Symbian
•   Maemo (GTK+)
•   Android (fejlesztői könyvtárak)


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


•   iOS


A Mac OS X fejlesztők használhatják a jól bevált
  eszközöket: XCode, Interface Builder
C++ nyelv
•   Symbian
    •   Natív (egyéni)
    •   Open
•   Maemo/MeeGo
•   Bada
    •   Natív (egyéni)
•   Android (fejlesztői könyvtárak)
C#, VB, .NET compact fw


•   Windows Phone 7 (Silverlight)
•   (Symbian)
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)
Python


•   Symbian
•   Maemo/MeeGo
•   Portok léteznek további mobil platformokra is
JavaScript, CSS, HTML


•   WebOS (HP)
•   A többi platformon web browser
Ha egyszerre több platformra fejlesztenénk

CROSS-PLATFORM
MEGOLDÁSOK
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
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
MoSync

•   C, C++
•   Platformok
    •   Android, iOS, Symbian, MeeGo, Java ME
•   Az alacsony szintű funkciók elérhetősége
    platformonként változó
Platformok elterjedtsége

•   Elterjedtek:
    •   Android(33%), Symbian(31%), iOS(16%),
        RIM(14%)
•   Feltörekvők
    •   Windows Phone, Maemo/MeeGo, Bada, webOS
A Symbian, a Windows
Phone, és a MeeGo jövője
Mire kell odafigyelnie egy desktop fejlesztőnek mobilon?

ÁTTÉRÉS DESKTOPRÓL
Desktop - mobil különbségek


•   Bemeneti lehetőségek
•   Erőforrások
•   Egyéb eltéré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
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
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
ESETTANULMÁNY
DESKTOP - MOBIL VÁLTÁSRA
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
Maemo - QtCreator
(MADDE)
Qt desktop - Maemo
eltérések 1/4
•   Új elemek
    •   Edit Bar
    •   Információs sávok: Note, Banner
    •   Picker Button
    •   Stacked Windows
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
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
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,
            …
Mobility 1.1 részei (1/2)
API Framework     Leírás

Bearer            A telefon hálózati kapcsolat menedzselő API
Management

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
Document          Dokumentumok metaadat alapján történő keresése, böngészése
Gallery

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            / Térképek és útvonal információk elérése, térképek mozgatása,
Navigation        jelzések elhelyezése
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       and A Publish and Subscribe API, a Value Space segítségével, lehetővé
Subscribe         teszi különböző célra értékek eltárolását, visszaolvasását, illetve
                  feliratkozást az érték megváltozására.

Sensor             Hozzáférés a HW szenzorokhoz, az eszköz orientáció érzékelése
Service            Különböző célú szolgáltatások felfedezésére és használatára
Framework          szolgáló általános API
System             A rendszerinformációk lekérdezése és értesítés kérése
Information
Versit             Versit dokumentumok (vCard, iCal) kezelése.
GYAKORLATI PÉLDA
Mit alkotunk?
Mivel?
Létrehozunk egy projektet
Létrehozunk egy Widgetet
Megadjuk a megjelenését
void 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);
}
Hozzáadjuk az animációt
MyWidget::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();
}
Forgás irány beállítása
Header:
…
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);
  }
}
Összeállítjuk a felületet
Bekötjük a szignálokat
Lefordítjuk a platformokra
Multiplatform mobil fejlesztések

Más contenido relacionado

Andere mochten auch

12.02.07 Hamdi Turkey Presentation
12.02.07 Hamdi Turkey Presentation12.02.07 Hamdi Turkey Presentation
12.02.07 Hamdi Turkey Presentationm_gill
 
Repeated addition
Repeated additionRepeated addition
Repeated additionfknights
 
Reglamento inspecciones vehiculares_version_final (1)
Reglamento inspecciones vehiculares_version_final (1)Reglamento inspecciones vehiculares_version_final (1)
Reglamento inspecciones vehiculares_version_final (1)Naida Labra
 
Sportimpuls lochem 25 11-2014
Sportimpuls lochem 25 11-2014Sportimpuls lochem 25 11-2014
Sportimpuls lochem 25 11-2014Gerrit van Ginkel
 
20100517 100517 expertsreport
20100517 100517 expertsreport20100517 100517 expertsreport
20100517 100517 expertsreportThomas Liontos
 
Ancient egypt lola
Ancient egypt lolaAncient egypt lola
Ancient egypt lolalolac263
 
Program staff training-2-safety
Program staff training-2-safetyProgram staff training-2-safety
Program staff training-2-safetyJessica Miller
 
Togaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profileTogaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profileMustafa Kuğu
 
Lentera news #17 Agustus 2015 | Merayakan Agustus
Lentera news #17 Agustus 2015 | Merayakan AgustusLentera news #17 Agustus 2015 | Merayakan Agustus
Lentera news #17 Agustus 2015 | Merayakan AgustusAnanta Bangun
 
3落實兩岸經濟貿易協議
3落實兩岸經濟貿易協議3落實兩岸經濟貿易協議
3落實兩岸經濟貿易協議twnewone1
 
Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Affiliate Dag
 

Andere mochten auch (17)

12.02.07 Hamdi Turkey Presentation
12.02.07 Hamdi Turkey Presentation12.02.07 Hamdi Turkey Presentation
12.02.07 Hamdi Turkey Presentation
 
Repeated addition
Repeated additionRepeated addition
Repeated addition
 
Presentation egrek
Presentation egrekPresentation egrek
Presentation egrek
 
Reglamento inspecciones vehiculares_version_final (1)
Reglamento inspecciones vehiculares_version_final (1)Reglamento inspecciones vehiculares_version_final (1)
Reglamento inspecciones vehiculares_version_final (1)
 
Apprentice Induction 13/14
Apprentice Induction 13/14Apprentice Induction 13/14
Apprentice Induction 13/14
 
Sportimpuls lochem 25 11-2014
Sportimpuls lochem 25 11-2014Sportimpuls lochem 25 11-2014
Sportimpuls lochem 25 11-2014
 
20100517 100517 expertsreport
20100517 100517 expertsreport20100517 100517 expertsreport
20100517 100517 expertsreport
 
4 wimax
4 wimax4 wimax
4 wimax
 
Ancient egypt lola
Ancient egypt lolaAncient egypt lola
Ancient egypt lola
 
87693 heart attack1
87693 heart attack187693 heart attack1
87693 heart attack1
 
Cumple blanka
Cumple blankaCumple blanka
Cumple blanka
 
اماني محمود
اماني محموداماني محمود
اماني محمود
 
Program staff training-2-safety
Program staff training-2-safetyProgram staff training-2-safety
Program staff training-2-safety
 
Togaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profileTogaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profile
 
Lentera news #17 Agustus 2015 | Merayakan Agustus
Lentera news #17 Agustus 2015 | Merayakan AgustusLentera news #17 Agustus 2015 | Merayakan Agustus
Lentera news #17 Agustus 2015 | Merayakan Agustus
 
3落實兩岸經濟貿易協議
3落實兩岸經濟貿易協議3落實兩岸經濟貿易協議
3落實兩岸經濟貿易協議
 
Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011
 

Ähnlich wie Multiplatform mobil fejlesztések

Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésOpen Academy
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokoneRise
 
Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Dániel Góré
 
Csonka enikő alkalmazási élmény bemutatása
Csonka enikő alkalmazási élmény bemutatásaCsonka enikő alkalmazási élmény bemutatása
Csonka enikő alkalmazási élmény bemutatásaPOLYGON Informatikai Kft.
 
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekor
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekorÜgyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekor
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekorSzabolcs Bobor
 
VMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERVMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERKiss Tibor
 
Windows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banWindows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banGyörgy Balássy
 
LTCY08 - Zsolt Banki - Sametime
LTCY08 - Zsolt Banki - SametimeLTCY08 - Zsolt Banki - Sametime
LTCY08 - Zsolt Banki - SametimeJanos Szabo
 
Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Mito
 
Felhő alapú számítástechnika
Felhő alapú számítástechnikaFelhő alapú számítástechnika
Felhő alapú számítástechnikaKároly Novák
 
Weboldalak progresszív fejlesztése
Weboldalak progresszív fejlesztéseWeboldalak progresszív fejlesztése
Weboldalak progresszív fejlesztésegyozke
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésOpen Academy
 
PHP alapú keretrendszerek összehasonlítása - védés bemutató
PHP alapú keretrendszerek összehasonlítása - védés bemutatóPHP alapú keretrendszerek összehasonlítása - védés bemutató
PHP alapú keretrendszerek összehasonlítása - védés bemutatóAndras Rutkai
 
Windows IoT - A kütyüoldal
Windows IoT - A kütyüoldalWindows IoT - A kütyüoldal
Windows IoT - A kütyüoldalGyörgy Balássy
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isKálmán "KAMI" Szalai
 
Appsters - mobile
Appsters - mobile Appsters - mobile
Appsters - mobile Andras Nyiro
 

Ähnlich wie Multiplatform mobil fejlesztések (20)

Windows 8
Windows 8Windows 8
Windows 8
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
 
Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?
 
Firefox OS - Az első év (Veletech)
Firefox OS - Az első év (Veletech)Firefox OS - Az első év (Veletech)
Firefox OS - Az első év (Veletech)
 
Desktop virtualizáció
Desktop virtualizációDesktop virtualizáció
Desktop virtualizáció
 
Csonka enikő alkalmazási élmény bemutatása
Csonka enikő alkalmazási élmény bemutatásaCsonka enikő alkalmazási élmény bemutatása
Csonka enikő alkalmazási élmény bemutatása
 
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekor
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekorÜgyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekor
Ügyfélkezelés és munkamenet tervezés mobilalkalmazások fejlesztésekor
 
VMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERVMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKER
 
Firefox OS beszámoló
Firefox OS beszámolóFirefox OS beszámoló
Firefox OS beszámoló
 
Windows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banWindows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-ban
 
LTCY08 - Zsolt Banki - Sametime
LTCY08 - Zsolt Banki - SametimeLTCY08 - Zsolt Banki - Sametime
LTCY08 - Zsolt Banki - Sametime
 
Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?Kotlin Multiplatform: Ilyen minek van?
Kotlin Multiplatform: Ilyen minek van?
 
Felhő alapú számítástechnika
Felhő alapú számítástechnikaFelhő alapú számítástechnika
Felhő alapú számítástechnika
 
Weboldalak progresszív fejlesztése
Weboldalak progresszív fejlesztéseWeboldalak progresszív fejlesztése
Weboldalak progresszív fejlesztése
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
PHP alapú keretrendszerek összehasonlítása - védés bemutató
PHP alapú keretrendszerek összehasonlítása - védés bemutatóPHP alapú keretrendszerek összehasonlítása - védés bemutató
PHP alapú keretrendszerek összehasonlítása - védés bemutató
 
Windows IoT - A kütyüoldal
Windows IoT - A kütyüoldalWindows IoT - A kütyüoldal
Windows IoT - A kütyüoldal
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla is
 
Appsters - mobile
Appsters - mobile Appsters - mobile
Appsters - mobile
 

Mehr von Open Academy

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálvaOpen Academy
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...Open Academy
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profilingOpen Academy
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyűOpen Academy
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világaOpen Academy
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOpen Academy
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanOpen Academy
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanOpen Academy
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiOpen Academy
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatbanOpen Academy
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Open Academy
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Open Academy
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésOpen Academy
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenOpen Academy
 

Mehr von Open Academy (17)

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 

Multiplatform mobil fejlesztések

  • 1. Intelligens környezet és e-technológiák Multiplatform Intelligens környezet és mobil fejlesztések e-technológiák 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 1
  • 2. 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?”
  • 4. 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)
  • 5. C nyelv • Symbian • Maemo (GTK+) • Android (fejlesztői könyvtárak) Csökken a támogatottsága, a C++ leváltja
  • 6. Objective C nyelv • iOS A Mac OS X fejlesztők használhatják a jól bevált eszközöket: XCode, Interface Builder
  • 7. C++ nyelv • Symbian • Natív (egyéni) • Open • Maemo/MeeGo • Bada • Natív (egyéni) • Android (fejlesztői könyvtárak)
  • 8. C#, VB, .NET compact fw • Windows Phone 7 (Silverlight) • (Symbian)
  • 9. 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)
  • 10. Python • Symbian • Maemo/MeeGo • Portok léteznek további mobil platformokra is
  • 11. JavaScript, CSS, HTML • WebOS (HP) • A többi platformon web browser
  • 12. Ha egyszerre több platformra fejlesztenénk CROSS-PLATFORM MEGOLDÁSOK
  • 13. 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
  • 14. 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
  • 15. MoSync • C, C++ • Platformok • Android, iOS, Symbian, MeeGo, Java ME • Az alacsony szintű funkciók elérhetősége platformonként változó
  • 16. Platformok elterjedtsége • Elterjedtek: • Android(33%), Symbian(31%), iOS(16%), RIM(14%) • Feltörekvők • Windows Phone, Maemo/MeeGo, Bada, webOS
  • 17. A Symbian, a Windows Phone, és a MeeGo jövője
  • 18. Mire kell odafigyelnie egy desktop fejlesztőnek mobilon? ÁTTÉRÉS DESKTOPRÓL
  • 19. Desktop - mobil különbségek • Bemeneti lehetőségek • Erőforrások • Egyéb eltérések
  • 20. 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
  • 21. 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
  • 22. 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
  • 24. 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
  • 26. Qt desktop - Maemo eltérések 1/4 • Új elemek • Edit Bar • Információs sávok: Note, Banner • Picker Button • Stacked Windows
  • 27. 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
  • 28. 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
  • 29. 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, …
  • 30. Mobility 1.1 részei (1/2) API Framework Leírás Bearer A telefon hálózati kapcsolat menedzselő API Management 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 Document Dokumentumok metaadat alapján történő keresése, böngészése Gallery 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 / Térképek és útvonal információk elérése, térképek mozgatása, Navigation jelzések elhelyezése
  • 31. 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 and A Publish and Subscribe API, a Value Space segítségével, lehetővé Subscribe teszi különböző célra értékek eltárolását, visszaolvasását, illetve feliratkozást az érték megváltozására. Sensor Hozzáférés a HW szenzorokhoz, az eszköz orientáció érzékelése Service Különböző célú szolgáltatások felfedezésére és használatára Framework szolgáló általános API System A rendszerinformációk lekérdezése és értesítés kérése Information Versit Versit dokumentumok (vCard, iCal) kezelése.
  • 37. Megadjuk a megjelenését void 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); }
  • 38. Hozzáadjuk az animációt MyWidget::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(); }
  • 39. Forgás irány beállítása Header: … 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); } }