Start · Sprachen · JavaScript · Referenz · Sensor.stop()

Sensor.stop()

Methode

Die Methode <code>stop()</code> deaktiviert einen Sensor der Generic Sensor API und beendet die Erfassung von Messwerten.

seit JavaScript Generic Sensor API — Chromium-Browser (Chrome/Edge Kategorie: webapi

Signatur

Sensor.prototype.stop()

Beschreibung

stop() ist eine Methode der abstrakten Basisschnittstelle Sensor. Alle konkreten Sensoren erben sie, etwa Accelerometer, Gyroscope, Magnetometer, AbsoluteOrientationSensor, RelativeOrientationSensor, AmbientLightSensor und GravitySensor. Der Aufruf deaktiviert den Sensor: Danach werden keine reading-Events mehr ausgelöst, und activated ist wieder false.

Rufe stop() auf, sobald du keine Messwerte mehr brauchst, zum Beispiel wenn der Nutzer eine Ansicht verlässt, eine Messung beendet ist oder die Seite in den Hintergrund wechselt. Ein laufender Hardware-Sensor verbraucht Akku. Konsequentes Stoppen spart also Energie und Rechenzeit.

Die Methode arbeitet synchron und nimmt keine Argumente. Nach dem Stopp werden die Messwert-Eigenschaften wie x, y, z oder illuminance sowie timestamp auf null zurückgesetzt. Mit start() lässt sich derselbe Sensor jederzeit wieder aktivieren. Du musst dafür keine neue Instanz erzeugen.

Beispiele

Beschleunigungssensor nach 5 Sekunden stoppen

const sensor = new Accelerometer({ frequency: 30 });

sensor.addEventListener('reading', () => {
  console.log(`x=${sensor.x.toFixed(2)} y=${sensor.y.toFixed(2)} z=${sensor.z.toFixed(2)}`);
});

sensor.addEventListener('error', (event) => {
  console.error(event.error.name, event.error.message);
});

sensor.start();

// Messung nach 5 Sekunden beenden
setTimeout(() => {
  sensor.stop();
  console.log('Aktiv:', sensor.activated, '| x:', sensor.x);
}, 5000);
x=0.12 y=9.78 z=0.45 ... Aktiv: false | x: null

Sensor bei Tab-Wechsel pausieren und fortsetzen

const gyro = new Gyroscope({ frequency: 60 });

gyro.addEventListener('reading', () => {
  // z. B. eine 3D-Szene drehen
  console.log(gyro.x, gyro.y, gyro.z);
});

gyro.start();

// Akku sparen: Im Hintergrund keine Messwerte erfassen
document.addEventListener('visibilitychange', () => {
  if (document.hidden) {
    gyro.stop();
  } else {
    gyro.start();
  }
});

Start/Stopp-Schalter mit Berechtigungsprüfung

const button = document.querySelector('#toggle');
let sensor = null;

const toggleSensor = async () => {
  if (sensor?.activated) {
    sensor.stop();
    button.textContent = 'Messung starten';
    return;
  }

  const { state } = await navigator.permissions.query({ name: 'ambient-light-sensor' });
  if (state === 'denied') {
    console.warn('Zugriff auf den Lichtsensor verweigert');
    return;
  }

  sensor ??= new AmbientLightSensor();
  sensor.onreading = () => console.log(`${sensor.illuminance} lx`);
  sensor.onerror = (e) => console.error(e.error.name);
  sensor.start();
  button.textContent = 'Messung stoppen';
};

button.addEventListener('click', toggleSensor);
320 lx 318 lx

// Wichtig · Fallstricke

  • Browser-Unterstützung: Die Generic Sensor API gibt es nur in Chromium-Browsern. Firefox und Safari unterstützen sie nicht. Prüfe deshalb vorher, ob die Schnittstelle existiert, etwa mit 'Accelerometer' in window. Einige Sensoren wie AmbientLightSensor müssen zusätzlich per Flag aktiviert werden.
  • Sicherer Kontext: Die API funktioniert nur über HTTPS. Außerdem kann eine Permissions-Policy den Zugriff sperren, zum Beispiel accelerometer, gyroscope oder magnetometer. In iframes ist dann das Attribut allow nötig.
  • Messwerte nach dem Stopp: Nach stop() sind die Messwert-Eigenschaften null. Wer den letzten Wert behalten will, muss ihn vorher selbst speichern, etwa im reading-Handler.
  • Mehrfachaufruf: Ein erneuter Aufruf von stop() auf einem bereits gestoppten Sensor ist wirkungslos und wirft keinen Fehler.
  • Automatisches Pausieren: Browser können Sensoren in Hintergrund-Tabs selbst pausieren. Trotzdem ist ein explizites stop() guter Stil, weil es Ressourcen verlässlich freigibt.