QtMobility 1 2 Whats New
[toc align_right="yes" depth="3"]
What's New in the Qt Mobility 1.2 Release
This document details the new API features and changes introduced in "Qt Mobility 1.2":http://doc.qt.nokia.com/qtmobility-1.2/index.html release. It was written from Symbian implementation perspective but most of the features are also valid for Nokia N9 (MeeGo 1.2 Harmattan) release. See also a topic for compatibility changes for Qt Mobility 1.2.
Bluetooth API - a part of Connectivity API
Bluetooth API is a new API in Qt Mobility 1.2. In Symbian the platform initiates UI dialogs like PIN code entry directly from Bluetooth API calls. In Nokia N9 the UI dialogs need to be implemented by application.
Bluetooth API provides following features:
* Ability to control power state and discoverability of the local Bluetooth device.
* Ability to manage device pairing: initiate pairing requests and flag pairing authorizations.
* The ability to query devices and their services within Bluetooth communication range. Device discovery is performed asynchronously. Results can be obtained both incrementally and non-incrementally.
* Discovery result set can be limited based on Bluetooth device address and service UUID.
* Retrieve and query attributes record of a service offered by a Bluetooth device.
* Publish a new service record and register or unregister it in the platform SDP database.
* The ability to specify the security parameters (authorization, authentication and encryption) required for incoming connections.
* Support for inbound and outbound L2CAP and RFCOMM communications.
* Support for file sending via OBEX. There is no programmatic receiving of files via OBEX as they end up in devices normal file received inbox. To open files application also needs to implement file open handler for custom file formats.
* Common classes with QML bindings.
Following specific features are not supported in Symbian:
* No support for QBluetoothLocalDevice::HostDiscoverableLimitedInquiry
NFC API - a part of Connectivity API
NFC API is a new API in Qt Mobility 1.2. The NFC (Near Field Communication) API enables applications to communicate over short range radio technology for the support of contactless communication.
The API supports following features and use scenarios:
* With NFC one can achieve easy connection setup. Initiate a connection with NFC and then do the actual transmission with Bluetooth.
* Quick and hassle-free sharing of small data packets between devices using NFC: NDEF messages are supported.
* Get device information, start apps, register to service.
* Notifications of NFC events: touched target detection or loss of it, transaction notifications and matched NDEF Message notifications.
* Send NFC tag specific commands.
The API also supports LLCP peer to peer communications support:
* LLCP connection initiation, transmit and receive data on established connection.
* Register an LLCP service URI and start listening for incoming connections.
SystemInfo API
The model of getting signals from system changes in SystemInfo QML elements is changed. See QML element reference for "DeviceInfo":http://doc.qt.nokia.com/qtmobility-1.2/qml-deviceinfo.html#details and "NetworkInfo":http://doc.qt.nokia.com/qtmobility-1.2/qml-networkinfo.html#details. See also more information from Compatibility Issues document.
New class QSystemBatteryInfo and QML element BatterInfo provide now access to more detailed battery and power information from the system. There is also currentPowerState and currentThermalState properties in SystemDeviceInfo.
Following new features are available in QSystemDeviceInfo:
* Device lock status information now details whether the security PIN/password lock is on or just screen is locked by user.
* New uniqueDeviceID property.
* New currentPowerState and currentThermalState properties. Note: a property called "powerState" has been removed that was in Qt Mobility 1.1.
* Devices with slide or flip-open keypads/keyboards there's now ability to check the state or get notifications when user opens or closes the device keyboard with isKeyboardFlippedOpen property and keyboardFlipped signal.
* Possibility to check if wireless Bluetooth keyboard is in use with isWirelessKeyboardConnected property.
* An indication if keypad light is on with keypadLightOn function.
* Previously there was currentProfile property for getting information of the active sound profile. Now there is more information from active profile using new activeProfileDetails function: ringtone volume and vibration information.
* More detailed product information with productName property. The model introduces in Qt Mobility 1.1.
* ProductName now returns Symbian device type (something like "RM-596"). Use the Model for normal end user device name ("N8").
New in QSystemInfo:
* System FM transmitter feature can be queried.
New in QDisplayInfo:
* UI orientation state and notifications.
* Display backlight state information: dimmed, on or off via backlightStatus function.
* Returns now also display contrast, physical width and height, dots per inch width and height information.
New in QSystemStorageInfo:
* Drive storage space level notifications with storageStateChanged. Allows app to get notification when a drive storage space reaches a defined threshold level.
* Ability to check if a drive is virtual RAM drive or internal flash drive.
* A function to return drive as an URI.
New in QSystemNetworkInfo:
* Signal cellIdChanged can be used to detect when user roams between the network cells.
* New cellDataTechnology property informs of the cellular data technology in use: GPRS, EDGE, 3G, HSPA. LTE is also added as possible value in NetworkMode returned from currentMode.
Note: Qt Mobility 1.2 has a new API called QSystemAlignedTimer which is also known as heart-beat API. This class is not supported in Symbian but only in MeeGo 1.2 Harmattan (Nokia N9). For Nokia N9 there is also AlignedTimer QML element to access this API.
Sensors API
There is no significant changes in the Sensor API:
* Possibility to see what filters have been added to the sensor via the API.
* The QML bindings have been updated, there's new QML elements and the documentation is made better for the ones already made available from 1.1.
* New sensor types and classes for gyroscope and light sensors are made available in API for future use. At the moment there is no devices having these sensors however.
Messaging API
- Wild card search support was added for filtering messages. Several new methods added to make this possible in filter classes: QMessageFilter, QMessageFolderFilter and QMessageAccountFilter.
- Filtering based on specific (to, cc, bcc) recipient fields separately in QMessageFilter using byTo, byCc and byBcc member functions.
- Explicit synchronization request is possible via QMessageService::synchronize.
- Account deletion and signal for account deletion QMessageManager.
- Move messages to a folder using QMessageService::moveMessages.
Multimedia API
Now there is the ability to specify the networking access point to be used for streaming media. Symbian devices have device wide video streaming access point which is used by default. The issue is that the default access point may not be set or is set to wrong or non-working value. For many cases applications want to either use the same access point as for normal networking that is guaranteed to work better, or use some dedicated one.
In Symbian the QAudioOutput::suspend now is implemented using real pause functionality in the backend. Earlier suspend did stop internally as pause functionality was missing some Symbian OS releases that are no longer supported. Now suspend and resume is faster operation.
Contacts API
- New class QContactObserver for doing contact change monitoring for a specific contact item.
- Ability to set maximum search limits for QContactManger allowing to speed up search results when certain amount of contacts data is sufficient or needed. This is achieved using the new QContactFetchHint::setMaxCountHint member function.
Publish and Subscribe API
QML bindings added for this API for publishing with ValueSpacePublisher element.
Location API
QML elements for Map use cases were significantly updated in Qt Mobility 1.2. This has created also some compatibility issues to Qt Mobility 1.1 when these elements are used. Applications using QML Map related elements are advised to use Qt Mobility 1.2 and the import QtMobility.location 1.2.
Following features are provided in QML for maps:
* Support for visual mapping and the ability to choose the map plugin used. Element: Map, Plugin, PluginParameter.
* Basic level Map/coordinate optimized mouse handling. Elements: MapMouseArea, MapMouseEvent.
* Basic level support for Map objects to show visual elements on the Map. Elements: MapImage, MapText, MapRectangle, MapPolyline, MapPolygon, MapCircle, MapGroup, MapObjectView, MapObject.
API now allows to prevent a QGeoMapPixmapObject from being scaled when zooming occurs. This is useful if application design needs that the pixmaps like icons on the map do not adjust to the zoom factor. This can be achieved using new units property in QGeoMapObject.
There is support for QGraphicsItem based based map objects with new QGeoMapCustomObject class.
As an advanced feature, the Location API now also allows 3rd parties to implement additional position sources with plugins.