핵심 기능
Device motion api : iOS, Android 공통 (단, iOS 13+ 버전에서는 Permission 획득 필요)
1
2
3
4
5
6
7
8
9// devicemotion 이벤트 시작
window.addEventListener("devicemotion", handleMotion);
// Callback 함수 정의
function handleMotion(event) {
x = Math.round(event.acceleration.x);
y = Math.round(event.acceleration.y);
z = Math.round(event.acceleration.z);
}Ploty extend trace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// - x, y, z : 각 축별 측정값
// - logX, logY, logZ : 측정값 누적 저장 변수
// - measureInterval : 측정 간격 (100 ms로 설정)
interval = setInterval(function () {
Plotly.extendTraces(
"graph",
{
y: [[x], [y], [z]],
},
[0, 1, 2]
);
logX = [...logX, x];
logY = [...logY, y];
logZ = [...logZ, z];
}, measureInterval);Demo site : https://incredible-pavlova-4a5d8a.netlify.app/
Source code : https://github.com/chopthal/web_gyro/