Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Multiplatform mobil fejlesztések

1,264 views

Published on

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.

  • Be the first to comment

Multiplatform mobil fejlesztések

  1. 1. Intelligens környezet ése-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. 2. Az előadás alapfelvetése„Desktop alkalmazás fejlesztő vagyok. Kíváncsivagyok hogyan lehet alkalmazásokat fejleszteni azokos mobilokhoz. Hogyan kezdjek hozzá, mirefigyeljek?”
  3. 3. Melyik platformot válasszam?MOBIL PLATFORMOK
  4. 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. 5. C nyelv• Symbian• Maemo (GTK+)• Android (fejlesztői könyvtárak)Csökken a támogatottsága, a C++ leváltja
  6. 6. Objective C nyelv• iOSA Mac OS X fejlesztők használhatják a jól bevált eszközöket: XCode, Interface Builder
  7. 7. C++ nyelv• Symbian • Natív (egyéni) • Open• Maemo/MeeGo• Bada • Natív (egyéni)• Android (fejlesztői könyvtárak)
  8. 8. C#, VB, .NET compact fw• Windows Phone 7 (Silverlight)• (Symbian)
  9. 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. 10. Python• Symbian• Maemo/MeeGo• Portok léteznek további mobil platformokra is
  11. 11. JavaScript, CSS, HTML• WebOS (HP)• A többi platformon web browser
  12. 12. Ha egyszerre több platformra fejlesztenénkCROSS-PLATFORMMEGOLDÁSOK
  13. 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. 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. 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. 16. Platformok elterjedtsége• Elterjedtek: • Android(33%), Symbian(31%), iOS(16%), RIM(14%)• Feltörekvők • Windows Phone, Maemo/MeeGo, Bada, webOS
  17. 17. A Symbian, a WindowsPhone, és a MeeGo jövője
  18. 18. Mire kell odafigyelnie egy desktop fejlesztőnek mobilon?ÁTTÉRÉS DESKTOPRÓL
  19. 19. Desktop - mobil különbségek• Bemeneti lehetőségek• Erőforrások• Egyéb eltérések
  20. 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. 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. 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
  23. 23. ESETTANULMÁNYDESKTOP - MOBIL VÁLTÁSRA
  24. 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
  25. 25. Maemo - QtCreator(MADDE)
  26. 26. Qt desktop - Maemoeltérések 1/4• Új elemek • Edit Bar • Információs sávok: Note, Banner • Picker Button • Stacked Windows
  27. 27. Qt desktop - Maemoelté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. 28. Qt desktop - Maemoelté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. 29. Qt desktop - Maemoelté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. 30. Mobility 1.1 részei (1/2)API Framework LeírásBearer A telefon hálózati kapcsolat menedzselő APIManagementCamera Fotók, videó készítése, vaku, zoom állításaContacts Contact (címtár) adatok lekérése helyi vagy távoli tárolóbólDocument Dokumentumok metaadat alapján történő keresése, böngészéseGalleryFeedback A vibramotor és a piezo (tactile) rezgő visszajelzések kezeléseLocation Helymeghatározáshoz, POI-k kezeléséhez, térkép és navigáció kezeléséhez szükséges gyűjteményMaps / Térképek és útvonal információk elérése, térképek mozgatása,Navigation jelzések elhelyezése
  31. 31. Mobility 1.1 részei (2/2)API Framework LeírásMessaging 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ólPublish 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éseService Különböző célú szolgáltatások felfedezésére és használatáraFramework szolgáló általános APISystem A rendszerinformációk lekérdezése és értesítés kéréseInformationVersit Versit dokumentumok (vCard, iCal) kezelése.
  32. 32. GYAKORLATI PÉLDA
  33. 33. Mit alkotunk?
  34. 34. Mivel?
  35. 35. Létrehozunk egy projektet
  36. 36. Létrehozunk egy Widgetet
  37. 37. 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, QColorcolor, 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. 38. 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();}
  39. 39. 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); }}
  40. 40. Összeállítjuk a felületet
  41. 41. Bekötjük a szignálokat
  42. 42. Lefordítjuk a platformokra

×