IT/phonegap

폰갭 강좌 accelerometer API 모션 센서 가속도 정보

조원태 2016. 1. 19. 18:04
반응형

폰갭 강좌 accelerometer API 모션 센서 가속도 정보 


디바이스의 모션 센서로부터 가속도 정보를 가져오는 API 함수


가속도 정보를 x,y,z의 객체 형태로 얻어온다. 


accelerometer.getCurrentAcceleraion

현재 가속도 정보를 얻기 위한 함수입니다. 


accelerometerSuccess와 accelerometerError의 콜백함수가 있습니다. 

navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);


accelerometerSuccess 콜백함수는 가속도 정보를 정상적으로 가져왔을 때 호출되는 함수

이 콜백함수는 acceleration이라는 객체를 반환합니다. 

x,y,z정보와 timestamp 정보를 가지고 있습니다. 

timestamp는 폰갭의 네이티브 라이브러리에서 실제 디바이스의 가속도 센서로부터 얻었을 때의 시간 값이고 성공 콜백함수에서 얻게 되는 가속도 정보는 약간의 시간차가 발생하게 됩니다.


accelerometerError콜백함수는 가속도 정보를 가져오다 에러가 발생했을 때 호출되는 함수이고 어떠한 에러가 발생하였는지 알고 싶다면 이 함수에 인자를 정의해 출력하면 됩니다.

accelerometer.watchAcceleration

가속도 정보를 지속적으로 가져오는 함수입니다. 

accelerometerSuccess와 accelerometerError 콜백함수를 갖고 자바스크립트 객체인 accelerometerOptions라는 인자를 갖습니다.

이 함수는 결과 값으로 watchID를 반환합니다. 

var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess, accelerometerError, [accelerometerOptions]);


accelerometerOptions는 얼마나 자주 가속도 정보를 얻어올 것인가에 대한 설정값으로 Frequency라는 key에 설정하고자 할 시간 값을 1000분의 1초 단위로 지정한다. 기본값은 10000입니다.


accelerometer.clearWatch

accelermometer.watchAcceleration 함수에서 생성된 watchID를 기준으로 지속적으로 정보를 가져오는 동작을 멈추는 기능

navigator.accelerometer.clearWatchI(watchID);


예제

<!DOCTYPE html>

<html>

 <head>

  <title> accelerometer API </title>

 

<script type="text/javascript" charset="uft-8" src="phonegap.js"></script>

<script>

var watchID = null;


//phonegap이 로드되기를 기다린다.

document.addEventListener("deviceready", onDeviceReady, false);


//폰갭이 준비되면 호출

function onDeviceReady(){

startWatch();

}


//가속도 시작

function startWatch(){

//가속도를 매 3초마다 갱신

var options = {frequency:3000};

watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);


}


//가속도를 멈춘다.

function stopWatch(){

if( watchID ){

navigator.accelerometer.clearWatch( watchID );

watchID = null;

}

}


//onSuccess : 현재 가속도의 정보를 얻는다.

function onSuccess(aceleration){

var element = documetn.getElelementById('accelerometer');

element.innerHTML = 'Acceleration x : ' + acceleration.x + '<br /> ' + 

'Acceleraton y : ' + acceleration .y + '<br />' + 

'Acceleration z : ' + acceleration.z + '<br />' + 

'Timestamp : ' + acceleration.timestamp + '<br />';


}


//onError : 가속도 얻기를 실패했을 경우

function onError(){

alert('onError!');

}

</script>

 </head>


 <body>

  <div id="accelerometoer"> accelerometer를 기다린다.</div>

 </body>

</html>


위 소스를  www\index.html 에 복사합니다. 

폰갭 빌드 , 설치는 이전 강좌를 참고하세요.

반응형