| ID | CS000888 | Creation date | April 7, 2008 |
| Platform | S60 3rd Edition, FP1 | Tested on devices | Nokia N95 8GB |
| Category | Symbian C++ | Subcategory | Hardware, Sensor |
| Keywords (APIs, classes, methods, functions): CRRSensorApi, TRRSensorInfo, CRRSensorApi::NewL(), CRRSensorApi::AddDataListener(), CRRSensorApi::RemoveDataListener(), MRRSensorDataListener::HandleDataEventL() |
This snippet demonstrates how to listen for data events produced by the accelerometer sensor of the device. In practice, the control implements the MRRSensorDataListener interface which enables it to listen to the data events. Whenever a data event occurs, the MRRSensorDataListener::HandleDataEventL() function is called.
Note: In order to use the code, you need to install the sensor plug-in for your SDK.
This snippet can be self-signed.
The following libraries are required:
LIBRARY RRSensorApi.lib
#include <RRSensorApi.h>
// Accelerometer sensor UID
const TInt KAccelerometerSensorUID = 0x10273024;
class CMyControl : public CCoeControl, public MRRSensorDataListener
{
// ...
private: // Functions from base classes
/**
* From MRRSensorDataListener.
* Callback function for receiving sensor data events.
*
* @param aSensor identifies the sensor that created the event.
* @param aEvent contains data about created event.
*/
void HandleDataEventL(TRRSensorInfo aSensor, TRRSensorEvent aEvent);
private:
/**
* Initializes and registers accelerometer sensors.
*/
void RegisterSensors();
/**
* Unregisters accelerometer sensors.
*/
void UnregisterSensors();
private: // Data
CRRSensorApi* iAccelerometerSensor;
}
#include <RRSensorApi.h>
void CMyControl::ConstructL(const TRect& aRect)
{
// ...
// Initialize and register accelerometer sensors
RegisterSensors();
// ...
}
CMyControl::~CMyControl()
{
// ...
// Unregister accelerometer sensors
UnregisterSensors();
// ...
}
/**
* Initializes and registers accelerometer sensors.
*/
void CMyControl::RegisterSensors()
{
RArray<TRRSensorInfo> sensorList;
CleanupClosePushL(sensorList);
// Retrieve list of available sensors
CRRSensorApi::FindSensorsL(sensorList);
// Get number of sensors available
TInt sensorCount = sensorList.Count();
for (TInt i = 0; i < sensorCount; i++)
{
// We are interested only in the accelerometer sensor now
if (sensorList[i].iSensorId == KAccelerometerSensorUID)
{
iAccelerometerSensor = CRRSensorApi::NewL(sensorList[i]);
// Register this control as accelerometer data listener
iAccelerometerSensor->AddDataListener(this);
break;
}
}
CleanupStack::PopAndDestroy(); // sensorList
}
/**
* Unregisters accelerometer sensors.
*/
void CMyControl::UnregisterSensors()
{
// Unregister accelerometer data listener
iAccelerometerSensor->RemoveDataListener();
delete iAccelerometerSensor;
iAccelerometerSensor = NULL;
}
/**
* Gets called whenever a data event occurs.
*/
void CMyControl::HandleDataEventL(TRRSensorInfo aSensor, TRRSensorEvent aEvent)
{
// A data event occurred. Handle it.
// ...
}
Whenever a data event occurs, CMyControl::HandleDataEventL() function is called.
No related wiki articles found