Native sensors access for react-native
Wrapper for react-native. Accelerometer, Gyroscope, Magnetometer, Orientation, Step Counter, Thermometer, LightSensor, and Proximity Sensor are supported for now.
$ npm i react-native-sensor-manager --save
rnpm
rnpm link
nrpm link)
Make alterations to the following files:
android/settings.gradle
... include ':react-native-sensor-manager' project(':react-native-sensor-manager').projectDir = new File(settingsDir, '../node_modules/react-native-sensor-manager/android')
android/app/build.gradle
... dependencies { ... compile project(':react-native-sensor-manager') }
register module (in MainApplication.java)
cat ./node_modules/react-native/package.json | grep version)
import com.sensormanager.SensorManagerPackage; //
public class MainApplication extends Application implements ReactApplication { // ... @Override protected List getPackages() { return Arrays.asList( new MainReactPackage(), // <---- add comma new SensorManagerPackage() // <---------- add package ); } ```
import React, { DeviceEventEmitter // will emit events that you can listen to } from 'react-native';import { SensorManager } from 'NativeModules';
SensorManager.startAccelerometer(100); // To start the accelerometer with a minimum delay of 100ms between events. DeviceEventEmitter.addListener('Accelerometer', function (data) { /** * data.x * data.y * data.z **/ }); SensorManager.stopAccelerometer();
DeviceEventEmitter.addListener('Gyroscope', function (data) { /** * data.x * data.y * data.z **/ }); SensorManager.startGyroscope(100); SensorManager.stopGyroscope();
SensorManager.startMagnetometer(100); DeviceEventEmitter.addListener('Magnetometer', function (data) { /** * data.x * data.y * data.z **/ }); SensorManager.stopMagnetometer();
SensorManager.startOrientation(100); DeviceEventEmitter.addListener('Orientation', function (data) { /** * data.azimuth * data.pitch * data.roll **/ }); SensorManager.stopOrientation();
SensorManager.startStepCounter(1000); DeviceEventEmitter.addListener('StepCounter', function (data) { /** * data.steps **/ }); SensorManager.stopStepCounter();
SensorManager.startThermometer(1000); DeviceEventEmitter.addListener('Thermometer', function (data) { /** * data.temp **/ }); SensorManager.stopThermometer();
SensorManager.startLightSensor(100); DeviceEventEmitter.addListener('LightSensor', function (data) { /** * data.light **/ }); SensorManager.stopLightSensor();
SensorManager.startProximity(100); DeviceEventEmitter.addListener('Proximity', function (data) { /** * data.isNear: [Boolean] A flag representing whether something is near the screen. * data.value: [Number] The raw value returned by the sensor (usually distance in cm). * data.maxRange: [Number] The maximum range of the sensor. **/ }); SensorManager.stopProximity();