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;
}

Responses

0 Replies