Spec-Zone.ru › Cordova 6

cordova-plugin-device-motion

Этот плагин предоставляет доступ к акселерометру устройства. Акселерометр — это датчик движения, который обнаруживает изменение (delta) движения относительно текущей ориентации устройства в трёх измерениях вдоль осей x, y и z.

Доступ осуществляется через глобальный объект navigator.accelerometer.

Хотя объект прикреплён к глобальному пространству имён navigator, он недоступен до события deviceready.

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

Сообщайте о проблемах с этим плагином на форуме отслеживания проблем Apache Cordova.

Установка

cordova plugin add cordova-plugin-device-motion

Поддерживаемые платформы

  • Amazon Fire OS
  • Android
  • BlackBerry 10
  • Браузер
  • Firefox OS
  • iOS
  • Tizen
  • Windows Phone 8
  • Windows

Методы

  • navigator.accelerometer.getCurrentAcceleration
  • navigator.accelerometer.watchAcceleration
  • navigator.accelerometer.clearWatch

Объекты

  • Acceleration

navigator.accelerometer.getCurrentAcceleration

Получение текущего ускорения вдоль осей x, y и z.

Эти значения ускорения возвращаются в функцию обратного вызова accelerometerSuccess.

navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);

Пример

function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
}

function onError() {
    alert('onError!');
}

navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);

Особенности браузеров

Значения движения по осям X, Y и Z генерируются случайным образом для имитации акселерометра.

Особенности Android

Акселерометр вызывается с флагом SENSOR_DELAY_UI, который ограничивает максимальную частоту считывания в диапазоне от 20 до 60 Гц, в зависимости от устройства. Значения период, соответствующие более высоким частотам, приведут к дублированию образцов. Более подробную информацию можно найти в Руководстве по API Android.

Особенности iOS

  • iOS не распознаёт концепцию получения текущего ускорения в любой момент времени.

  • Необходимо отслеживать ускорение и фиксировать данные через заданные интервалы времени.

  • Таким образом, функция getCurrentAcceleration возвращает последнее значение, полученное из вызова watchAccelerometer.

navigator.accelerometer.watchAcceleration

Получение текущего Acceleration устройства с регулярными интервалами, выполняя функцию обратного вызова accelerometerSuccess каждый раз. Укажите интервал в миллисекундах через параметр acceleratorOptions объекта frequency.

Возвращаемый идентификатор отслеживания ссылается на интервал отслеживания акселерометра и может быть использован с navigator.accelerometer.clearWatch, чтобы прекратить отслеживание акселерометра.

var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
                                                       accelerometerError,
                                                       accelerometerOptions);
  • accelerometerOptions: Объект с необязательными ключами:
    • frequency: Запрошенная частота вызовов accelerometerSuccess с данными об ускорении в миллисекундах. (Число) (По умолчанию: 10000)

Пример

function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
}

function onError() {
    alert('onError!');
}

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

var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);

Особенности iOS

API вызывает функцию обратного вызова success с указанным интервалом, но ограничивает диапазон запросов к устройству значениями от 40 до 1000 мс. Например, если вы запросите интервал в 3 секунды (3000 мс), API запрашивает данные от устройства каждую секунду, но выполняет обратный вызов success только каждые 3 секунды.

navigator.accelerometer.clearWatch

Прекратить отслеживание Acceleration, на который ссылается параметр watchID.

navigator.accelerometer.clearWatch(watchID);
  • watchID: Идентификатор, возвращённый функцией navigator.accelerometer.watchAcceleration.

Пример

var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);

// ... later on ...

navigator.accelerometer.clearWatch(watchID);

Ускорение

Содержит данные Accelerometer , зафиксированные в определённый момент времени. Значения ускорения включают эффект силы тяжести (9,81 м/с^2), поэтому при расположении устройства горизонтально и верхней стороной вверх, возвращаемые значения x, y и z должны быть 0, 0, и 9.81.

Свойства

  • x: Величина ускорения по оси x. (в м/с^2) (Число)
  • y: Величина ускорения по оси y. (в м/с^2) (Число)
  • z: Величина ускорения по оси z. (в м/с^2) (Число)
  • timestamp: Маркер времени создания в миллисекундах. (DOMTimeStamp)

© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-device-motion/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API