动作检测

本文介绍动作检测类WVMotion相关的JS API,供您在通过跨平台DevOps创建H5端应用或者小程序时参考。动作检测类WVMotion的JSAPI提供监听动作的相关能力,例如开启和停止吹气动作的监听、令手机震动。

WVMotion.listenBlow

开启吹气动作的监听。

输入参数

  • [number]time:(可选)吹气事件的时间间隔(单位:秒),在用户吹气的过程中,会每隔指定时间引发一次吹气事件。在iOS平台,该值为[0, 1] 区间范围值,默认为0(由系统自动决定),伴随着吹气过程,该值逐渐增大。

回调参数

无回调参数,如果成功开启了吹气的监听,则进入success回调,否则进入failure回调。

监听事件

motion.blow在开启吹气动作的监听时,用户进行了吹气。

事件参数:

  • [number]pass:吹气检测值,该值随着硬件的不同有所不同。在iOS平台,该值为[0, 1] 区间范围值,伴随着吹气过程,该值逐渐增大。在Android平台,该值始终为1

document.addEventListener('motion.blow', function(e) {
        alert('检测到吹气');
}, false);

window.WindVane.call('WVMotion', 'listenBlow', {}, function(e) {
        alert('success');
}, function(e) {
        alert('failure:' + JSON.stringify(e));
});

WVMotion.stopListenBlow

停止吹气动作的监听。

输入参数

无输入参数。

回调参数

无回调参数,总是进入success回调。

window.WindVane.call('WVMotion', 'stopListenBlow', {}, function(e) {
        alert('success');
});

WVMotion.listenGyro

开启或关闭陀螺仪的监听。

监听陀螺仪,目的是为了监听手机方向的改变 ,使得H5页面可以根据手机方向做出不同反应。在手机中,有两个传感器可以实现这一目的:陀螺仪和重力感应器。陀螺仪可以得到手机空间位置的欧拉角:roll、pitch 和 yaw,重力感应器则可以得到重力在手机三个方向上的分量。

由于在iOS和Android平台下得到的陀螺仪数据暂时难以统一,而重力感应器的数据更加容易统一,因此目前采用重力感应器的数据作为返回值 ,H5页面可以通过相关算法计算得到手机方向。

输入参数

  • [boolean]on:开启还是关闭陀螺仪的监听,true表示开启监听,false表示关闭监听。

  • [number]frequency:指定陀螺仪事件的时间间隔(单位:毫秒)。指定该时间间隔后,系统在触发陀螺仪事件时,会保证两次事件的触发时间间隔大于指定时间间隔。

回调参数

无回调参数,如果成功开启或关闭了陀螺仪的监听,则进入success回调,否则进入failure回调。

监听事件

motion.gyro在开启陀螺仪的监听时,手机的方向发生了变化。

事件参数:

  • [number] x:手机x方向上的重力分量值,范围是[-1, 1]

  • [number] y:手机y方向上的重力分量值,范围是[-1, 1]

  • [number] z:手机z方向上的重力分量值,范围是[-1, 1]

document.addEventListener('motion.gyro', function(e) {
        alert('检测到手机方向改变');
}, false);

var params = {
        // 是开启还是关闭陀螺仪的监听
        on: true,
        // 陀螺仪事件的时间间隔
        frequency: 100
};
window.WindVane.call('WVMotion', 'listenGyro', params, function(e) {
        alert('success');
}, function(e) {
        alert('failure:' + JSON.stringify(e));
});

WVMotion.listeningShake

开启或关闭摇动的监听。

输入参数

  • [boolean]on:是开启还是关闭摇动的监听,true表示开启监听,false表示关闭监听。

  • [number]frequency:(可选)摇动事件的时间间隔(单位:毫秒),会保证两次摇动事件触发的时间间隔大于指定时间,默认为500

  • [number]shakeThreshold:(可选)摇动敏感度,加速度超过敏感度就认为是一次有效摇动,默认为1.2

  • [number]shakeNum:(可选)摇动次数,仅当摇动了指定次数后才会触发一次摇动事件,默认为1

回调参数

无回调参数,如果成功开启或关闭了摇动的监听,则进入success回调,否则进入failure 回调。

监听事件

motion.shake 在开启摇动的监听时,用户摇动了手机。

事件参数:

  • [number] x:手机x方向上的加速度。

  • [number] y:手机y方向上的加速度。

  • [number] z:手机z方向上的加速度。

document.addEventListener('motion.shake', function(e) {
        alert('检测到摇动');
}, false);

var params = {
        // 是开启还是关闭摇动的监听
        on: true
};
window.WindVane.call('WVMotion', 'listeningShake', params, function(e) {
        alert('success');
}, function(e) {
        alert('failure: ' + JSON.stringify(e));
})

WVMotion.vibrate

令手机震动。

输入参数

  • [int]duration:(可选)震动的持续时间(毫秒),默认由系统自动决定(仅限 WindVane Android,由于机型差异,可能存在在某些机型上参数不生效的问题)。

回调参数

无回调参数,总是进入success回调。

window.WindVane.call('WVMotion', 'vibrate', {});

var params = {
        // 震动的持续时间
        duration: 7000
};
window.WindVane.call('WVMotion', 'vibrate', params);

WVMotion.startAccelerometer

说明

该API只在Windvane Android 1.0.3.4以上版本有效。

开始监听加速度数据。

输入参数

  • [string] interval:可选,监听加速度数据回调函数的执行频率,默认是'normal',可选值有:

    • ui:适用于更新UI的回调频率,在60ms/次左右。

    • game:适用于更新游戏的回调频率,在20ms/次左右。

    • normal:普通的回调频率,在200ms/次左右。

回调参数

成功回调参数:

  • 无回调参数。

失败回调参数:

  • [string] msg:失败的信息。

监听事件

WVMotion.Event.accelerometer

获取加速度数据成功。

事件参数:

  • [float] x:X轴数据。

  • [float] y:Y轴数据。

  • [float] z:Z轴数据。

document.addEventListener('WVMotion.Event.accelerometer', function (e) {
        alert('event accelerometer: ' + JSON.stringify(e.param));
});

var params = {
  interval: 'normal'
};

window.WindVane.call('WVMotion', 'startAccelerometer', params, function(e) {
}, function(e) {
        alert('startAccelerometer failure: ' + JSON.stringify(e));
});

WVMotion.stopAccelerometer

说明

该API只在Windvane Android 1.0.3.4以上版本有效。

停止监听加速度数据。

输入参数

  • 无输入参数。

回调参数

无回调参数,总是进入success回调。

window.WindVane.call('WVMotion', 'stopAccelerometer', {});

WVMotion.startCompass

说明

该API只在Windvane Android 1.0.3.4以上版本有效。

开始监听罗盘数据。

输入参数

  • [string] interval:[可选], 监听加速度数据回调函数的执行频率,默认是'normal',可选值有:

    • ui - 适用于更新UI的回调频率,在60ms/次左右

    • game - 适用于更新游戏的毁掉频率,在20ms/次左右

    • normal - 普通的回调频率,在200ms/次左右

回调参数

成功回调参数:

  • 无回调参数。

失败回调参数:

  • [string] msg:失败的信息。

监听事件

WVMotion.Event.compass

获取罗盘数据成功。

事件参数:

  • [float] direction:面对的方向与正北方向的度数 [0, 360)。

  • [long] timestamp:时间戳。

document.addEventListener('WVMotion.Event.compass', function (e) {
        alert('event compass: ' + JSON.stringify(e.param));
});

var params = {
  interval: 'normal'
};

window.WindVane.call('WVMotion', 'startCompass', params, function(e) {
}, function(e) {
        alert('startCompass failure: ' + JSON.stringify(e));
});

WVMotion.stopCompass

说明

该API只在Windvane Android 1.0.3.4以上版本有效。

停止监听罗盘数据。

输入参数

  • 无输入参数。

回调参数

无回调参数,总是进入success回调。

window.WindVane.call('WVMotion', 'stopCompass', {});