摘要:原文出處最近要寫一個(gè)微信網(wǎng)頁(yè),需要監(jiān)聽手機(jī)搖動(dòng)事件,并且伴隨有聲音在,事件特性的運(yùn)動(dòng)傳感器的封裝時(shí)間裝置,你可以通過(guò)改變運(yùn)動(dòng)時(shí)間獲取設(shè)備的狀態(tài),加速和其他數(shù)據(jù)有另一個(gè)角度事件提供設(shè)備,定位等信息。
原文出處:http://i.jakeyu.top/2016/05/0...
最近要寫一個(gè)微信網(wǎng)頁(yè),需要監(jiān)聽手機(jī)搖動(dòng)事件,并且伴隨有聲音
在HTML5,devicemotion事件deviceorientation特性的運(yùn)動(dòng)傳感器的封裝時(shí)間裝置,你可以通過(guò)改變運(yùn)動(dòng)時(shí)間獲取設(shè)備的狀態(tài),加速和其他數(shù)據(jù)(有另一個(gè)角度deviceorientation事件提供設(shè)備,定位等信息)。
而通過(guò)DeviceMotion對(duì)設(shè)備運(yùn)動(dòng)狀態(tài)的判斷,則可以幫助我們?cè)诰W(wǎng)頁(yè)上就實(shí)現(xiàn)“搖一搖”的交互效果。
把監(jiān)聽事件綁定給 deviceMotionHandler
if (window.DeviceMotionEvent) { window.addEventListener("devicemotion", deviceMotionHandler, false); } else { alert("本設(shè)備不支持devicemotion事件"); } 獲取設(shè)備加速度信息 accelerationIncludingGravity function deviceMotionHandler(eventData) { var acceleration = eventData.accelerationIncludingGravity, x, y, z; x = acceleration.x; y = acceleration.y; z = acceleration.z; document.getElementById("status").innerHTML = "x:"+x+"
y:"+y+"
z:"+z; }
“搖一搖”的動(dòng)作既“一定時(shí)間內(nèi)設(shè)備了一定距離”,因此通過(guò)監(jiān)聽上一步獲取到的x, y, z 值在一定時(shí)間范圍內(nèi) 的變化率,即可進(jìn)行設(shè)備是否有進(jìn)行晃動(dòng)的判斷。而為了防止正常移動(dòng)的誤判,需要給該變化率設(shè)置一個(gè)合適的臨界 值。
var SHAKE_THRESHOLD = 800; var last_update = 0; var x = y = z = last_x = last_y = last_z = 0; if (window.DeviceMotionEvent) { window.addEventListener("devicemotion", deviceMotionHandler, false); } else { alert("本設(shè)備不支持devicemotion事件"); } function deviceMotionHandler(eventData) { var acceleration = eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime - last_update) > 100) { var diffTime = curTime - last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; var status = document.getElementById("status"); if (speed > SHAKE_THRESHOLD) { doResult(); } last_x = x; last_y = y; last_z = z; } }
100毫秒進(jìn)行一次位置判斷,若前后x, y, z間的差值的絕對(duì)值和時(shí)間比率超過(guò)了預(yù)設(shè)的閾值,則判斷設(shè)備進(jìn)行 了搖晃操作。
下面是我改寫的代碼文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/80790.html
摘要:剛剛過(guò)去的一年里基于微信的營(yíng)銷可謂是十分火爆,通過(guò)轉(zhuǎn)發(fā)朋友圈帶來(lái)的病毒式傳播效果相信大家都不太陌生吧,剛好最近農(nóng)歷新年將至,我就拿一個(gè)搖簽的小例子來(lái)談一談中如何調(diào)用手機(jī)重力感應(yīng)的接口演示搖一搖,萬(wàn)福簽什么是重力感應(yīng)說(shuō)到重力感應(yīng)有一個(gè)東西不得 剛剛過(guò)去的一年里基于微信的H5營(yíng)銷可謂是十分火爆,通過(guò)轉(zhuǎn)發(fā)朋友圈帶來(lái)的病毒式傳播效果相信大家都不太陌生吧,剛好最近農(nóng)歷新年將至,我就拿一個(gè)搖簽的小...
摘要:剛剛過(guò)去的一年里基于微信的營(yíng)銷可謂是十分火爆,通過(guò)轉(zhuǎn)發(fā)朋友圈帶來(lái)的病毒式傳播效果相信大家都不太陌生吧,剛好最近農(nóng)歷新年將至,我就拿一個(gè)搖簽的小例子來(lái)談一談中如何調(diào)用手機(jī)重力感應(yīng)的接口演示搖一搖,萬(wàn)福簽什么是重力感應(yīng)說(shuō)到重力感應(yīng)有一個(gè)東西不得 剛剛過(guò)去的一年里基于微信的H5營(yíng)銷可謂是十分火爆,通過(guò)轉(zhuǎn)發(fā)朋友圈帶來(lái)的病毒式傳播效果相信大家都不太陌生吧,剛好最近農(nóng)歷新年將至,我就拿一個(gè)搖簽的小...
閱讀 1683·2021-11-02 14:48
閱讀 3791·2019-08-30 15:56
閱讀 2848·2019-08-30 15:53
閱讀 3285·2019-08-30 14:09
閱讀 3199·2019-08-30 12:59
閱讀 2932·2019-08-29 18:38
閱讀 2783·2019-08-26 11:41
閱讀 2356·2019-08-23 16:45