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
Option: With rnpm
rnpm link
Make alterations to the following files:
android/settings.gradle
...
include ':react-native-sensor-manager'
project(':react-native-sensor-manager').projectDir =newFile(settingsDir, '../node_modules/react-native-sensor-manager/android')android/app/build.gradle
...
dependencies {
...
compile project(':react-native-sensor-manager')
}register module (in MainApplication.java)
- For react-native below 0.19.0 (use
cat ./node_modules/react-native/package.json | grep version)
- For react-native below 0.19.0 (use
importcom.sensormanager.SensorManagerPackage; // <------ add packagepublicclassMainActivityextendsActivityimplementsDefaultHardwareBackBtnHandler {
......
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = newReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(newMainReactPackage())
.addPackage(newSensorManagerPackage()) // <------- add package
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);
setContentView(mReactRootView);
}
......
}- For react-native 0.19.0 and higher
importcom.sensormanager.SensorManagerPackage; // <------ add packagepublicclassMainApplicationextendsApplicationimplementsReactApplication {
// ...@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
newMainReactPackage(), // <---- add commanewSensorManagerPackage() // <---------- add package
);
}importReact,{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();