std.android.sensor

ASensorManager-Bindings für Gerätesensoren: Accelerometer, Gyroscope, Magnetometer, Umgebungslicht und weitere. Sensorwerte werden über einen ALooper-Event-Queue empfangen.

std.android · std.android.looper


Sensor-Typ-Konstanten

Konstante Sensor
ASENSOR_TYPE_ACCELEROMETER Beschleunigungssensor (m/s²)
ASENSOR_TYPE_GYROSCOPE Kreiselinstrument (rad/s)
ASENSOR_TYPE_MAGNETIC_FIELD Magnetometer (μT)
ASENSOR_TYPE_LIGHT Umgebungslicht (lux)
ASENSOR_TYPE_PROXIMITY Näherungssensor (cm)
ASENSOR_TYPE_GRAVITY Schwerkraft-Vektor (m/s²)
ASENSOR_TYPE_LINEAR_ACCELERATION Lineare Beschleunigung ohne Schwerkraft
ASENSOR_TYPE_ROTATION_VECTOR Rotationsvektor
ASENSOR_TYPE_PRESSURE Luftdruck (hPa)
ASENSOR_TYPE_TEMPERATURE Temperatur (°C)

Verwendung

import std.android.sensor;

// Sensor-Manager und Accelerometer holen
var mgr: *ASensorManager := ASensorManagerGetInstance();
var accel: *ASensor := ASensorManagerGetDefaultSensor(mgr, ASENSOR_TYPE_ACCELEROMETER);

// Event-Queue erstellen und an Looper binden
var queue: *ASensorEventQueue := ASensorManagerCreateEventQueue(mgr, looper, LOOPER_ID_USER, nil, nil);
ASensorEventQueueEnableSensor(queue, accel);
ASensorEventQueueSetEventRate(queue, accel, 16667);  // 60 Hz in Mikrosekunden

// In der Event-Loop: Werte lesen
var event: ASensorEvent;
while (ASensorEventQueueGetEvents(queue, &event, 1) > 0) {
    var x: f64 := event.acceleration.x;
    var y: f64 := event.acceleration.y;
    var z: f64 := event.acceleration.z;
    ProcessAccel(x, y, z);
}


Funktionen

Signatur Sichtbarkeit Beschreibung
ASensorManagerGetInstance(): *ASensorManager pub Gibt globale Sensor-Manager-Instanz zurück
ASensorManagerGetDefaultSensor(mgr: *ASensorManager, type: int64): *ASensor pub Gibt Standard-Sensor des angegebenen Typs zurück
ASensorManagerCreateEventQueue(mgr: *ASensorManager, looper: ALooper, ident: int64, callback: pchar, data: pchar): *ASensorEventQueue pub Erstellt Event-Queue für Sensor-Events
ASensorManagerDestroyEventQueue(mgr: *ASensorManager, queue: *ASensorEventQueue): int64 pub Zerstört Event-Queue
ASensorEventQueueEnableSensor(queue: *ASensorEventQueue, sensor: *ASensor): int64 pub Aktiviert Sensor in der Queue
ASensorEventQueueDisableSensor(queue: *ASensorEventQueue, sensor: *ASensor): int64 pub Deaktiviert Sensor
ASensorEventQueueSetEventRate(queue: *ASensorEventQueue, sensor: *ASensor, usec: int64): int64 pub Setzt Abfraterate in Mikrosekunden
ASensorEventQueueGetEvents(queue: *ASensorEventQueue, events: *ASensorEvent, count: int64): int64 pub Liest bis zu count Events; gibt Anzahl zurück
ASensorGetName(sensor: *ASensor): pchar pub Gibt Sensor-Name zurück
ASensorGetResolution(sensor: *ASensor): f64 pub Gibt Auflösung des Sensors zurück

Letzte Aktualisierung: 2026-05-22