mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2025-03-17 00:51:07 +08:00
feat(gyroscope): add Gyroscope plugin (#1004)
* add gyroscope.ts to plugins * add gyroscope to index * Update gyroscope.ts * Update gyroscope.ts
This commit is contained in:
parent
57e2691889
commit
0378b1d7fd
@ -62,6 +62,7 @@ import { Globalization } from './plugins/globalization';
|
|||||||
import { GooglePlus } from './plugins/google-plus';
|
import { GooglePlus } from './plugins/google-plus';
|
||||||
import { GoogleMap } from './plugins/googlemap';
|
import { GoogleMap } from './plugins/googlemap';
|
||||||
import { GoogleAnalytics } from './plugins/googleanalytics';
|
import { GoogleAnalytics } from './plugins/googleanalytics';
|
||||||
|
import { Gyroscope } from './plugins/gyroscope';
|
||||||
import { HeaderColor } from './plugins/headercolor';
|
import { HeaderColor } from './plugins/headercolor';
|
||||||
import { Hotspot } from './plugins/hotspot';
|
import { Hotspot } from './plugins/hotspot';
|
||||||
import { HTTP } from './plugins/http';
|
import { HTTP } from './plugins/http';
|
||||||
@ -191,6 +192,7 @@ export * from './plugins/globalization';
|
|||||||
export * from './plugins/google-plus';
|
export * from './plugins/google-plus';
|
||||||
export * from './plugins/googleanalytics';
|
export * from './plugins/googleanalytics';
|
||||||
export * from './plugins/googlemap';
|
export * from './plugins/googlemap';
|
||||||
|
export * from './plugins/gyroscope';
|
||||||
export * from './plugins/headercolor';
|
export * from './plugins/headercolor';
|
||||||
export * from './plugins/hotspot';
|
export * from './plugins/hotspot';
|
||||||
export * from './plugins/http';
|
export * from './plugins/http';
|
||||||
@ -321,6 +323,7 @@ window['IonicNative'] = {
|
|||||||
GooglePlus,
|
GooglePlus,
|
||||||
GoogleMap,
|
GoogleMap,
|
||||||
GoogleAnalytics,
|
GoogleAnalytics,
|
||||||
|
Gyroscope,
|
||||||
HeaderColor,
|
HeaderColor,
|
||||||
Hotspot,
|
Hotspot,
|
||||||
HTTP,
|
HTTP,
|
||||||
|
100
src/plugins/gyroscope.ts
Normal file
100
src/plugins/gyroscope.ts
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
import { Plugin, Cordova} from './plugin';
|
||||||
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
|
||||||
|
declare var navigator: any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that represent output data
|
||||||
|
*/
|
||||||
|
export interface GyroscopeOrientation {
|
||||||
|
/**
|
||||||
|
* Represent x-axis
|
||||||
|
*/
|
||||||
|
x: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent y-axis
|
||||||
|
*/
|
||||||
|
y: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent z-axis
|
||||||
|
*/
|
||||||
|
z: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represent timestamp of sensor read. Default is 10000ms
|
||||||
|
*/
|
||||||
|
timestamp: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that represent option data
|
||||||
|
*/
|
||||||
|
export interface GyroscopeOptions {
|
||||||
|
/**
|
||||||
|
* Represent how often (in milliseconds) sensor should be read. Default is 10000 ms
|
||||||
|
*/
|
||||||
|
frequency: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Gyroscope
|
||||||
|
* @description Read Gyroscope sensor data
|
||||||
|
* @usage
|
||||||
|
* ```
|
||||||
|
* import { Gyroscope, GyroscopeOrientation, GyroscopeOptions } from 'ionic-native';
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* let options: GyroscopeOptions = {
|
||||||
|
* frequency: 1000
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* Gyroscope.getCurrent(options)
|
||||||
|
* .then((orientation: GyroscopeOrientation) => {
|
||||||
|
* console.log(orientation.x, orientation.y, orientation.z, orientation.timestamp);
|
||||||
|
* })
|
||||||
|
* .catch()
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Gyroscope.watch()
|
||||||
|
* .subscribe((orientation: GyroscopeOrientation) => {
|
||||||
|
* console.log(orientation.x, orientation.y, orientation.z, orientation.timestamp);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
@Plugin({
|
||||||
|
pluginName: 'Gyroscope',
|
||||||
|
plugin: 'cordova-plugin-gyroscope',
|
||||||
|
pluginRef: 'navigator.gyroscope',
|
||||||
|
repo: 'https://github.com/NeoLSN/cordova-plugin-gyroscope',
|
||||||
|
platforms: ['Android', 'iOS']
|
||||||
|
})
|
||||||
|
|
||||||
|
export class Gyroscope {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Watching for gyroscope sensor changes
|
||||||
|
* @param options {GyroscopeOptions} (optional)
|
||||||
|
* @return {Observable<GyroscopeOrientation>} Returns an Observable that resolves GyroscopeOrientation
|
||||||
|
*/
|
||||||
|
static watch(options?: GyroscopeOptions): Observable<GyroscopeOrientation> {
|
||||||
|
return new Observable<GyroscopeOrientation> (
|
||||||
|
(observer: any) => {
|
||||||
|
let watchId = navigator.gyroscope.watch(observer.next.bind(observer), observer.next.bind(observer), options);
|
||||||
|
return () => navigator.gyroscope.clearWatch(watchId);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current data from gyroscope sensor
|
||||||
|
* @param options {GyroscopeOptions} (optional)
|
||||||
|
* @return {Promise<GyroscopeOrientation>} Returns a promise that resolves GyroscopeOrientation
|
||||||
|
*/
|
||||||
|
@Cordova({
|
||||||
|
callbackOrder: 'reverse'
|
||||||
|
})
|
||||||
|
static getCurrent(options?: GyroscopeOptions): Promise<GyroscopeOrientation> { return; }
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user