Dala.Ui.Sensor.Motion (dala v0.3.2)

Copy Markdown View Source

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

sensor()

@type sensor() :: :accelerometer | :gyro

Functions

available?()

@spec available?() :: boolean()

Check if motion sensors are available on this device.

start(socket, opts \\ [])

@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 (default 100)

stop(socket)

@spec stop(Dala.Socket.t()) :: Dala.Socket.t()

Stop sensor updates.