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.
// code (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"/>
<tizen:privilege name="http://tizen.org/privilege/location"/>
// code (main.js):
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);
$('#compass-heading').html(Math.round(degrees) + '° ' + getDirection(degrees));
compassAngle = 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;
}