MeeGo 1.2 Harmattan Developer Documentation Develop for the Nokia N9

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 inherit from QSensorBackendFactory and 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.