Neue APIs in Qt Mobility 1.1

2010-09-16 13:31


Mit Qt Mobility 1.1 kommen einige neue APIs hinzu, so dass man mal wieder über Qt Mobility schreiben kann. Wichtig ist, das die 1.1 Version erst im Status Technical Preview ist, somit werden sich wohl noch einige APIs ändern, aber vieles davon werden sicher Details sein. Mit der NokiaWorld erschien auch eine neue Version vom Nokia Qt SDK, welches auch die mobilen APIs enthält, die aktuelle Versionsnummer von Qt Mobility ist hier 1.0.2. Über Qt Mobility hatte ich ja schon im Frühjahr geschrieben, für die Version 1.0.2 ist dieser Artikel auch noch sehr aktuell.
Mit der Version 1.1 wird es dann folgende APIs in Qt Mobility geben:
  • Bearer Management
  • Camera
  • Contacts
  • Document Gallery
  • Feedback
  • Location
  • Messaging
  • Multimedia
  • Organiser
  • Publish and Subscribe
  • Qt Service Framework
  • Sensors
  • System Information
  • Telephony Events
  • Versit
Die hervorgehobenen APIs sind diejenigen, welche, seit meinem letzten Artikel über Qt Mobility, neu sind. Versit und Sensors sind noch zu Qt Mobility 1.0 hinzu gekommen. Alle fett hervorgehobenen APIs sind neu in Qt Mobility 1.1. Neben den neuen APIs hat sich in den bisherigen APIs natürlich auch einiges getan, so gibt es nun auch ein MapWidget, zum Anzeigen unterschiedlichster Karten. Aber alle Neuerungen würden den Rahmen eines Blogbeitrages wohl sprengen, daher erst einmal zu den neuen APIs...

Neue APIs in Qt Mobility 1.1

In Version 1.1 bringt Qt Mobility 5 neue APIs mit sich, und Sensors/Versit kam erst später zu 1.0, so das der TP von Qt Mobility sie nicht enthielt, daher werden sie jetzt hier auch als neue APIs behandelt.

Camera


Mit der Camera API kann man, genau, die Kamera ansprechen. Eines der Mängel in der Qt Mobility API war bisher genau dies, kein Zugriff auf die Kamera. Dies ändert sich mit 1.1, man kann nun Bilder und Video von der Kamera in seine Applikation einbinden. Die Camera API ist sehr nah an der schon bekannten Multimedia API gehalten, und leitet sich mit einigen Basisklassen auch von dieser ab. Für die Verwendung wird ein QVideoWidget in die Anwendung eingebunden, welches mit einer QCamera initialisiert wird. Mit QCamera lassen sich normale Bilder, aber auch Videos mit und ohne Sound aufnehmen. Mit der API lässt sich die Kamera ansteuern, der Blitz an und ausschalten, der Focus festlegen sowie viele weitere Kameraeinstellungen vornehmen.
Einige Neuerungen in der Multimedia API haben auch mit der Camera API zu tun, so ist QVideoWidget eigentlich aus der Multimedia API, und die QCamera nur eine der möglichen Videoquellen. Unklar bleibt hierbei, wie man auf den Stream der Kamera zugreifen kann, in den Tiefen der Dokumentation findet sich eine QVideoFrame Klasse, wie diese aber in Verbindung mit der Kamera nutzbar wäre, erschließt sich mir zurzeit nicht.

Document Gallery


Die API für Dokumenten Ansichten. Man kann hier also zum Beispiel einen Bildbetrachter mit implementieren. Die API bietet hierfür ein Framework aus Klassen, welche sich für spezielle Dokumentenansichten erweitern lassen, ebenfalls hat man Zugriff auf Dateien, und kann Audio, Video, Bild und (Office) Dokumente unterscheiden. Dargestellt werden die Items einer Gallery dann unter anderem in einer QGalleryItemList. Das Framework stellt Asynchrone Request Klassen zur Verfügung, und fragt mit diesen den Indexer für das Dateisystem. Wer also eine Gallerie für seine App braucht, findet hier viele nützliche Klassen und ein durchdachtes Framework hierzu. Es gibt 2 Examples, welche zeigen, wie die API verwendet werden soll.

Feedback


Die Feedback API bietet die Möglichkeit Feedbackevents in eine App einzubinden. Hierbei können eigene Feedback Klassen erstellt werden, oder z.b. vorhande Feedback Sounds abgespielt werden. Die Dokumentation bleibt hier etwas spärlich, evtl. gibt es hier auch noch Erweiterungen bis zur Veröffentlichung von Qt Mobility 1.1. Es wird in einem Beispiel ein HapticsFeedback namens Rumble erstellt, ob dies nun eine Vibration am Endgerät auslöst, bleibt aber unklar.

Sensors


In der 1.0 Version schon vorhanden, kann man mit der Sensors API die verschiedenen Sensoren in einem Endgerät ansprechen. Verschiedene Sensoren liefern X,Y und Z Werte zurück (Accelerometer, Magnetometer,...), welche sich nach Möglichkeit am Right Hand Cartesian coordinate system orientieren. Einige der Sensoren hatte ich schon beim Simulator des SDKs getestet, dies ist auch immer noch ein guter Überblick, über die Vorhandenen und unterstützen Sensoren in Qt Mobility. Das Framework stellt zum Auslesen von Sensordaten jeweils pro Sensor eine Reading Klasse zur Verfügung, mit Version 1.1 werden folgende Sensoren unterstützt:
  • Accelerometer
  • AmbientLightSensor
  • Compass
  • MagnetoMeter
  • OrientationSensor
  • ProximitySensor
  • RotationSensor
  • TapSensor

Organizer


Diese API ermöglicht den Zugriff auf den Kalender, sowie weitere persönliche Datenquellen. Die API ermöglicht das Clientseitige anlegen, verändern und löschen von OrganizerItems wie z.b. Kalenderterminen. Der Zugriff auf diese Items wird über Managerklassen geregelt. Die API bietet den klassischen Qt Aufbau, und ermöglicht synchrone und asynchrone Abfragen auf Organizer Items.

Telephony Events


Ein wichtiger Aspekt der Appprogrammierung ist das reagieren und berücksichtigen von Events, welche ausserhalb der App ihre Quelle haben. Dies betrifft Resourcen, wie den Batteriestand oder auch eingehende Telefonate. Eine Anwendung muss häufig auf diese Events entsprechend reagieren, da ein Spiel zum Beispiel sich bei einem Anruf pausieren sollte, und ein Musikstück dann auch nicht weiterspielen sollte. Diese Telefon-Events liefert die Telephony Event API. Resourcen Events deckt die API nicht ab, sondern nur Telefonate. Hierbei kann man den Status und den Typ des "Anrufes" feststellen (Voice, Video, Text z.b.). QTelephonyCallList enthält hierbei alle aktiven Kommunikationsverbindungen auf dem Endgerät, und kann zur Statusabfrage benutzt werden. So ist eine Benachrichtung über eingehende Anrufe möglich. Es bietet die Signals activeCallAdded, activeCallRemoved sowie activeCallChanged an. Alle 3 Signals liefern ein QTelephonyCallInfo Objekt, welches die nötigen Infos zum Anruf enthält.

Versit

Versit enthält die Klassen zum Umgang mit vCards innerhalb einer App. Die API ermöglicht das Einlesen einer vCard oder iCalendar Datei in ein QVersitDocument mittels QVersitReader. Hierbei werden vCard 2.1 und 3.0 sowie iCalendar 2.0 als Formate unterstützt. Mittels QVersitContactImporter lassen sich dann aus den Daten QContact Objekte erstellen. QContacts lassen sich dann ebenfalls mittels QVersitContactExporter in ein QVersitDocument exportieren, und mit QVersitWriter entsprechend in eine Datei schreiben. Ein QVersitDocument legt intern fest, welches Format es repräsentiert.

Fazit

Qt Mobility liefert viel neues in Version 1.1. Die Lernkurve bleibt sehr steil, so das Spezialisten für diesen Bereich bald wohl sehr gefragt sein dürften. Die APIs sind sehr komplex, und die Neuerungen bei den schon vorher eingeführten APIs habe ich noch garnicht erwähnt. Die API macht wie für soviele Qt APIs einen sehr guten Eindruck, und wer Qt schon gut kennt, wird mit vielem schnell zurecht kommen. Meine ersten Erfahrungen mit Qt Mobility sammele ich gerade bei der Kamera API, wo sich auch zeigt, das Details wie Videoframes noch in den Tiefen der Doku liegen.


Zurück