2009-11-24 02:49:37 +08:00
|
|
|
function Acceleration(x, y, z)
|
|
|
|
{
|
|
|
|
this.x = x;
|
|
|
|
this.y = y;
|
|
|
|
this.z = z;
|
2010-02-14 10:58:45 +08:00
|
|
|
this.timestamp = new Date().getTime();
|
2009-11-24 02:49:37 +08:00
|
|
|
}
|
|
|
|
|
2009-11-18 02:38:49 +08:00
|
|
|
// Need to define these for android
|
2010-02-14 10:58:45 +08:00
|
|
|
_accel = {};
|
2009-11-18 02:38:49 +08:00
|
|
|
_accel.x = 0;
|
|
|
|
_accel.y = 0;
|
|
|
|
_accel.z = 0;
|
|
|
|
|
|
|
|
function gotAccel(x, y, z)
|
|
|
|
{
|
|
|
|
_accel.x = x;
|
|
|
|
_accel.y = y;
|
|
|
|
_accel.z = z;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class provides access to device accelerometer data.
|
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
function Accelerometer() {
|
|
|
|
/**
|
|
|
|
* The last known acceleration.
|
|
|
|
*/
|
|
|
|
this.lastAcceleration = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Asynchronously aquires the current acceleration.
|
|
|
|
* @param {Function} successCallback The function to call when the acceleration
|
|
|
|
* data is available
|
|
|
|
* @param {Function} errorCallback The function to call when there is an error
|
|
|
|
* getting the acceleration data.
|
|
|
|
* @param {AccelerationOptions} options The options for getting the accelerometer data
|
|
|
|
* such as timeout.
|
|
|
|
*/
|
|
|
|
Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) {
|
|
|
|
// If the acceleration is available then call success
|
|
|
|
// If the acceleration is not available then call error
|
|
|
|
|
|
|
|
// Created for iPhone, Iphone passes back _accel obj litteral
|
|
|
|
if (typeof successCallback == "function") {
|
|
|
|
var accel = new Acceleration(_accel.x,_accel.y,_accel.z);
|
|
|
|
Accelerometer.lastAcceleration = accel;
|
|
|
|
successCallback(accel);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Asynchronously aquires the acceleration repeatedly at a given interval.
|
|
|
|
* @param {Function} successCallback The function to call each time the acceleration
|
|
|
|
* data is available
|
|
|
|
* @param {Function} errorCallback The function to call when there is an error
|
|
|
|
* getting the acceleration data.
|
|
|
|
* @param {AccelerationOptions} options The options for getting the accelerometer data
|
|
|
|
* such as timeout.
|
|
|
|
*/
|
|
|
|
|
|
|
|
Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) {
|
|
|
|
// TODO: add the interval id to a list so we can clear all watches
|
|
|
|
var frequency = (options != undefined)? options.frequency : 10000;
|
|
|
|
|
|
|
|
Accel.start(frequency);
|
|
|
|
return setInterval(function() {
|
|
|
|
navigator.accelerometer.getCurrentAcceleration(successCallback, errorCallback, options);
|
|
|
|
}, frequency);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Clears the specified accelerometer watch.
|
|
|
|
* @param {String} watchId The ID of the watch returned from #watchAcceleration.
|
|
|
|
*/
|
|
|
|
Accelerometer.prototype.clearWatch = function(watchId) {
|
|
|
|
Accel.stop();
|
|
|
|
clearInterval(watchId);
|
|
|
|
}
|
|
|
|
|
|
|
|
PhoneGap.addConstructor(function() {
|
|
|
|
if (typeof navigator.accelerometer == "undefined") navigator.accelerometer = new Accelerometer();
|
|
|
|
});
|