本文介紹動作檢測類WVMotion相關的JS API,供您建立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', {});