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
