这个插件是用于读取速度传感器的数据,速度感应器是用来监控设备在三围立体空间的位置信息比如_x_, y, z,和设备上传感器的类型,精确度息息相关。
通过navigator.accelerometer
对象来访问该插件。而且是必须要等到deviceready
触发以后才能够对accelerometer
进行访问
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(navigator.accelerometer);
}
cordova plugin add cordova-plugin-device-motion
- Amazon Fire OS
- Android
- BlackBerry 10
- Browser
- Firefox OS
- iOS
- Tizen
- Windows Phone 8
- Windows
- navigator.accelerometer.getCurrentAcceleration
- navigator.accelerometer.watchAcceleration
- navigator.accelerometer.clearWatch
- Acceleration
获取当前的感应器数据_x_, y, z。这个数据通过accelerometerSuccess
回调函数返回的acceleration
参数返回。
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);
accelerometer
受__SENSOR_DELAY_UI__影响,这个读取频率根据设备不同在20到60Hz之间,高处频率的__period__值会导致读取重复数据。
-
iOS 没有当前位置的概念。
-
你必须监听速度传感器,并且在一段间隔后拿到数据。
-
getCurrentAcceleration
现在延迟调用了watchAccelerometer
。
定时查询当前Acceleration
,每次查询结束后执行accelerometerSuccess
,通过acceleratorOptions
对象的frequency
属性来设置延时,单位毫秒。
返回值watchid是用于navigator.accelerometer.clearWatch
来停止监视活动的。
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
accelerometerError,
accelerometerOptions);
- accelerometerOptions: 一个包含如下属性的对象类型。
- period: 请求调用的周期,单位毫秒(
accelerometerSuccess
被调用的间隔)。 (Number) (Default: 10000)
- period: 请求调用的周期,单位毫秒(
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.(onSuccess, onError, options);
这个函数的回调函数有时间间隔的要求,限制范围是40ms到1000ms,比如你设置3秒(3000ms),虽然会每隔1秒请求一次数据,但是success回调函数是每3秒才被调用一次。
停止对watchID
指定的传感器Acceleration
的监视。一定要在watchAcceleration
使用。否则会造成资源泄露。
navigator.accelerometer.clearWatch(watchID);
- watchID: The ID returned by
navigator.accelerometer.watchAcceleration
.
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
// ... later on ...
navigator.accelerometer.clearWatch(watchID);
包含Accelerometer
在特定时间点的数据。Acceleration
包含一个重力影响的值(9.81 m/s^2), 因此哪怕是你在一个纬度为0,0,0的水平面,返回的数据也会是_x_ y,_z_返回值' 0 ',' 0 ',' 9.81 '。
- x: 传感器x坐标的计数。 (in m/s^2) (Number)
- y: 传感器y坐标的计数。 (in m/s^2) (Number)
- z: 传感器z坐标的计数。 (in m/s^2) (Number)
- timestamp: 毫秒为单位的时间戳。 (DOMTimeStamp)