본문 바로가기

nativescript accelarometer를 활용해서 가속도 하기

조만간에 쓸 일이 있을 거 같아서 적어본다.


플러그인 마켓에서 nativescript-accelerometer를 다운받아 설치한다.


기본 예제는 ns 블에 적혀있다.


import { startAccelerometerUpdates, AccelerometerData } from "nativescript-accelerometer"; startAccelerometerUpdates((data: AccelerometerData) => { console.log("x: " + data.x + "y: " + data.y + "z: " + data.z); }, { sensorDelay: "ui" });


흔들림을 감지하는 예제코드이다.


import { time } from "tns-core-modules/profiling"; import { AccelerometerData } from "nativescript-accelerometer"; const FORCE_THRESHOLD = 0.5; const TIME_THRESHOLD = 100; const SHAKE_TIMEOUT = 800; const SHAKE_THROTTLE = 1000; const SHAKE_COUNT = 3; export class ShakeDetector { private lastTime = 0; private lastShake = 0; private lastForce = 0; private shakeCount = 0; private cb: Function; constructor(callback: () => void) { this.cb = zonedCallback(callback); } public onSensorData(data: AccelerometerData) { const now = time(); if ((now - this.lastForce) > SHAKE_TIMEOUT) { this.shakeCount = 0; } const timeDelta = now - this.lastTime; if (timeDelta > TIME_THRESHOLD) { const forceVector = Math.abs(Math.sqrt(Math.pow(data.x, 2) + Math.pow(data.y, 2) + Math.pow(data.z, 2)) - 1); if (forceVector > FORCE_THRESHOLD) { this.shakeCount++; if ((this.shakeCount >= SHAKE_COUNT) && (now - this.lastShake > SHAKE_THROTTLE)) { this.lastShake = now; this.shakeCount = 0; this.cb(); } this.lastForce = now; } this.lastTime = now; } } }



https://www.nativescript.org/blog/detecting-shakes-in-nativescript



데모는 깃업에서 받아서 해보면 된다.


https://github.com/vakrilov/native-script-accelerometer/tree/master/demo


이 플러그인은 아니지만 이전에 다른 플러그인에 동작이 문제가 있어서 수정을 쌩고생을 하면서 했던 기억이 있다.


이리저리 테스트를 해봐야 겠다.