From 7f7ba3b52abc523c96114eb749608d303f7e1635 Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Sun, 6 Mar 2016 15:54:55 -0500 Subject: [PATCH] feat(plugin): add functionality to device motion plugin --- src/plugins/devicemotion.ts | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/plugins/devicemotion.ts b/src/plugins/devicemotion.ts index a49bb104..4ea6ad3d 100644 --- a/src/plugins/devicemotion.ts +++ b/src/plugins/devicemotion.ts @@ -1,5 +1,38 @@ import {Plugin, Cordova} from './plugin'; +export interface accelerationData { + + /** + * Amount of acceleration on the x-axis. (in m/s^2) + */ + x : number, + + /** + * Amount of acceleration on the y-axis. (in m/s^2) + */ + y : number, + + /** + * Amount of acceleration on the z-axis. (in m/s^2) + */ + z : number, + + /** + * Creation timestamp in milliseconds. + */ + timestamp : any + +} + +export interface accelerometerOptions { + + /** + * Requested period of calls to accelerometerSuccess with acceleration data in Milliseconds. Default: 10000 + */ + frequency? : number + +} + /** * Requires Cordova plugin: `cordova-plugin-device-motion`. For more info, please see the [Device Motion docs](https://github.com/apache/cordova-plugin-device-motion). * @@ -17,10 +50,45 @@ import {Plugin, Cordova} from './plugin'; }) export class DeviceMotion { + /** + * Get the current acceleration along the x, y, and z axes. + * @returns {Promise} Returns object with x, y, z, and timestamp properties + */ + @Cordova() + static getCurrentAcceleration () : Promise { // This Promise is replaced by one from the @Cordova decorator that wraps // the plugin's callbacks. We provide a dummy one here so TypeScript // knows that the correct return type is Promise, because there's no way // for it to know the return type from a decorator. // See https://github.com/Microsoft/TypeScript/issues/4881 + return new Promise((res, rej) => {}); + } + + /** + * + * @param options + * @returns {Observable} + */ + @Cordova({ + successIndex: 0, + errorIndex: 1 + }) + static watchAcceleration (options? : accelerometerOptions) : Promise { + // This Promise is replaced by one from the @Cordova decorator that wraps + // the plugin's callbacks. We provide a dummy one here so TypeScript + // knows that the correct return type is Promise, because there's no way + // for it to know the return type from a decorator. + // See https://github.com/Microsoft/TypeScript/issues/4881 + return new Promise((res, rej) => {}); + } + + /** + * Stop watching the Acceleration referenced by the watchID parameter. + * @param watchID The ID returned by watchAcceleration method + */ + @Cordova({ + sync: true + }) + static clearWatch(watchID : any) : void {} }