Skip to content
No description, website, or topics provided.
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.
src/android
www
.gitignore
LICENSE
README.md
RELEASENOTES.md
package.json
plugin.xml

README.md

npm version

cordova-plugin-device-sensor-fusion

A cordova plugin using sensor fusion to offer more precise orientation data. It is based on a work of Alexander Pacha (https://bitbucket.org/apacha/sensor-fusion-demo).

DEMO: https://github.com/adirtyshame/threecordova

Access is via a global navigator.fusion object.

Although the object is attached to the global scoped navigator, it is not available until after the deviceready event.

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(navigator.fusion);
}

Installation

Install via cordova CLI:

cordova plugin add https://github.com/adirtyshame/cordova-plugin-device-sensor-fusion.git

Supported Platforms

  • Android

Methods

  • navigator.fusion.setMode
  • navigator.fusion.getCurrentSensorFusion
  • navigator.fusion.watchSensorFusion
  • navigator.fusion.clearWatch

navigator.fusion.setMode

Set the operation-mode for the plugin.

navigator.fusion.setMode(success, err, mode);

Available modes are (from '0' to '5'):

  • 0: Improved Orientation Sensor 1 (Sensor fusion of Android Rotation Vector and Calibrated Gyroscope - less stable but more accurate)
  • 1: Improved Orientation Sensor 2 (Sensor fusion of Android Rotation Vector and Calibrated Gyroscope - more stable but less accurate)
  • 2: Android Rotation Vector (Kalman filter fusion of Accelerometer + Gyroscope + Compass)
  • 3: Calibrated Gyroscope (Separate result of Kalman filter fusion of Accelerometer + Gyroscope + Compass)
  • 4: Gravity + Compass
  • 5: Accelerometer + Compass

Example

function success(result) {
    alert('new Mode: ' + result);
};

function err(error) {
    alert('Error: ' + error);
};

// Set operation mode to 'Android Rotation Vector'
navigator.fusion.setMode(onSuccess, onError, 2);

navigator.fusion.getCurrentSensorFusion

Get the current sensor fusion. The result is returned via a FusionResult object using the fusionSuccess callback function.

navigator.fusion.getCurrentSensorFusion(fusionSuccess, fusionError);

Example

function onSuccess(result) {
    alert('x: ' + result.x);
};

function onError(error) {
    alert('FusionError: ' + error.code);
};

navigator.fusion.getCurrentSensorFusion(onSuccess, onError);

navigator.fusion.watchSensorFusion

Gets the device's current sensor fusion data at a regular interval. Each time the data is retrieved, the fusionSuccess callback function is executed.

The returned watch ID references the sensor fusion watch interval. The watch ID can be used with navigator.fusion.clearWatch to stop watching the navigator.fusion.

var watchID = navigator.fusion.watchSensorFusion(fusionSuccess, fusionError, [fusionOptions]);

fusionOptions may contain the following keys:

  • frequency: How often to retrieve the sensor fusion data in milliseconds. (Number) (Default: 100)

Example

function onSuccess(result) {
    var element = document.getElementById('result');
    element.innerHTML = 'Result.x: ' + result.x;
};

function onError(fusionError) {
    alert('Fusion error: ' + fusionError.code);
};

var options = {
    frequency: 3000
}; // Update every 3 seconds

var watchID = navigator.fusion.watchSensorFusion(onSuccess, onError, options);

navigator.fusion.clearWatch

Stop watching the sensor fusion referenced by the watch ID parameter.

navigator.fusion.clearWatch(watchID);
  • watchID: The ID returned by navigator.fusion.watchSensorFusion.

Example

var watchID = navigator.fusion.watchSensorFusion(onSuccess, onError, options);

// ... later on ...

navigator.fusion.clearWatch(watchID);

FusionResult

A FusionResult object is returned to the fusionSuccess callback function.

Properties

  • FusionResult. (ATTENTION: will be deprecated soon)

    • x: The x-component of the resulting quaternion. (Number)
    • y: The y-component of the resulting quaternion. (Number)
    • z: The z-component of the resulting quaternion. (Number)
    • w: The w-component of the resulting quaternion. (Number)
  • FusionResult.quaternion.

    • x: The x-component of the resulting quaternion. (Number)
    • y: The y-component of the resulting quaternion. (Number)
    • z: The z-component of the resulting quaternion. (Number)
    • w: The w-component of the resulting quaternion. (Number)
  • FusionResult.eulerAngles.

    • yaw: The Euler-Angles yaw component. (Number)
    • pitch: The Euler-Angles pitch component. (Number)
    • roll: The Euler-Angles roll component. (Number)
  • FusionResult.timestamp: The time at which the data was determined. (milliseconds)

You can’t perform that action at this time.