Table of Contents

Sensors

(Information and examples taken from the DroidScript documentation). Information provided by Nick Weber

Description

Create Sensor objects using the CreateSensor function of the app object:

sns = app.CreateSensor( type, options );

Types available are:

Try sns.GetNames() which lists all the sensor information. You can probably scan for certain keywords.

You can also use a sensor id number instead of the name (just in case a future sensor is added).

You can use the SetOnChange function of the Sensor to set the name of a function you want to be called when a the changes occur.

Change the rate that a sensor checks for changes by adding one the options “Fastest”, “Fast”, “Medium” or “Slow”. “Slow” is the default.

Methods

Some controls use the same methods.
For examples of the same methods look here.

Method Description
Sensor.GetAzimuth()
Sensor.GetHeight()
Sensor.GetNames() returns a list of all available sensors
Sensor.GetPitch()
Sensor.GetRoll()
Sensor.GetType()
Sensor.GetValues()
Sensor.SetMaxRate( rate ) default 20ms
Sensor.SetMinChange( value ) a value between 0 and 1
Sensor.SetOnChange( callback )
Sensor.Start()
Sensor.Stop()

Examples

Sensor Type Code Example
Accelerometer
function OnStart()
{
  lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
 
  txt = app.CreateText( "", 0.8, 0.3, "Multiline" );
  lay.AddChild( txt );
  app.AddLayout( lay );
 
  sns = app.CreateSensor( "Accelerometer" );
  sns.SetOnChange( sns_OnChange );
  sns.Start();
 
}
 
function sns_OnChange( x, y, z, time )
{
  txt.SetText( "x="+x + "\n y="+y + "\n z="+z );
}
Orientation
function OnStart()
{
  lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
 
  txt = app.CreateText( "", 0.8, 0.3, "Multiline" );
  lay.AddChild( txt );
  app.AddLayout( lay );
 
  sns = app.CreateSensor( "Orientation" );
  sns.SetOnChange( sns_OnChange );
  sns.Start();
 
}
 
function sns_OnChange( azimuth, pitch, roll, time )
{
  var msg = " azimuth = " + azimuth.toFixed(1);
  msg += "\n pitch = " + pitch.toFixed(1);
  msg += "\n roll = " + roll.toFixed(1);
  txt.SetText( msg );
}
Light
function OnStart()
{
  lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
 
  txt = app.CreateText( "", 0.8, 0.3 );
  lay.AddChild( txt );
  app.AddLayout( lay );
 
  sns = app.CreateSensor( "Light" );
  sns.SetOnChange( sns_OnChange );
  sns.Start();
 
}
 
function sns_OnChange( lux )
{
  txt.SetText( "level = " + lux + " lux" );
}