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