Accelerometer and gyroscope sensor data.
No permission required on either platform.
Events
Updates arrive at handle_info at the requested interval:
handle_info({:motion, %{
accel: %{x: ax, y: ay, z: az}, # m/s² (gravity included)
gyro: %{x: gx, y: gy, z: gz}, # rad/s
timestamp: unix_ms
}}, socket)If you only request one sensor, the other map will have all-zero values.
Usage
# Start both sensors at 100ms interval
socket = Dala.Ui.Sensor.Motion.start(socket)
# Start only accelerometer at 50ms
socket = Dala.Ui.Sensor.Motion.start(socket, sensors: [:accelerometer], interval_ms: 50)
# Stop
socket = Dala.Ui.Sensor.Motion.stop(socket)iOS: CMMotionManager. Android: SensorManager.
Summary
Functions
Check if motion sensors are available on this device.
Start sensor updates.
Stop sensor updates.
Types
Functions
@spec available?() :: boolean()
Check if motion sensors are available on this device.
@spec start( Dala.Socket.t(), keyword() ) :: Dala.Socket.t()
Start sensor updates.
Options:
sensors: [:accelerometer] | [:gyro] | [:accelerometer, :gyro](default both)interval_ms: integer— update interval in milliseconds (default100)
@spec stop(Dala.Socket.t()) :: Dala.Socket.t()
Stop sensor updates.