function Acceleration(x, y, z) { this.x = x; this.y = y; this.z = z; this.timestamp = new Date().getTime(); } // Need to define these for android _accel = {}; _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(); });