| React Native Version | react-native-sensors Version | 
|---|---|
| <= 39 | < 1.0 | 
| >= 40 | >= 1.0 | 
- react-native-live-translator
 - imagination-react-native
 - react-native-game-engine-handbook
 - react-native-iridescent
 
Do you want your project listed here? Just send a PR.
$ npm install react-native-sensors --save
$ react-native link react-native-sensors
Option: With CocoaPods (iOS only)
Add the following to your Podfile and run $ pod install:
pod 'RNSensors', :path => '../node_modules/react-native-sensors'
- In XCode, in the project navigator, right click 
LibrariesβAdd Files to [your project's name] - Go to 
node_modulesβreact-native-sensorsand addRNSensors.xcodeproj - In XCode, in the project navigator, select your project. Add 
libRNSensors.ato your project'sBuild PhasesβLink Binary With Libraries - Run your project (
Cmd+R)< 
- Open up 
android/app/src/main/java/[...]/MainApplication.java 
- Add 
import com.sensors.RNSensorsPackage;to the imports at the top of the file - Add 
new RNSensorsPackage()to the list returned by thegetPackages()method 
- Append the following lines to 
android/settings.gradle:include ':react-native-sensors' project(':react-native-sensors').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sensors/android') - Insert the following lines inside the dependencies block in 
android/app/build.gradle:compile project(':react-native-sensors') 
iOS simulators currently have no support for sensors. In order to retrieve any sensor output, you must develop on a real device.
Android simulators offer support for some sensors. This article documents how to use them (under the "Virtual Sensors" section.
import { Accelerometer, Gyroscope } from "react-native-sensors";
let accelerationObservable = null;
new Accelerometer({
  updateInterval: 400 // defaults to 100ms
})
  .then(observable => {
    accelerationObservable = observable;
    // Normal RxJS functions
    accelerationObservable
      .map(({ x, y, z }) => x + y + z)
      .filter(speed => speed > 20)
      .subscribe(speed => console.log(`You moved your phone with ${speed}`));
  })
  .catch(error => {
    console.log("The sensor is not available");
  });
setTimeout(() => {
  accelerationObservable.stop();
}, 1000);import React, { Component } from "react";
import { Text, View } from "react-native";
import { decorator as sensors } from "react-native-sensors";
class MyComponent {
  // no lifecycle needed
  render() {
    const { sensorsFound, Accelerometer, Gyroscope } = this.props;
    if (!Accelerometer || !Gyroscope) {
      // One of the sensors is still initializing
      return null;
    }
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          {(sensorsFound["Accelerometer"] &&
            `Acceleration has value: ${Accelerometer}`) ||
            "Acceleration is not available"}
          {(sensorsFound["Gyroscope"] && `Gyro has value: ${Gyroscope}`) ||
            "Gyro is not available"}
        </Text>
      </View>
    );
  }
}
export default sensors({
  Accelerometer: {
    updateInterval: 300 // optional
  },
  Gyroscope: true
})(MyComponent);This project is inspired by the react-native-sensor-manager and by the react-native-motion-manager. Both have similar solutions with a non-uniform interface and this project aims to unify both.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!