SlideShare a Scribd company logo
1 of 35
Qt is © 2009 Nokia Corporation and/or its subsidiaries. Nokia, Qt, Qt Development Frameworks and their respective 
             logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide. 
Qt Mobility is not about supplying ready made 
       solutions but delivering the means to create great 
       software using your own skill and creativity.
         f                        k ll d




Inspire your creativity for using the new Qt Mobility APIs 
Inspire your creativity for using the new Qt Mobility APIs
in your own projects and developments.




Dominik Gusenbauer, 2010                                      2
Q      g
Qt Background

The Qt Mobility Project

Overview of new Mobility APIs
       Introducing description
       Some code snippets
       Example application (http://bit.ly/cgRI7V)
       E    l     li i (h //bi l / RI7V)

Open Discussion/Development
Open Discussion/Development




Dominik Gusenbauer, 2010                            3
Q              y                    p
Qt traditionally based in the desktop world
Cross‐platform application and UI framework
       Linux
       Mac OS‐X
       Windows


Previous ports to embedded platforms
Simple port of desktop APIs
No specific APIs for mobile platforms
N      ifi API f       bil l tf



Dominik Gusenbauer, 2010                      4
y       (    )
Takeover of Trolltech by Nokia (2008)
Availability of additional features through mobile domain
       Location
       Sensors
       etc.

Need for specific APIs to support mobile device functionality on 
particular platforms (Symbian, Maemo, Windows Mobile/CE)
particular platforms (Symbian Maemo Windows Mobile/CE)


                           Solution: Qt Mobility
                           S l ti    Qt M bilit

Dominik Gusenbauer, 2010                                            5
y      g       y                        g
       The Mobility APIs generally intend to be an enabling 
       technology.



New Qt APIs add support for mobile device functionality
                  pp                                  y
Enlarge developer offering irrespective of actual platform
Functional back‐ends implementation on all platforms where 
it makes sense
Simplify cross‐platform transfer of applications even between 
desktop and mobile world


Dominik Gusenbauer, 2010                                         6
p      pp
Scope of application

                                          Application Use Cases

                           80 % of Application Use Cases



                                                                                 Native Platform 
                   New Qt Developer Offering
                                                                                      APIs


                                              Native Platform


       Symbian                        Maemo                Win. Mobile/CE                  Others

                                                                     Source: A. Luddy – The Mobility Project, 2009



Dominik Gusenbauer, 2010                                                                                             7
p
Roadmap

    Q1 2009           Q2 2009            Q3 2009            Q4 2009            Q1 2010        …
    Q1 2009           Q2 2009            Q3 2009            Q4 2009            Q1 2010        …

 Qt Mobile Extensions    Qt Mobile Extensions    Qt Mobile Extensions    Qt Mobility APIs         Qt Mobility APIs 
 (Techn. Preview 1)      (Techn. Preview 2)      (Techn. Preview 3)      (Technology Preview)     (Beta Release)

    Qt 4.5 Garden           Qt 4.5 Garden           Qt 4.5.2 Tower          Qt 4.6                   Qt 4.6                 API Completeness
    Early preview of        Enhancement of          Major                   Major changes to         Added preview for         Calendar
    mobile APIs (pre‐       the TP 1 package        enhancements of         Mobile Extensions        Sensors API and           Location and 
    alpha stage)                                    previous packages       Installer package        Camera API                Landmarks
                                                    Added Alarms and        of pre‐built libs        Enhanced example          Sensors
 AP Manager
 AP‐Manager              Qt Mobility Project 
                         Qt Mobility Project        Calendar API
                                                    Calendar API                                     applications
 Audio                   announced                  Added email          Bearer Management                                  Full Release of 
 Camera                                             support within       Contacts                                           Mobility Project
 Contacts                                           Messaging API        Location
 Landmarks                                          Installer package    Messaging
 Location                                           of pre‐built libs    Multimedia
 Media
    d                                                                    Publish and Subscribe
                                                                           bl h d b b
 Messaging                                                               Service Framework
 Profile                                                                 System Information
 Sensors                                                                 Versit
 System Information
 Telephony
     p    y
 Vibra
                                                                                            Source: http://qt.nokia.com/developer/qt‐roadmap

Dominik Gusenbauer, 2010                                                                                                                       8
p        y
Platform Compatibility



                                 S60 rd Edition

                                 S60 th Edition
                                                                                                                                             Functional back‐end 




                                                                  mbian 10.1
                  API Maturity




                                                    mbian 9.2
                                                                                                                                             implementation available.




                                                                                                   CE/Mobile
                                    1, FP2) 




                                                                                                     ndows 



                                                                                                                 ndows 




                                                                                                                                    c OS‐X
                                                                                 emo 5


                                                                                           emo 6




                                                                                                               XP/Vista
                                                                                                                                             Functional back‐end



                                   0 3

                                   0 5




                                                                                                                             ux
                     el
                  Leve




                                                                               Mae


                                                                                         Mae
                                 (FP1




                                                                                                                                  Mac
                                                  Sym


                                                                Sym




                                                                                                                          Linu
                                                                                                   Win



                                                                                                               Win
                                                                                                                                             implementation available 
                                                                                                                                             but not complete.
Service 
                  BETA                                                                                                                       Work on functional back‐
Framework API
                                                                                                                                             end implementation. No 
Messaging API
     g g          BETA                                                                                                                       platform specific code 
                                                                                                                                             inside Qt API.
Bearer 
                  BETA                                                                                                                       No functional back‐end
Management API
                                                                                                                                             implementation.
Publish and
                  BETA
Subscribe API

Contacts API      BETA

Location API      BETA

Multimedia API    BETA

System 
                  BETA
Information API

Sensor API          TP

Camera API
Camera API          TP

Versit API          TP

                           Source: http://qt.nokia.com/doc/qtmobility‐1.0‐beta/index.html#platform‐compatability
                                                                                                                                                                         9
We want to create a…
     mobile application
     which is cross‐platform



Scenario/Idea: Fall Detection Agent
        /                      g
     Automatically detects when a person falls down
     Notification of predefined contact person(s) – first aid, 
     emergency, …


Dominik Gusenbauer, 2010                                          10
p
Purpose
Provides access to various hardware sensors on a device

     Supports both low‐level, real‐time sensors (accelerometer 
     etc.) and high level sensors (device orientation etc.)
     etc.) and high‐level sensors (device orientation etc.)
     Each sensor provides certain update policies (polling, timed 
     updates, on value changed etc.)
     updates on value changed etc )
     Plugin based approach – utilizes dedicated 
     backend library implementations for 
     backend library implementations for
     concrete hardware sensor access
Note: The Sensor API is still in a technology preview state
N t Th S         API i till i t h l               i    t t
and under development or subject to change respectively.
Dominik Gusenbauer, 2010                                             11
Basic architecture overview
                                                              Holds the actual 
  Base class for concrete                                     sensor readings.
  hardware sensors.
                                                                      Interface – provides callback 
                                           QSensorReading             facility for async. notifications. 

                           1           *
       QSensor
       QS                                   QSensorFilter
                                            QS     Filt               Supported hardware sensors:
                                                                      S     t dh d
                                                                      ‐ Accelerometer
                                                                      ‐ Ambient Light Sensor
                  QSensorManager                                      ‐ Compass
                                                                      ‐ Magnetometer
                                                                      ‐ Orientation Sensor
                 << creates, instantiates >>                          ‐ Proximity Sensor
                                                                      ‐ Rotation Sensor
                   QSensorBackend                                     ‐ Tap Sensor


  Symbian Sensor       Maemo Sensor                   …         QSensorBackend instance is created by a 
    (backend)           (backend)                 (backend)     factory class for concrete sensor on demand
                                                                factory class for concrete sensor on demand.


Dominik Gusenbauer, 2010                                                                                       12
int main(int argc, char** argv) {
    QCoreApplication app(argc, argv);

      // Try to instantiate sensor                     class AccelerometerFilter
      QAccelerometer sensor;                               : public QAccelerometerFilter
      sensor.connect();                                {
      if (!sensor isAvailable()) {
         (!sensor.isAvailable())                       public:
        qWarning(“Sensor not available.”);               bool filter(QAccelerometerReading* r) {
        return 1;                                          QString format(“%0.2f %0.2f %0.2f”);
      }                                                    qDebug() << “Acceleration: “
                                                               << QString().sprintf(format,
      // U
         Use async. callback facility
                      llb k f ilit                                 r >x(),
                                                                   r->x()
      // instead of signals and slots                              r->y(),
      // (faster)                                                  r->z());
      AccelerometerFilter filter;
      sensor.setSignalEnabled(false);                          // Do not store the reading in the
      sensor.addFilter(&filter);                               // sensor
      // Set update interval as fast as                        return false;
      // the sensor can go                                 }
      sensor.setUpdateInterval(100);                   }
      // Start sensor                                                        Process actual sensor 
      sensor.start();                                                        reading.

      return app.exec();
  }
                           Reading actual device 
                           Reading actual device
                           acceleration from sensor.

Dominik Gusenbauer, 2010                                                                              13
Features we need …
     Acceleration sensor readings 
     Current location
     Contacts for notification
     Messaging for notification




Dominik Gusenbauer, 2010             14
p
Purpose
Receive, access and distribute location data using arbitrary and 
independent data sources
independent data sources

     Stream location information
     Stream location information
     Abstracts underlying location technology
     (GPS, Cell Network, WiFi etc.)
     (GPS Cell‐Network WiFi etc )
     Provides notifications when entering or 
     leaving specified location range
     leaving specified location range
     Simplifies implementation of custom 
     position data sources
     position data sources

Dominik Gusenbauer, 2010                                            15
Basic architecture overview
         Actual position data: Longitude, 
         Latitude, Altitude, Bearing etc.        Actual satellite information: 
                                                 number of satellites, signal 
                                                      b    f t llit      i   l
                                                 strengths, satellite elevation etc.

        QGeoPositionInfo
                                                                          Enables the detection of proximity 
                                                                          Enables the detection of proximity
        QGeoCoordinate                   QGeoSatelliteInfo                changes for a specified set of 
                                                                          coordinates.



    QGeoPositionInfoSource           QGeoSatelliteInfoSource                 QGeoAreaMonitor

                                             Basic Location API


   Symbian Location 
                            Maemo Location API                    …                    Serial NMEA Source
    Acquisition API

                                                                                       Qt software emulation


Dominik Gusenbauer, 2010                                                                                        16
Requesting actual location 
  class LocationInfo : public QObject {             information from data source.
                                                    information from data source
    Q_OBJECT

  public:
    LocationInfo(QObject* parent) : QObject(parent) {
      QGeoPositionInfoSource
      QGeoPositionInfoSource* src =
          QGeoPositionInfoSource::createDefaultSource();
      if (src) {
        connect(src, SIGNAL(positionUpdated(QGeoPositionInfo)),
            this, SLOT(updatePosition(QGeoPositionInfo));
        connect(src, SIGNAL( d t Ti
              t(     SIGNAL(updateTimeout()), thi
                                        t()) this, SLOT( d t Ti
                                                    SLOT(updateTimeout()));
                                                                     t()))
        src->requestUpdate(5000); // Start request for actual position
      }
    }

  private slots:
    void updatePosition(const QGeoPositionInfo& info) {
      qDebug() << “Current position: ” << info;
    }
    void updateTimeout() {
      // Current location could not be retrieved within the specified timeout
      // of 5 seconds.
      qWarning(“Failed to retrieve current position.”);
    }
  }



Dominik Gusenbauer, 2010                                                            17
Features we need …
     Acceleration sensor readings 
     Current location
     Contacts for notification
     Messaging for notification




Dominik Gusenbauer, 2010             18
p
Purpose
Management of contact data in a platform independent and 
datastore‐agnostic way
datastore‐agnostic way

     Introduces a generic abstraction level 
     Introduces a generic abstraction level
     for personal information data
     Use of contact data stores (local and remote)
     Use of contact data stores (local and remote)
     Supports asynchronous operations on data 
     stores (enabling remote contact stores)
     stores (enabling remote contact stores)
     Modify and introspect available contact data
     Add application specific data to contacts (attributes etc.)
Dominik Gusenbauer, 2010                                           19
Basic architecture overview
                 Contact name, address, phone 
                 number etc.                                        Provides specification for a detail 
                                                                    in any particular contact. Defines 
                                                                    semantics of the representation 
        QContactDetail                                              and use of data details.



            QContact                              Detail Definition                    QAbstractContactRequest
                                           QMap<Qstring, QContactDetailDefinition>
                                           QMap<Qstring, QContactDetailDefinition>

     create, read, update, delete                   query and update                          asynchronous operations


                                                QContactManager


                                       QContactManagerEngine (plugin)
                                       QC t tM        E i     plugin)
                                                               l i

                                     Symbian Contact                Meamo Contact 
     Default Store                                                                                  Other Contact Store
                                          Store                        Store

                                                                                     Source: A. Luddy – The Mobility Project, 2009

Dominik Gusenbauer, 2010                                                                                                             20
// Construct contact manager for default contact backend
                           g
  QContactManager* cm = new QContactManager();
  // Create example contact
  QContact example;

  // Add contact name
  QContactName name;
  name.setFirst(“John”);
  name.setLast(“Doe”);
              (      )
  example.saveDetail(&name);

  // Add contact email address
  QContactEmailAddress email;
  email.setContexts(QContactDetail::ContextHome);
  email.setEmailAddress(“john.doe@example.com”);
  example.saveDetail(&email);

  // Finally, save the contact details
  cm->saveContact(&example);
                                                    Create an example contact and 
                                                    populate it with data.



Dominik Gusenbauer, 2010                                                             21
// Get the contact definition we want to modify (
                                                y (cm is a
  // previously created QContactManager object)
  QMap<QString, QContactDetailDefinition> def =
      cm->detailDefinitions();
  Q
  QContactDetailDefinition modified =
      def.value(QContactNote::DefinitionName);

  // Define new field ‘Interests’
  Q
  QContactDetailDefinitionField field;
  field.setDataType(QVariant::String);
  QMap<QString, QContactDetailDefinitionField> fields =
      modified.fields();

  // Insert new field to the list of contact’s fields and update
  // the contact’s field definitions
  fields.insert(“Interests”, field);
  modified.setFields(fields);

  // Save the updated field definitions back to the manager
  cm->saveDetailDefinition(modified);
                                              Add custom field  Interests to a note
                                              Add custom field “Interests” to a note 
                                              associated with a contact.

Dominik Gusenbauer, 2010                                                                22
// Create new contact detail filter
  QContactDetailFilter filter;
  filter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName,
      QContactPhoneNumber::FieldNumber);

  // Specify the requested value and filter matching criteria
  QString incomingNbr(“+436641234567”);
  filter.setValue(incomingNbr);
  filter.setMatchFlags(QContactFilter::MatchExactly);
                    g (Q                          y)

  // Fetch matching contacts list for specified filter (cm is a
  // previously created QContactManager object)
  QList<QContactLocalId> matches = cm->contacts(filter);

  for (int i = 0; i < matches.size(); ++i)
    qDebug() << cm->contact(matches.at(i));




                                              Search for a contact based on an 
                                                     f
                                              incoming phone call id.

Dominik Gusenbauer, 2010                                                          23
Features we need …
     Acceleration sensor readings 
     Current location
     Contacts for notification
     Messaging for notification




Dominik Gusenbauer, 2010             24
p
Purpose
Provide a common interface for handling Email, SMS and MMS 
messages

     Send and retrieve messages (with or without attachments)
     Send and retrieve messages (with or without attachments)
     Notification of new messages
     Work with stored or remote messages
        k    h      d
     Launches preferred messaging client for 
     displaying or composing of messages
     Access and manage message accounts
     defined on device
Dominik Gusenbauer, 2010                                        25
Basic architecture overview
                                  Each message has an associated 
                                  message account and where 
  QMessageServiceAction
  QM      S i A ti                       i t d l             i t d
                                  appropriated  also an associated        Single Message store for the 
                                  message folder.                         platform but multiple message 
        send, query, retrieve                                             accounts (for each message type).

           QMessage                          Has A




                                     QM      F ld
                                     QMessageFolder                     QM      A     t
                                                                        QMessageAccount

                                     QMessageStore
                                 (messages, folders, accounts)


                                Platform message services

                                                                 Source: A. Luddy – The Mobility Project, 2009


Dominik Gusenbauer, 2010                                                                                         26
Send an email message with a photo 
  // Setup new email message                 attachment using the messaging API.
  QMessage msg;
  msg.setType(QMessage::Email);

  // Set recipient for our email message
  QString recipient(“john.doe@example.com”);
  msg.setTo(QMessageAddress(QMessageAddress::Email, recipient));

  // Define message subject, body and append attachment
  msg.setSubject(“Messaging API example”);
  msg.setBody(“Hello,nnthis is an example message.”);

  QStringList attachments;
  attachments << “images/example.png”;
  msg.appendAttachments(attachments);

  // Send message using a new service handle
  QMessageService* svc = new QMessageService();

  if (svc->send(msg))
    qDebug(“Successfully sent message.”);
  else
    qWarning(“Failed to send message.”);

Dominik Gusenbauer, 2010                                                           27
Features we need …
     Acceleration sensor readings 
     Current location
     Contacts for notification
     Messaging for notification




Dominik Gusenbauer, 2010             28
g
Bearer Management
Controls the application’s connectivity state and enables 
seamless management and selection of connections

Multimedia
Provides an easy way to play, record and manage a collection of 
P id                     l         d d              ll i      f
media content of various formats

System Information
Offers a simple interface to access system related information 
and capabilities of a device



Dominik Gusenbauer, 2010                                           29
(         gy p
Camera API (technology preview)     )
Provides interfaces for utilizing the system’s camera devices.

Versit (technology preview)
Enables parsing and encoding of Versit® documents such as 
vCards as well as importing and exporting contact data from 
 C d         ll i       i     d       i           d f
and to Versit® documents

Calendar (coming soon)




Dominik Gusenbauer, 2010                                         30
Publish and Subscribe
Serves primarily as a means of easy inter‐process 
communication with additional notification capability
communication with additional notification capability
Enables context sensitive access to various unified sources of 
hierarchical data
hierarchical data
                                                        Uses key‐value (key: QString, value: 
  QValueSpacePublisher publisher(“/Location”);
  QV l S     P bli h     bli h (“/L    ti ”)            QVariant) tuples to store data.
                                                        QVariant) tuples to store data
  publisher.setValue(“City”, “Vienna”);
  publisher.setValue(“ZIP”, 1010);
  publisher.setValue(“Street”, “Opernring”);
  publisher.setValue(“Number”, 2)
    bli h     tV l (“N b ” 2);
  publisher.sync(); // Usually not required   This defines four keys:
                                               ‐ /Location/City
                                               ‐ /Location/ZIP
                                               ‐ /Location/Street
                                               ‐ /Location/Number

Dominik Gusenbauer, 2010                                                                        31
Service Framework
                                                                     QObject

Provides a unified way of finding, 
implementing and accessing
implementing and accessing                                  Qt S i F           k
                                                            Qt Service Framework
services across multiple platforms                               service interface


Service: an independent component 
Service: an independent component                             Service Provider
that allows a client to perform a well 
                                                                        dll
defined operation
          p
                                                                 Qt Mobility API

                                                 Symbian      Maemo           Windows             …
                                                (backend)
                                                (       )   (       )
                                                            (backend)         (backend)
                                                                              (       )       (       )
                                                                                              (backend)
Note: Both Publish and Subscribe API as well 
Note: Both Publish and Subscribe API as well
as Service Framework API are more focused 
on the development of a system rather than 
                                                Symbian      Maemo            Windows               …
an application.
                                                                         Source: Qt Mobility Whitepaper, 2010


Dominik Gusenbauer, 2010                                                                                        32
p          pp
Development of application scenario 
(Fall Detection Agent) 
http://bit.ly/cgRI7V
http://wiki.forum.nokia.com/index.php/Qt_Mobility_example_application:_Fall_Detector



Questions ?


For latest Information on Qt Mobility visit
http://labs.qt.nokia.com/page/Projects/QtMobility
h //l b          ki     /    /P j      /Q M bili



Dominik Gusenbauer, 2010                                                               33
Alex Luddy. The Mobility Project. Technical Session at Qt Developer Days 2009, 
Munich.
F.H.P. Fitzek, Tommi Mikonen and Tony Torp. Qt for Symbian. John Wiley & Sons, 
2010.
Forum Nokia Online. Qt Mobility Project: http://discussion.forum.nokia.com/
forum/showthread.php?t=193452.
Qt Labs Online. Qt Mobility Project: http://labs.qt.nokia.com/page/Projects/
QtMobility.
Qt Mobility Project Online. New Qt APIs Beta: http://qt.nokia.com/developer/
Q M bili P j O li           N Q API B         h //        ki     /d l      /
new‐qt‐apis.
          y    j                                  ,
Qt Mobility Project 1.0.0 API Documentation. Nokia, 2009.
Qt Mobility Whitepaper 2010: http://qt.nokia.com/files/pdf/qt‐mobility‐
whitepaper‐1.0.0. Nokia, 2010
Qt Online Documentation: http://qt.nokia.com. Nokia, 2010.

                                                                                  34
Dominik Gusenbauer  Qt Mobility

More Related Content

What's hot

Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetGail Frederick
 
Kahuna Systems : Product Engineering Services
Kahuna Systems : Product Engineering ServicesKahuna Systems : Product Engineering Services
Kahuna Systems : Product Engineering Serviceskahunasystems
 
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next LevelMTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Levelgustavoeliano
 
Android application development
Android application developmentAndroid application development
Android application developmentFahad A. Shaikh
 
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Michael Kozloff
 
MeeGo AppLab Desktop Summit 2011 - Submission and Validation
MeeGo AppLab Desktop Summit 2011 - Submission and ValidationMeeGo AppLab Desktop Summit 2011 - Submission and Validation
MeeGo AppLab Desktop Summit 2011 - Submission and ValidationIntel Developer Zone Community
 
Symbian OS - Mopoid Next Gen - Slides
Symbian OS - Mopoid Next Gen - SlidesSymbian OS - Mopoid Next Gen - Slides
Symbian OS - Mopoid Next Gen - SlidesAndreas Jakl
 
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroidcon Berlin
 
Droid con 2012 bangalore v2.0
Droid con 2012   bangalore v2.0Droid con 2012   bangalore v2.0
Droid con 2012 bangalore v2.0Premchander Rao
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeOpersys inc.
 
VR-Zone Tech News for the Geeks Dec 2011 Issue 2
VR-Zone Tech News for the Geeks Dec 2011 Issue 2VR-Zone Tech News for the Geeks Dec 2011 Issue 2
VR-Zone Tech News for the Geeks Dec 2011 Issue 2VR-Zone .com
 

What's hot (20)

Writing applications for multiple stores on the WeTab
Writing applications for multiple stores on the WeTabWriting applications for multiple stores on the WeTab
Writing applications for multiple stores on the WeTab
 
Intel AppUp™ SDK Suite 1.2 for MeeGo
Intel AppUp™ SDK Suite 1.2 for MeeGoIntel AppUp™ SDK Suite 1.2 for MeeGo
Intel AppUp™ SDK Suite 1.2 for MeeGo
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
 
MeeGo Overview DeveloperDay Munich
MeeGo Overview DeveloperDay MunichMeeGo Overview DeveloperDay Munich
MeeGo Overview DeveloperDay Munich
 
Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone Budget
 
ARM
ARMARM
ARM
 
Flex User Group breton
Flex User Group bretonFlex User Group breton
Flex User Group breton
 
Kahuna Systems : Product Engineering Services
Kahuna Systems : Product Engineering ServicesKahuna Systems : Product Engineering Services
Kahuna Systems : Product Engineering Services
 
Software development with qt
Software development with qtSoftware development with qt
Software development with qt
 
MTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next LevelMTJ Taking Mobile Java Developers to the Next Level
MTJ Taking Mobile Java Developers to the Next Level
 
Android application development
Android application developmentAndroid application development
Android application development
 
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
 
MeeGo AppLab Desktop Summit 2011 - Submission and Validation
MeeGo AppLab Desktop Summit 2011 - Submission and ValidationMeeGo AppLab Desktop Summit 2011 - Submission and Validation
MeeGo AppLab Desktop Summit 2011 - Submission and Validation
 
Intel AppUp Webinar Italiano General Information
Intel AppUp Webinar Italiano General InformationIntel AppUp Webinar Italiano General Information
Intel AppUp Webinar Italiano General Information
 
Symbian OS - Mopoid Next Gen - Slides
Symbian OS - Mopoid Next Gen - SlidesSymbian OS - Mopoid Next Gen - Slides
Symbian OS - Mopoid Next Gen - Slides
 
Mobile technology
Mobile technologyMobile technology
Mobile technology
 
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtime
 
Droid con 2012 bangalore v2.0
Droid con 2012   bangalore v2.0Droid con 2012   bangalore v2.0
Droid con 2012 bangalore v2.0
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
VR-Zone Tech News for the Geeks Dec 2011 Issue 2
VR-Zone Tech News for the Geeks Dec 2011 Issue 2VR-Zone Tech News for the Geeks Dec 2011 Issue 2
VR-Zone Tech News for the Geeks Dec 2011 Issue 2
 

Viewers also liked

Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartNokiaAppForum
 
Jure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesJure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesNokiaAppForum
 
Project management software
Project management softwareProject management software
Project management softwarediamosoft
 
Toshl.com - Od ideje do končnega izdelka
Toshl.com - Od ideje do končnega izdelka Toshl.com - Od ideje do končnega izdelka
Toshl.com - Od ideje do končnega izdelka NokiaAppForum
 

Viewers also liked (6)

Hello Mobile
Hello MobileHello Mobile
Hello Mobile
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
 
Jure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi ServicesJure Sustersic Monetization through Ovi Services
Jure Sustersic Monetization through Ovi Services
 
Project management software
Project management softwareProject management software
Project management software
 
Razum
RazumRazum
Razum
 
Toshl.com - Od ideje do končnega izdelka
Toshl.com - Od ideje do končnega izdelka Toshl.com - Od ideje do končnega izdelka
Toshl.com - Od ideje do končnega izdelka
 

Similar to Dominik Gusenbauer Qt Mobility

Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
 
Nokia Developer Offering Update
Nokia Developer Offering UpdateNokia Developer Offering Update
Nokia Developer Offering UpdateJanaina Pilomia
 
Mee go是您的新机遇
Mee go是您的新机遇Mee go是您的新机遇
Mee go是您的新机遇OpenSourceCamp
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foofndc
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212Yoojoo Jang
 
Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)guest3df603
 
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...OpenCoffee Bratislava Ataxo/H1
 
2011 0330 czech open coffee info for developers
2011 0330 czech open coffee info for developers2011 0330 czech open coffee info for developers
2011 0330 czech open coffee info for developersTUESDAY Business Network
 
Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Nokia
 
Hamish Willee
Hamish WilleeHamish Willee
Hamish Willeefndc
 
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentEpam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentIvan Marinov
 
Meego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiMeego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiFrancesco Baldassarri
 
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)Meego의 현재와 미래(2)
Meego의 현재와 미래(2)mosaicnet
 
Maemo Harmattan Qt And More
Maemo Harmattan Qt And MoreMaemo Harmattan Qt And More
Maemo Harmattan Qt And Moreqgil
 
MeeGo现状及其主要优势
MeeGo现状及其主要优势MeeGo现状及其主要优势
MeeGo现状及其主要优势Guangyao Cheng
 

Similar to Dominik Gusenbauer Qt Mobility (20)

Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Nokia Developer Offering Update
Nokia Developer Offering UpdateNokia Developer Offering Update
Nokia Developer Offering Update
 
Mee go是您的新机遇
Mee go是您的新机遇Mee go是您的新机遇
Mee go是您的新机遇
 
Software development with qt
Software development with qtSoftware development with qt
Software development with qt
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)
 
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...
Qt for developers alebo súčasnosť a budúcnosť vývoja aplikácií pre telefóny N...
 
2011 0330 czech open coffee info for developers
2011 0330 czech open coffee info for developers2011 0330 czech open coffee info for developers
2011 0330 czech open coffee info for developers
 
Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)
 
Hamish Willee
Hamish WilleeHamish Willee
Hamish Willee
 
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentEpam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
 
Meego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiMeego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea Grandi
 
Meego의 현재와 미래(2)
Meego의 현재와 미래(2)Meego의 현재와 미래(2)
Meego의 현재와 미래(2)
 
Intro to forum_nokia_sofia_13042010
Intro to forum_nokia_sofia_13042010Intro to forum_nokia_sofia_13042010
Intro to forum_nokia_sofia_13042010
 
Maemo Harmattan Qt And More
Maemo Harmattan Qt And MoreMaemo Harmattan Qt And More
Maemo Harmattan Qt And More
 
MeeGo现状及其主要优势
MeeGo现状及其主要优势MeeGo现状及其主要优势
MeeGo现状及其主要优势
 

More from NokiaAppForum

Alexander Oswald The Future of Maemo and Symbian
Alexander Oswald The Future of Maemo and SymbianAlexander Oswald The Future of Maemo and Symbian
Alexander Oswald The Future of Maemo and SymbianNokiaAppForum
 
Petri Niemi Qt Web Kit
Petri Niemi Qt Web KitPetri Niemi Qt Web Kit
Petri Niemi Qt Web KitNokiaAppForum
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2NokiaAppForum
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1NokiaAppForum
 
Mobile Web Development from Scratch
Mobile Web Development from ScratchMobile Web Development from Scratch
Mobile Web Development from ScratchNokiaAppForum
 
Wolfgang Damm Wikitude
Wolfgang Damm WikitudeWolfgang Damm Wikitude
Wolfgang Damm WikitudeNokiaAppForum
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeNokiaAppForum
 

More from NokiaAppForum (7)

Alexander Oswald The Future of Maemo and Symbian
Alexander Oswald The Future of Maemo and SymbianAlexander Oswald The Future of Maemo and Symbian
Alexander Oswald The Future of Maemo and Symbian
 
Petri Niemi Qt Web Kit
Petri Niemi Qt Web KitPetri Niemi Qt Web Kit
Petri Niemi Qt Web Kit
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1
 
Mobile Web Development from Scratch
Mobile Web Development from ScratchMobile Web Development from Scratch
Mobile Web Development from Scratch
 
Wolfgang Damm Wikitude
Wolfgang Damm WikitudeWolfgang Damm Wikitude
Wolfgang Damm Wikitude
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web Runtime
 

Recently uploaded

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Dominik Gusenbauer Qt Mobility

  • 1. Qt is © 2009 Nokia Corporation and/or its subsidiaries. Nokia, Qt, Qt Development Frameworks and their respective  logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide. 
  • 2. Qt Mobility is not about supplying ready made  solutions but delivering the means to create great  software using your own skill and creativity. f k ll d Inspire your creativity for using the new Qt Mobility APIs  Inspire your creativity for using the new Qt Mobility APIs in your own projects and developments. Dominik Gusenbauer, 2010 2
  • 3. Q g Qt Background The Qt Mobility Project Overview of new Mobility APIs Introducing description Some code snippets Example application (http://bit.ly/cgRI7V) E l li i (h //bi l / RI7V) Open Discussion/Development Open Discussion/Development Dominik Gusenbauer, 2010 3
  • 4. Q y p Qt traditionally based in the desktop world Cross‐platform application and UI framework Linux Mac OS‐X Windows Previous ports to embedded platforms Simple port of desktop APIs No specific APIs for mobile platforms N ifi API f bil l tf Dominik Gusenbauer, 2010 4
  • 5. y ( ) Takeover of Trolltech by Nokia (2008) Availability of additional features through mobile domain Location Sensors etc. Need for specific APIs to support mobile device functionality on  particular platforms (Symbian, Maemo, Windows Mobile/CE) particular platforms (Symbian Maemo Windows Mobile/CE) Solution: Qt Mobility S l ti Qt M bilit Dominik Gusenbauer, 2010 5
  • 6. y g y g The Mobility APIs generally intend to be an enabling  technology. New Qt APIs add support for mobile device functionality pp y Enlarge developer offering irrespective of actual platform Functional back‐ends implementation on all platforms where  it makes sense Simplify cross‐platform transfer of applications even between  desktop and mobile world Dominik Gusenbauer, 2010 6
  • 7. p pp Scope of application Application Use Cases 80 % of Application Use Cases Native Platform  New Qt Developer Offering APIs Native Platform Symbian Maemo Win. Mobile/CE Others Source: A. Luddy – The Mobility Project, 2009 Dominik Gusenbauer, 2010 7
  • 8. p Roadmap Q1 2009 Q2 2009 Q3 2009 Q4 2009 Q1 2010 … Q1 2009           Q2 2009            Q3 2009            Q4 2009            Q1 2010        … Qt Mobile Extensions  Qt Mobile Extensions  Qt Mobile Extensions  Qt Mobility APIs Qt Mobility APIs  (Techn. Preview 1) (Techn. Preview 2) (Techn. Preview 3) (Technology Preview) (Beta Release) Qt 4.5 Garden Qt 4.5 Garden Qt 4.5.2 Tower Qt 4.6 Qt 4.6 API Completeness Early preview of  Enhancement of  Major  Major changes to  Added preview for  Calendar mobile APIs (pre‐ the TP 1 package enhancements of  Mobile Extensions Sensors API and  Location and  alpha stage) previous packages Installer package  Camera API  Landmarks Added Alarms and  of pre‐built libs Enhanced example  Sensors AP Manager AP‐Manager Qt Mobility Project  Qt Mobility Project Calendar API Calendar API applications Audio announced Added email  Bearer Management Full Release of  Camera support within  Contacts Mobility Project Contacts Messaging API Location Landmarks Installer package  Messaging Location of pre‐built libs Multimedia Media d Publish and Subscribe bl h d b b Messaging Service Framework Profile System Information Sensors Versit System Information Telephony p y Vibra Source: http://qt.nokia.com/developer/qt‐roadmap Dominik Gusenbauer, 2010 8
  • 9. p y Platform Compatibility S60 rd Edition S60 th Edition Functional back‐end  mbian 10.1 API Maturity mbian 9.2 implementation available. CE/Mobile 1, FP2)  ndows  ndows  c OS‐X emo 5 emo 6 XP/Vista Functional back‐end 0 3 0 5 ux el Leve Mae Mae (FP1 Mac Sym Sym Linu Win Win implementation available  but not complete. Service  BETA Work on functional back‐ Framework API end implementation. No  Messaging API g g BETA platform specific code  inside Qt API. Bearer  BETA No functional back‐end Management API implementation. Publish and BETA Subscribe API Contacts API BETA Location API BETA Multimedia API BETA System  BETA Information API Sensor API TP Camera API Camera API TP Versit API TP Source: http://qt.nokia.com/doc/qtmobility‐1.0‐beta/index.html#platform‐compatability 9
  • 10. We want to create a… mobile application which is cross‐platform Scenario/Idea: Fall Detection Agent / g Automatically detects when a person falls down Notification of predefined contact person(s) – first aid,  emergency, … Dominik Gusenbauer, 2010 10
  • 11. p Purpose Provides access to various hardware sensors on a device Supports both low‐level, real‐time sensors (accelerometer  etc.) and high level sensors (device orientation etc.) etc.) and high‐level sensors (device orientation etc.) Each sensor provides certain update policies (polling, timed  updates, on value changed etc.) updates on value changed etc ) Plugin based approach – utilizes dedicated  backend library implementations for  backend library implementations for concrete hardware sensor access Note: The Sensor API is still in a technology preview state N t Th S API i till i t h l i t t and under development or subject to change respectively. Dominik Gusenbauer, 2010 11
  • 12. Basic architecture overview Holds the actual  Base class for concrete  sensor readings. hardware sensors. Interface – provides callback  QSensorReading facility for async. notifications.  1           * QSensor QS QSensorFilter QS Filt Supported hardware sensors: S t dh d ‐ Accelerometer ‐ Ambient Light Sensor QSensorManager ‐ Compass ‐ Magnetometer ‐ Orientation Sensor << creates, instantiates >> ‐ Proximity Sensor ‐ Rotation Sensor QSensorBackend ‐ Tap Sensor Symbian Sensor Maemo Sensor … QSensorBackend instance is created by a  (backend) (backend) (backend) factory class for concrete sensor on demand factory class for concrete sensor on demand. Dominik Gusenbauer, 2010 12
  • 13. int main(int argc, char** argv) { QCoreApplication app(argc, argv); // Try to instantiate sensor class AccelerometerFilter QAccelerometer sensor; : public QAccelerometerFilter sensor.connect(); { if (!sensor isAvailable()) { (!sensor.isAvailable()) public: qWarning(“Sensor not available.”); bool filter(QAccelerometerReading* r) { return 1; QString format(“%0.2f %0.2f %0.2f”); } qDebug() << “Acceleration: “ << QString().sprintf(format, // U Use async. callback facility llb k f ilit r >x(), r->x() // instead of signals and slots r->y(), // (faster) r->z()); AccelerometerFilter filter; sensor.setSignalEnabled(false); // Do not store the reading in the sensor.addFilter(&filter); // sensor // Set update interval as fast as return false; // the sensor can go } sensor.setUpdateInterval(100); } // Start sensor Process actual sensor  sensor.start(); reading. return app.exec(); } Reading actual device  Reading actual device acceleration from sensor. Dominik Gusenbauer, 2010 13
  • 14. Features we need … Acceleration sensor readings  Current location Contacts for notification Messaging for notification Dominik Gusenbauer, 2010 14
  • 15. p Purpose Receive, access and distribute location data using arbitrary and  independent data sources independent data sources Stream location information Stream location information Abstracts underlying location technology (GPS, Cell Network, WiFi etc.) (GPS Cell‐Network WiFi etc ) Provides notifications when entering or  leaving specified location range leaving specified location range Simplifies implementation of custom  position data sources position data sources Dominik Gusenbauer, 2010 15
  • 16. Basic architecture overview Actual position data: Longitude,  Latitude, Altitude, Bearing etc. Actual satellite information:  number of satellites, signal  b f t llit i l strengths, satellite elevation etc. QGeoPositionInfo Enables the detection of proximity  Enables the detection of proximity QGeoCoordinate QGeoSatelliteInfo changes for a specified set of  coordinates. QGeoPositionInfoSource QGeoSatelliteInfoSource QGeoAreaMonitor Basic Location API Symbian Location  Maemo Location API … Serial NMEA Source Acquisition API Qt software emulation Dominik Gusenbauer, 2010 16
  • 17. Requesting actual location  class LocationInfo : public QObject { information from data source. information from data source Q_OBJECT public: LocationInfo(QObject* parent) : QObject(parent) { QGeoPositionInfoSource QGeoPositionInfoSource* src = QGeoPositionInfoSource::createDefaultSource(); if (src) { connect(src, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(updatePosition(QGeoPositionInfo)); connect(src, SIGNAL( d t Ti t( SIGNAL(updateTimeout()), thi t()) this, SLOT( d t Ti SLOT(updateTimeout())); t())) src->requestUpdate(5000); // Start request for actual position } } private slots: void updatePosition(const QGeoPositionInfo& info) { qDebug() << “Current position: ” << info; } void updateTimeout() { // Current location could not be retrieved within the specified timeout // of 5 seconds. qWarning(“Failed to retrieve current position.”); } } Dominik Gusenbauer, 2010 17
  • 18. Features we need … Acceleration sensor readings  Current location Contacts for notification Messaging for notification Dominik Gusenbauer, 2010 18
  • 19. p Purpose Management of contact data in a platform independent and  datastore‐agnostic way datastore‐agnostic way Introduces a generic abstraction level  Introduces a generic abstraction level for personal information data Use of contact data stores (local and remote) Use of contact data stores (local and remote) Supports asynchronous operations on data  stores (enabling remote contact stores) stores (enabling remote contact stores) Modify and introspect available contact data Add application specific data to contacts (attributes etc.) Dominik Gusenbauer, 2010 19
  • 20. Basic architecture overview Contact name, address, phone  number etc. Provides specification for a detail  in any particular contact. Defines  semantics of the representation  QContactDetail and use of data details. QContact Detail Definition QAbstractContactRequest QMap<Qstring, QContactDetailDefinition> QMap<Qstring, QContactDetailDefinition> create, read, update, delete  query and update asynchronous operations QContactManager QContactManagerEngine (plugin) QC t tM E i plugin) l i Symbian Contact  Meamo Contact  Default Store Other Contact Store Store Store Source: A. Luddy – The Mobility Project, 2009 Dominik Gusenbauer, 2010 20
  • 21. // Construct contact manager for default contact backend g QContactManager* cm = new QContactManager(); // Create example contact QContact example; // Add contact name QContactName name; name.setFirst(“John”); name.setLast(“Doe”); ( ) example.saveDetail(&name); // Add contact email address QContactEmailAddress email; email.setContexts(QContactDetail::ContextHome); email.setEmailAddress(“john.doe@example.com”); example.saveDetail(&email); // Finally, save the contact details cm->saveContact(&example); Create an example contact and  populate it with data. Dominik Gusenbauer, 2010 21
  • 22. // Get the contact definition we want to modify ( y (cm is a // previously created QContactManager object) QMap<QString, QContactDetailDefinition> def = cm->detailDefinitions(); Q QContactDetailDefinition modified = def.value(QContactNote::DefinitionName); // Define new field ‘Interests’ Q QContactDetailDefinitionField field; field.setDataType(QVariant::String); QMap<QString, QContactDetailDefinitionField> fields = modified.fields(); // Insert new field to the list of contact’s fields and update // the contact’s field definitions fields.insert(“Interests”, field); modified.setFields(fields); // Save the updated field definitions back to the manager cm->saveDetailDefinition(modified); Add custom field  Interests to a note Add custom field “Interests” to a note  associated with a contact. Dominik Gusenbauer, 2010 22
  • 23. // Create new contact detail filter QContactDetailFilter filter; filter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldNumber); // Specify the requested value and filter matching criteria QString incomingNbr(“+436641234567”); filter.setValue(incomingNbr); filter.setMatchFlags(QContactFilter::MatchExactly); g (Q y) // Fetch matching contacts list for specified filter (cm is a // previously created QContactManager object) QList<QContactLocalId> matches = cm->contacts(filter); for (int i = 0; i < matches.size(); ++i) qDebug() << cm->contact(matches.at(i)); Search for a contact based on an  f incoming phone call id. Dominik Gusenbauer, 2010 23
  • 24. Features we need … Acceleration sensor readings  Current location Contacts for notification Messaging for notification Dominik Gusenbauer, 2010 24
  • 25. p Purpose Provide a common interface for handling Email, SMS and MMS  messages Send and retrieve messages (with or without attachments) Send and retrieve messages (with or without attachments) Notification of new messages Work with stored or remote messages k h d Launches preferred messaging client for  displaying or composing of messages Access and manage message accounts defined on device Dominik Gusenbauer, 2010 25
  • 26. Basic architecture overview Each message has an associated  message account and where  QMessageServiceAction QM S i A ti i t d l i t d appropriated  also an associated  Single Message store for the  message folder. platform but multiple message  send, query, retrieve accounts (for each message type). QMessage Has A QM F ld QMessageFolder QM A t QMessageAccount QMessageStore (messages, folders, accounts) Platform message services Source: A. Luddy – The Mobility Project, 2009 Dominik Gusenbauer, 2010 26
  • 27. Send an email message with a photo  // Setup new email message attachment using the messaging API. QMessage msg; msg.setType(QMessage::Email); // Set recipient for our email message QString recipient(“john.doe@example.com”); msg.setTo(QMessageAddress(QMessageAddress::Email, recipient)); // Define message subject, body and append attachment msg.setSubject(“Messaging API example”); msg.setBody(“Hello,nnthis is an example message.”); QStringList attachments; attachments << “images/example.png”; msg.appendAttachments(attachments); // Send message using a new service handle QMessageService* svc = new QMessageService(); if (svc->send(msg)) qDebug(“Successfully sent message.”); else qWarning(“Failed to send message.”); Dominik Gusenbauer, 2010 27
  • 28. Features we need … Acceleration sensor readings  Current location Contacts for notification Messaging for notification Dominik Gusenbauer, 2010 28
  • 29. g Bearer Management Controls the application’s connectivity state and enables  seamless management and selection of connections Multimedia Provides an easy way to play, record and manage a collection of  P id l d d ll i f media content of various formats System Information Offers a simple interface to access system related information  and capabilities of a device Dominik Gusenbauer, 2010 29
  • 30. ( gy p Camera API (technology preview) ) Provides interfaces for utilizing the system’s camera devices. Versit (technology preview) Enables parsing and encoding of Versit® documents such as  vCards as well as importing and exporting contact data from  C d ll i i d i d f and to Versit® documents Calendar (coming soon) Dominik Gusenbauer, 2010 30
  • 31. Publish and Subscribe Serves primarily as a means of easy inter‐process  communication with additional notification capability communication with additional notification capability Enables context sensitive access to various unified sources of  hierarchical data hierarchical data Uses key‐value (key: QString, value:  QValueSpacePublisher publisher(“/Location”); QV l S P bli h bli h (“/L ti ”) QVariant) tuples to store data. QVariant) tuples to store data publisher.setValue(“City”, “Vienna”); publisher.setValue(“ZIP”, 1010); publisher.setValue(“Street”, “Opernring”); publisher.setValue(“Number”, 2) bli h tV l (“N b ” 2); publisher.sync(); // Usually not required This defines four keys: ‐ /Location/City ‐ /Location/ZIP ‐ /Location/Street ‐ /Location/Number Dominik Gusenbauer, 2010 31
  • 32. Service Framework QObject Provides a unified way of finding,  implementing and accessing implementing and accessing  Qt S i F k Qt Service Framework services across multiple platforms service interface Service: an independent component  Service: an independent component Service Provider that allows a client to perform a well  dll defined operation p Qt Mobility API Symbian  Maemo Windows … (backend) ( ) ( ) (backend) (backend) ( ) ( ) (backend) Note: Both Publish and Subscribe API as well  Note: Both Publish and Subscribe API as well as Service Framework API are more focused  on the development of a system rather than  Symbian Maemo Windows … an application. Source: Qt Mobility Whitepaper, 2010 Dominik Gusenbauer, 2010 32
  • 33. p pp Development of application scenario  (Fall Detection Agent)  http://bit.ly/cgRI7V http://wiki.forum.nokia.com/index.php/Qt_Mobility_example_application:_Fall_Detector Questions ? For latest Information on Qt Mobility visit http://labs.qt.nokia.com/page/Projects/QtMobility h //l b ki / /P j /Q M bili Dominik Gusenbauer, 2010 33
  • 34. Alex Luddy. The Mobility Project. Technical Session at Qt Developer Days 2009,  Munich. F.H.P. Fitzek, Tommi Mikonen and Tony Torp. Qt for Symbian. John Wiley & Sons,  2010. Forum Nokia Online. Qt Mobility Project: http://discussion.forum.nokia.com/ forum/showthread.php?t=193452. Qt Labs Online. Qt Mobility Project: http://labs.qt.nokia.com/page/Projects/ QtMobility. Qt Mobility Project Online. New Qt APIs Beta: http://qt.nokia.com/developer/ Q M bili P j O li N Q API B h // ki /d l / new‐qt‐apis. y j , Qt Mobility Project 1.0.0 API Documentation. Nokia, 2009. Qt Mobility Whitepaper 2010: http://qt.nokia.com/files/pdf/qt‐mobility‐ whitepaper‐1.0.0. Nokia, 2010 Qt Online Documentation: http://qt.nokia.com. Nokia, 2010. 34