Uitlezen van sensoren in de browser

Crowl.sensors.js

De SensorManager-klasse in JavaScript speelt een cruciale rol bij het beheren van toegang tot verschillende hardware- en software-sensoren via een webbrowser. Deze klasse fungeert als een interface tussen de webapplicatie en de sensor-API's van het apparaat, waardoor ontwikkelaars gegevens kunnen opvragen en reageren op sensorinvoer. Dit maakt het mogelijk om contextbewuste functies te implementeren die de gebruikerservaring kunnen verbeteren door interactie met de fysieke wereld, zoals locatiediensten, bewegingsdetectie, en omgevingslichtmetingen.

Functionaliteit

De klasse biedt een systematische benadering om de beschikbaarheid en gegevens van verschillende sensoren te controleren en op te halen:

  • Geolocation: Bepaalt de geografische positie van een apparaat.
  • Ambient Light Sensor: Meet de omgevingslichtintensiteit in de buurt van het apparaat.
  • Battery Status: Biedt informatie over de batterijstatus van het apparaat.
  • Network Information: Geeft informatie over het type netwerkverbinding.
  • Device Memory: Biedt informatie over het geheugen van het apparaat.
  • Clipboard API: Interacteert met het klembord van het apparaat.
  • Accelerometer: Meet de versnelling van het apparaat.
  • Gyroscope: Meet de rotatie of draaiing van het apparaat.
  • Magnetometer: Meet het magnetische veld rond het apparaat.

Voorbeeldcode voor elke functie

Geolocation

Verkrijg de huidige geografische locatie van het apparaat:
SensorData('geolocation').then(data => {
  console.log('Latitude:', data.latitude);
  console.log('Longitude:', data.longitude);
}).catch(err => {
  console.error('Error fetching geolocation:', err);
});

Ambient Light Sensor

Meet de omgevingslichtintensiteit in de buurt van het apparaat:
SensorData('ambientLight').then(data => {
  console.log('Illuminance:', data.illuminance);
}).catch(err => {
  console.error('Error fetching ambient light data:', err);
});

Battery Status

Geeft informatie over de batterijstatus van het apparaat:
SensorData('battery').then(data => {
  console.log('Battery Level:', data.level + '%');
  console.log('Charging:', data.charging ? 'Yes' : 'No');
}).catch(err => {
  console.error('Error fetching battery status:', err);
});

Network Information

Geeft informatie over het type netwerkverbinding:
SensorData('network').then(data => {
  console.log('Effective Network Type:', data.effectiveType);
}).catch(err => {
  console.error('Error fetching network information:', err);
});

Device memory

Biedt informatie over het geheugen van het apparaat:
SensorData('memory').then(data => {
  console.log('Device Memory:', data.memory, 'GB');
}).catch(err => {
  console.error('Error fetching device memory:', err);
});

Clipboard API

Leest tekst uit het klembord van het apparaat:
SensorData('clipboard').then(data => {
  console.log('Clipboard text:', data.text);
}).catch(err => {
  console.error('Error reading clipboard contents:', err);
});

Clipboard History

Verkrijg de geschiedenis van de klembordtekst die op het apparaat is gekopieerd:
const copier = new Copier(); // Instantieer de Copier klasse.

// Oproepen van de functie om de klembordgeschiedenis op te vragen.
function getClipboardHistory() {
  const history = copier.getClipboardHistory();
  console.log('Clipboard History:', history);
}

// Start het bijhouden van de klembordgeschiedenis.
copier.startInterval();

// Voorbeeld om de geschiedenis op te vragen.
getClipboardHistory();

// Stop het bijhouden na genoeg tijd om enkele gegevens te verzamelen.
setTimeout(() => {
  copier.stopInterval();
  getClipboardHistory();  // Haal opnieuw de geschiedenis op om de recente updates te zien.
}, 10000); // Wacht 10 seconden voordat het interval wordt gestopt.
Deze code initialiseert een instantie van de Copier klasse, start het interval om de klembordinhoud periodiek te controleren, en haalt de klembordgeschiedenis op. Het gebruikt een setTimeout om het interval na een bepaalde tijd te stoppen, waardoor het systeem resources efficiënt gebruikt worden. Het geeft ook een voorbeeld van het opvragen van de klembordgeschiedenis op twee momenten om te demonstreren hoe de geschiedenis zich over tijd accumuleert.

Accelerometer

Meet de versnelling van het apparaat langs de x-, y- en z-as:
SensorData('accelerometer').then(data => {
  console.log('X:', data.x);
  console.log('Y:', data.y);
  console.log('Z:', data.z);
}).catch(err => {
  console.error('Error fetching accelerometer data:', err);
});

Gyroscope

Meet de rotatie of draaiing van het apparaat:
SensorData('gyroscope').then(data => {
  console.log('X:', data.x);
  console.log('Y:', data.y);
  console.log('Z:', data.z);
}).catch(err => {
  console.error('Error fetching gyroscope data:', err);
});

Magnetometer

Meet het magnetische veld rond het apparaat:
SensorData('magnetometer').then(data => {
  console.log('X:', data.x);
  console.log('Y:', data.y);
  console.log('Z:', data.z);
}).catch(err => {
  console.error('Error fetching magnetometer data:', err);
});
Volgende pagina