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
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
SensorData('ambientLight').then(data => {
console.log('Illuminance:', data.illuminance);
}).catch(err => {
console.error('Error fetching ambient light data:', err);
});
Battery Status
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
SensorData('network').then(data => {
console.log('Effective Network Type:', data.effectiveType);
}).catch(err => {
console.error('Error fetching network information:', err);
});
Device memory
SensorData('memory').then(data => {
console.log('Device Memory:', data.memory, 'GB');
}).catch(err => {
console.error('Error fetching device memory:', err);
});
Clipboard API
SensorData('clipboard').then(data => {
console.log('Clipboard text:', data.text);
}).catch(err => {
console.error('Error reading clipboard contents:', err);
});
Clipboard History
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.
Accelerometer
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
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
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);
});