测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | Apache 2 |
发布最新发布 | 2016年11月 |
由Holly Schinsky,Shazron Abdullah维护。
标题:设备运动
Android | iOS | Windows 8.1商店 | Windows 8.1手机 | Windows 10商店 | Travis CI |
---|---|---|---|---|---|
此插件提供对设备加速度计的访问。加速度计是一个运动传感器,可以检测相对于当前设备方向沿x、y和z轴的运动变化(delta)。
通过全局navigator.accelerometer
对象访问。
虽然对象附加到全局作用域的navigator
,但必须在deviceready
事件之后才能使用。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(navigator.accelerometer);
}
在Apache Cordova问题跟踪器上报告此插件的问题
cordova plugin add cordova-plugin-device-motion
获取沿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运动值都是随机生成的。
加速度计使用SENSOR_DELAY_UI
标志调用,该标志限制最大读取频率在20到60 Hz之间,具体取决于设备。对应更高频率的周期值会导致重复样本。更多细节可以在Android API指南中找到。
iOS 不认可在任何特定点上获取当前加速度的概念。
您必须监控加速度并在特定时间间隔捕获数据。
因此,getCurrentAcceleration
函数返回来自watchAccelerometer
调用报告的最后一个值。
以常规间隔检索设备的当前Acceleration
,每次都执行accelerometerSuccess
回调函数。通过accelerometerOptions
对象中的frequency
参数指定间隔(毫秒)。
返回的监视ID引用了加速度计的监视间隔,可以用navigator.accelerometer.clearWatch
来停止监视加速度计。
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
accelerometerError,
accelerometerOptions);
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);
API在请求的间隔内调用成功回调函数,但将请求的范围限制在设备之间的40ms到1000ms之间。例如,如果您请求3秒(3000ms)的间隔,API将每秒从设备请求一次数据,但每3秒才执行一次成功回调。
停止监视由watchID
参数引用的Acceleration
。
navigator.accelerometer.clearWatch(watchID);
navigator.accelerometer.watchAcceleration
返回的ID。var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
// ... later on ...
navigator.accelerometer.clearWatch(watchID);
包含在特定时间点捕获的Accelerometer
数据。加速度值包括重力效应(9.81 m/s^2),因此当设备平放并且向上 facing 时,返回的x、y和z值应为0
、0
和9.81
。