react-native-motion-manager
Version:
A react-native interface for using the Gyroscope, Accelerometer and Magnetometer
81 lines (74 loc) • 1.78 kB
JavaScript
/**
* AccelerometerManager
*
* Created by Patrick Williams in beautiful Seattle, WA.
*/
;
var React = require('react-native');
var Button = require('react-native-button');
var {
Text,
View,
DeviceEventEmitter
} = React;
var {
Accelerometer
} = require('NativeModules');
Accelerometer.setAccelerometerUpdateInterval(0.1);
var AccelerometerManager = React.createClass({
getInitialState: function () {
return {
x: 0,
y: 0,
z: 0,
gyro: false
}
},
componentDidMount: function () {
DeviceEventEmitter.addListener('AccelerationData', function (data) {
this.setState({
x: data.acceleration.x.toFixed(5),
y: data.acceleration.y.toFixed(5),
z: data.acceleration.z.toFixed(5)
});
}.bind(this));
},
componentWillUnmount: function () {
Accelerometer.stopAccelerometerUpdates();
},
handleStart: function () {
Accelerometer.startAccelerometerUpdates();
this.setState({
gyro: true
});
},
handleStop: function () {
Accelerometer.stopAccelerometerUpdates();
this.setState({
x: 0,
y: 0,
z: 0,
gyro: false
});
},
render: function() {
console.log(this.state);
return (
<View style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}}>
<Text>x: {this.state.x}</Text>
<Text>y: {this.state.y}</Text>
<Text>z: {this.state.z}</Text>
{
(this.state.gyro) ?
<Button style={{color: 'red', margin: 20}} onPress={this.handleStop}>Stop</Button> :
<Button style={{color: 'green', margin: 20}} onPress={this.handleStart}>Start</Button>
}
</View>
);
}
});
module.exports = AccelerometerManager;