Ein Blick auf QT Mobility

2009-12-05 21:32


Mit Qt 4.6 gibt es nun auch eine Technical Preview auf Qt Mobility. Nokia hat hier eine sehr interessante API Sammlung für das entwickeln auf mobilen Endgeräten fertiggestellt. Qt Mobility hat als Zielplattformen Symbian, Maemo und Windows Mobile. Allerdings laufen einige Libraries auch unter Linux, Mac OS X oder Windows XP/Vista. Eine Netbookanwendung sollte also auch machbar sein mit Qt Mobility. Windows7 wird noch nicht offiziell unterstützt, könnte aber für die Zukunft wohl hinzu kommen.

Qt Mobility umfasst folgende Bibliotheken:
  • Bearer Management
  • Contacts
  • Location
  • Messaging
  • Multimedia
  • Publish and Subscribe
  • Service Framework
  • System Information
Für die Zukunft wird Qt Mobility wohl noch um weitere Bibliotheken ergänzt, so erwähnt Nokia bereits eine API zum verwalten von VCards und eine API für Kameras.

Qt Mobility Details


Bearer Management

Die Bearer Management API ist für das Verwalten von Verbindungen zuständig. Sie stellt zum Beispiel eine Schnittstelle zum enumerieren der verschiedenen Netzzugänge zur Verfügung. Ein Handheld kann durchaus mehrere Verbindungen haben, WLAN und 3G z.B. Die API Erlaubt das verwalten dieser Schnittstellen und der Verbindungen. Hierbei verwaltet QNetworkConfiguration die Konfiguration einer oder mehrerer Verbindungen, währen QNetworkInterface ein Networkinterface darstellt. QNetworkSession erlaubt den Zugriff auf Netzwerksessions, für die eigentliche Konfiguration ist QNetworkConfigurationManager zuständig. Hierbei unterstützt die API auch das Verwalten mehrerer Accesspoints einer Session, sowie die Priorisierung dieser. Dies kann in mobilen Endgeräten sinnvoll sein, da es mehrere Internet Verbindungen zum Beispiel geben kann. Mit QNetworkSession::state bekommt man den Status einer Verbindung. QNetworkSession unterstützt zur Zeit Verbindungen über Ethernet, WLAN, 2G (CSD, GPRS, HSCSD, EDGE oder cdmaOne), CDMA2000, WCDMA, Bluetooth und WiMax.


Contacts

Die Contacts API erlaubt das Verwalten von Kontakten. Die API ermöglicht den Zugriff von Kontakten welche in in- oder externen Kontaktquellen gespeichert sind. Wobei Kontakt als "A contact is the digital representation of a person, group or entity, which is stored in a platform-specific manner" definiert ist. Ein Kontakt kann dabei über verschiedene Kontaktquellen verfügen (Email, SMS, MMS etc.). Die API kann Kontaktabfragen synchron und asynchron ausführen, allerdings hat synchron den Nachteil solange den Zugriff zu blockieren. Die Asynchrone Variante läuft über ein SIGNAL, und eignet sich also auch für externe, eher langsame Datenquellen. Zugriff auf die Kontakte gewährt die Klasse QContactManager, mit welchem man auch die Kontakte durchsuchen kann, z.B. nach der gerade anrufenden Telefonnummer.


Location

Die Location API bietet den Zugriff auf Location Services wie GPS. Dabei muss ein solcher Service die Daten in Form von Latitude,Longitude und einem Zeitstempel liefern, optional auch Altitude, Geschwindigkeit oder die relative Gradzahl zum absoluten Nordpol. Locationdata Quellen leiten sich dabei von QGeoPositionInfoSource ab, und stellen ihre Positionsinformationen als QGeoPositionInfo Objekte über das Signal positionUpdated() zur Verfügung. Ein Client kann dann auf dieses Signal conncecten, und mittels eines Aufrufes von startUpdates() oder requestUpdate() die Datenübertragung auslösen. Die API kennt eine default Quelle für Location Daten, welche mittels QGeoPositionInfoSource::createDefaultSource() erstellt werden kann. Mit der QGeoAreaMonitor Klasse ist es möglich, für bestimmte Positionen einen Geo Callback zu implementieren, innerhalb eines bestimmten Radius wird dann die Anwendung über das erreichen dieser Landmarke benachrichtigt. Ebenfalls unterstützt die API das NMEA Datenformat für Positionsdaten. Über die Klasse QNmeaPositionInfoSource  lassen sich auch NMEA Datenquellen in die Applikation einbinden.


Messaging

Die Messaging API erlaubt den Zugriff auf Datenquellen aus dem Bereich des Messaging (SMS, MMS, Email, XMPP). Dabei kann man mit der API Nachrichten sortieren, durchsuchen, versenden, empfangen und die entsprechende Nachrichten Anwendung für eine Nachricht starten. Eine einheitliche Schnittstelle für das Handling von SMS,MMS,Email und XMPP Nachrichten stellt die API zur Verfügung. Wobei die Klasse QMessageStore den Zugriff auf Nachrichten aus verschiedenen Quellen regelt. Nachrichten und Accounts werden dadurch durch die Klassen QMessage und QMessageAccount abstrahiert. Einen genaueren Überblick über die API Klassen verschafft dieses UML Diagramm.


Multimedia

Die Multimedia API kombiniert die Funktionalität eines Musik/Videospielers und eines Radios in einer API. Es ist möglich verschiedene Video und Audio Formate abzuspielen, Audioaufnahmen sind auch möglich. Ebenfalls können Bilder dargestellt werden, so ist eines der Beispiele eine Slideshow. Auch das Streamen aus Audio oder Videoquellen mittels URL wird unterstützt. Allerdings kommt eine Unterstützung für Kameras erst später, so das ein Zugriff auf die interne Kamera zur Aufzeichnung oder Wiedergabe nicht möglich ist. Die Videowiedergabe erfolgt über QVideoWidget, für die Wiedergabe von Audioformaten gibt es die Klasse QMediaPlayer.


Publish and Subscribe

Die Publish and Subscribe API bietet die Möglichkeit mit dem System und/oder anderen Anwendungen zu interagieren. Hierbei kann man bestimmte Werte in einem Value Baum entweder selber verändern (Publish) oder über Veränderungen benachrichtigt werden (Subscribe). Hierbei können in einem QValue Space verschiedene hierarchische Datenquellen zusammengefasst sein. So lassen sich z.B. damit unter Symbian die OS Properties auslesen. Mit der QValueSpaceSubscriber Klasse kann man entsprechende Werte auslesen, von Veränderungen benachrichtigt werden, sowie durch den Valuespace navigieren. Über die Klasse QValueSpacePublisher lassen sich neue Werte in einen Valuespace einfügen, sowie Anfragen für im Valuespace enthaltene Werte regeln. Publish and Subscribe kennt auch verschiedene Layer, welche Plattformabhängige Implementationen zur Verfügung stellen. So gibt es einen SharedMemoryLayer für Unix, einen Symbian Layer, für Windows gibt es Non- und Volatile Layer.


Service Framework

Hierbei handelt es sich um ein Abstraktionsframework für alle möglichen Services, welche ein Programm einbinden kann. Die Services selber sind als Plugin implementiert. Wobei ein Service als "A service is an independent component that allows a client to perform a well-defined operation. Clients can find services based on their name and version as well as the interface that is implemented by the service object." definiert ist. Über die Klasse QServiceManager erhält man Zugriff auf die verfügbaren Services.


System Information API

Diese API stellt Informationen über das jeweilige System zur Verfügung. Dazu gehören Informationen über
  • Version
  • Hardwarekenndaten
  • Netzwerk
  • Display
  • Speichermedien
  • Geräteinfos
  • Bildschirmschoner(Screensaver)
Bei Version lässt sich nicht nur die OS Version und Firmware abfragen, sondern auch Versionen von Installierten Anwendungen (z.B. Webkit, oder auch Qt Version). Hardwarekenndaten listet die zur Verfügung stehenden Hardwareelemente auf, z.B. GPS, Kamera oder Radio. Netzwerk liefert Informationen über die jeweilige Verbindung, auch welchen Typ diese hat (z.b. GSM, CMDA, 3G, Ethernet). Display liefert Informationen zur Farbtiefe und Helligkeit des Displays, zu den Geräteinfos gehören Batteriestatus, Energiestatus(Netz,Akku z.B.), Profile, SIM und Eingabemöglichkeiten.(z.B. Knöpfe/Tasten, Tastatur, Single/Multitouchscreens).

Für weitere Fragen und Anregungen zu diesem Thema können sie mich gerne kontaktieren.

Zurück