Skip to content
NativeScript plugin for using Android device sensors on background thread.
TypeScript Shell JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github init Apr 11, 2019
demo update demo Apr 16, 2019
publish chmod Apr 11, 2019
src bump Aug 9, 2019
.gitignore fix defs Apr 12, 2019
.prettierrc init Apr 11, 2019
.travis.yml init Apr 11, 2019
LICENSE
README.md adds litedata option and flush Apr 17, 2019
tslint.json init Apr 11, 2019

README.md

NativeScript-Android-Sensors

NativeScript plugin for using android device sensors that run on a background thread.

npm travis build stars

Installation

tns plugin add nativescript-android-sensors

Android Sensors: https://developer.android.com/reference/android/hardware/Sensor.html

Usage

import { AndroidSensors, AndroidSensorListener, SensorDelay } from 'nativescript-android-sensors';

const sensors = new AndroidSensors();
const accelerometerSensor: android.hardware.Sensor;
const gyroScope: android.hardware.Sensor;

const sensorListener = new AndroidSensorListener({
    onAccuracyChanged: (
        sensor: android.hardware.Sensor,
        accuracy: number
      ) => {
        console.log('accuracy', accuracy);
    },
    onSensorChanged: (result: string) => {
        // result is being returned as a string currently
        const parsedData = JSON.parse(result);
        const rawSensorData = parsedData.data;
        const sensor = parsedData.sensor;
        const time = parsedData.time;
    }
});

this.sensors.setListener(sensorListener);


someFunction() {
    accelerometerSensor = sensors.startSensor(android.hardware.Sensor.TYPE_LINEAR_ACCELERATION, SensorDelay.FASTEST);

    // here we are using the android const 4 which is for the TYPE_GYROSCOPE sensor
    // https://developer.android.com/reference/android/hardware/Sensor.html#TYPE_GYROSCOPE
    // we are passing the third argument to `startSensor` which is for maxReportLatency, if the sensor is able to support FIFO this will register the sensor with the reporting latency value, if not, the sensor registers on the background thread as normal
    const gyroScope =  sensors.startSensor(4, SensorDelay.NORMAL, 4000000);

    // maybe you wanna use a timeout and stop it after 8 seconds
    setTimeout(() => {
        sensors.stopSensor(gyroScope);
    }, 8000)
}

functionToStopTheSensorData() {
    sensors.stopSensor(accelerometerSensor);
}

API

Constructor

AndroidSensors (liteData: boolean = false)

The boolean argument for liteData changes the JSON returned from the sensor event changes. This is helpful when you are storing large amounts of dataset by reducing the redundant data from the sensor changed event.

import {
  AndroidSensors,
  AndroidSensorListener,
  SensorDelay
} from 'nativescript-android-sensors';

const sensors = new AndroidSensors(true);

Methods

  • setListener(listener: AndroidSensorListener): void
    • Set the event listener which returns data when the sensors change.
  • startSensor(sensor: android.hardware.Sensor, delay: SensorDelay, maxReportingDelay?: number): android.hardware.Sensor
    • Registers the sensor with the provided reporting delay. Returns the instance of the sensor so it can be passed to the stopSensor(sensor) method to unregister when finished with it. The third argument to startSensor is for maxReportLatency, if the sensor is able to support FIFO this will register the sensor with the reporting latency value, if not, the sensor registers on the background thread as normal
  • stopSensor(sensor: android.hardware.Sensor): void
    • Unregisters the sensor.
  • getDeviceSensors(): android.hardware.Sensor[]
    • Returns an array of the devices sensors.
  • flush(): boolean
    • Will flush event data from the listener. Returns true if successful in flushing.
You can’t perform that action at this time.