歡迎關注個人我的博客分享一些前端技術、面試題、面試技巧等前端
deviceorientation
提供設備的物理方向信息,表示爲一系列本地座標系的旋角。devicemotion
提供設備的加速信息,表示爲定義在設備上的座標系中的卡爾迪座標。其還提供了設備在座標系中的自轉速率。若可行的話,事件應該提供設備重心處的加速信息。compassneedscalibration
用於通知 Web 站點使用羅盤信息校準上述事件。註冊一個 deviceorientation 事件的接收器git
window.addEventListener("deviceorientation", function(e) {
console.log(e);
// 處理event.alpha、event.beta及event.gamma
document.querySelector("#item").innerHTML = ` <p> 設備沿z軸上的旋轉角度${e.alpha} </p> <p> 設備在x軸上的旋轉角度,描述設備由前向後旋轉的狀況 ${e.beta} </p> <p>表示設備在y軸上的旋轉角度,描述設備由左向右旋轉的狀況${e.gamma} </p> <p>與北方向的角度差值,正北爲0度,正東爲90度,正南爲180度,正西爲270度${e.webkitCompassHeading}</p> <p>指北針的精確度,表示誤差爲正負多少度${e.webkitCompassAccuracy} </p> `;
});
複製代碼
須要在手機端使用github
安卓端不支持顯示
webkitCompassHeading
和webkitCompassAccuracy
小夥伴能夠經過蘋果手機訪問獲取web
使用自定義界面通知用戶校準羅盤面試
window.addEventListener("compassneedscalibration", function(event) {
alert("您的羅盤須要校準,請將設備沿數字8方向移動。");
event.preventDefault();
});
複製代碼
註冊一個 devicemotion 時間的接收器學習
window.addEventListener("devicemotion", function(event) {
console.log(event);
});
複製代碼
均爲只讀屬性ui
咱們嘗試使用 HTML 的這個對象方法實現一個搖一搖功能spa
let SHAKE_THRESHOLD = 800
let last_update = 0
let x, y, z, last_x = 0, last_y = 0, last_z = 0
function deviceMotionHandler (eventData) {
let acceleration = eventData.accelerationIncludingGravity
let curTime = +new Date()
if ((curTime - last_update) > 300) {
let diffTime = curTime - last_update
last_update = curTime
x = acceleration.x
y = acceleration.y
z = acceleration.z
let speed = Math.abs(x + y + z -last_x - last_y - last_z) / diffTime * 10000
if (speed > SHAKE_THRESHOLD) {
// 這裏寫要執行的代碼
}
last_x = x
last_y = y
last_z = z
}
}
if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', deviceMotionHandler, false)
} else {
alert('Not supported on your device')
}
複製代碼
但願對讀完本文的你有幫助、有啓發,若是有不足之處,歡迎批評指正交流!3d
歡迎關注個人我的博客分享一些前端技術、面試題、面試技巧等code
辛苦整理良久,還望手動點贊鼓勵~
'摘抄'不是單純的「粘貼->複製」,而是眼到,手到,心到的一字一句敲打下來。
博客聲明:全部轉載的文章、圖片僅用於做者本人收藏學習目的,被要求或認爲適當時,將標註署名與來源。若不肯某一做品被轉用,請及時通知本站,本站將予以及時刪除。