Home · All Classes · All Functions ·

Creating a sensor plugin

How a sensor plugin is loaded

Since sensor backends are created on demand, the sensor plugin is loaded and asked to register the sensor backends it handles. The plugin should implement QSensorPluginInterface::registerSensors() and call QSensorManager::registerBackend() to register available backends. Typically the plugin will also implement QSensorBackendFactory::createBackend() in order to instantiate backends it has registered.

The simplest plugin will have just once sensor backend although there is no reason that multiple sensor backends cannot be in a plugin.

An example follows.

    class MyPluginClass : public QObject, QSensorPluginInterface, public QSensorBackendFactory
    {
        Q_OBJECT
        Q_INTERFACES(QtMobility::QSensorPluginInterface)
    public:
        void registerSensors()
        {
            QSensorManager::registerBackend(QAccelerometer::type, MyBackend::id, this);
        }

        QSensorBackend *createBackend(QSensor *sensor)
        {
            if (sensor->identifier() == MyBackend::id)
                return new MyBackend(sensor);
            return 0;
        }
    };

If you would like to build a backend into a library or application you can use the REGISTER_STATIC_PLUGIN() macro although it may not work in all situations as it uses static initialization.


Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Mobility Project 1.0.1