====== Sensors ====== //(Information and examples taken from the DroidScript documentation). Information provided by Nick Weber// ===== Description ===== Create Sensor objects using the **CreateSensor** function of the **[[built_in:app|app]]** object: sns = app.CreateSensor( type, options ); Types available are: * **Accelerometer** * **MagneticField** * **Orientation** * **Light** * **Proximity** * **Temperature** * **GameRotation** * **GeomagneticRotation** * **Gravity** * **Gyroscope** * **HeartRate** * **Acceleration** * **Pressure** * **Humidity** * **Rotation** * **Motion** * **StepCounter** * **StepDetector** 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" ); } |