Get compass data
To get compass data just listen on deviceorientation event. Also don't forget to add "location" privilege and "sensor.accelerometer", "sensor.gyroscope" and "sensor.magnetometer" features to config.xml.
// add features to config.xml:
// <feature name="http://tizen.org/feature/sensor.accelerometer"/>
// <feature name="http://tizen.org/feature/sensor.gyroscope"/>
// <feature name="http://tizen.org/feature/sensor.magnetometer"/>
// add privilege to config.xml:
// <tizen:privilege name="http://tizen.org/privilege/location"/>
var lastAngle = -1; // last measurement
var rotation = 0; // compass rotation
window.removeEventListener("deviceorientation", compassListener, false);
function compassListener(event) {
var degrees = compassHeading(event.alpha, event.beta, event.gamma);
console.log(Math.round(degrees) + '° ' + getDirection(degrees));
}
function compassHeading(alpha, beta, gamma) {
var angle = alpha, deltaAngle;
// check angle change and calculate the rotation of the compass
deltaAngle = lastAngle - angle;
if (Math.abs(deltaAngle) > 180) {
if (deltaAngle > 0) {
rotation -= ((360 - lastAngle) + angle);
} else {
rotation += (lastAngle + (360 - angle));
}
} else {
rotation += deltaAngle;
}
// save current measurement
lastAngle = angle;
return angle;
}
function getDirection(degrees) {
return ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'][Math.round(degrees / 11.25 / 2)];
}