이 사이트는 전자정부 표준프레임워크 구버전(1.0 ~ 4.3) 가이드 아카이브입니다. 내용은 더 이상 갱신되지 않습니다. 최신 내용은 최신 버전 문서에서 확인하세요.

모바일 디바이스 API 2.5

Accelerometer

Accelerometer

설명

  • 디바이스의 움직임에 대하여 X, Y, Z축의 방향을 감지한다.

제약사항

  • Accelerometer API의 플랫폼별 제약사항은 다음과 같다.

Android

N/A

iOS

accelerometer.getCurrentAcceleration
  • iPhone은 어떤 주어진 점에서 가속 센서가 감지한 좌표 값을 주지 않는다.
  • 특정 시간 간격으로 가속 센서를 감지해야 한다.
  • getCurrentAcceleration() 은 watchAcceletometer() 을 통해 마지막으로 감지된 좌표 값을 나타낸다.
accelerometer.watchAcceleration
  • iPhone에서는 가속 센서 감지 간격이 40 milliseconds 에서 1000 milliseconds 에서만 유효하게 적용된다.
  • 만약 3초 간격으로 watchAcceleration()을 요청하게 되면, phoneGap을 통해 1초 간격으로 가속 센서의 좌표 값을 받아오지만, phoneGap은 3초 단위로 callback 함수를 요청하도록 자체 보정한다.

환경 설정

Android

  • app/res/xml/config.xml
<plugin name="Accelerometer" value="org.apache.cordova.AccelListener" />

iOS

  • App/Supporting Files/Cordova.plist
<key>Plugins</key>
<dict>
    <key>Accelerometer</key>
    <string>CDVAccelerometer</string>
</dict>

관련 함수

accelerometer.getCurrentAcceleration

  • 현재 가속 센서가 감지한 좌표 값 (x, y, z) 을 구한다.
navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
  • Quick Example
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};

function onError() {
    alert('onError!');
};

navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);

accelerometer.watchAcceleration

  • 특정 시간 간격으로 가속 센서가 감지한 좌표 값 (x, y, z) 을 받아온다.
  • acceleratorOptions Object 내의 frequency 파라미터로 정한 특정 시간 간격으로 accelerometerSuccess을 호출한다.
  • 함수 실행을 통해 얻은 watch ID를 가지고 accelerometer.clearWatch 함수로 가속 센서 감지를 중단할 수 있다.
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
                                                       accelerometerError,
                                                       [accelerometerOptions]);
  • Quick Example
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};

function onError() {
    alert('onError!');
};

var options = { frequency: 3000 };  // Update every 3 seconds

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

accelerometer.clearWatch

  • accelerometer.watchAcceleration을 통해 작동 중인 가속 센서(watchID) 감지를 종료한다.
navigator.accelerometer.clearWatch(watchID);
  • Quick Example
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);

...

navigator.accelerometer.clearWatch(watchID);

파라미터

accelerometerSuccess

  • 가속 센서의 method 가 성공했을 때 실행하는 함수.
  • 가속 센서의 정보를 가지는 Acceleration 객체를 매개변수로 가진다.
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};

accelerometerError

  • 가속 센서의 method 가 실패했을 때 실행하는 함수.
function() {
    // Handle the error
}

accelerometerOptions

  • 감지할 가속 센서의 옵션을 설정한다.
accelerometerOptions
유형설명타입비고
frequency특정 시간 간격으로 가속 센서를 감지한다.Number기본값 : 10000

Objects

Acceleration

  • 가속 센서가 감지한 가속도 정보를 가지는 객체.
function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};

function onError() {
    alert('onError!');
};

navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
Acceleration
유형설명타입비고
Xx 축 가속 값을 기록.Number값 : 0 ~ 1
Yy 축 가속 값을 기록.Number값 : 0 ~ 1
Zz 축 가속 값을 기록.Number값 : 0 ~ 1
timestamp측정한 milliseconds 단위의 시간.DOMTimeStampmilliseconds

참고 자료

원본 페이지 ID
egovframework:hyb:hrte:deviceapi:accelerometer
원본 수정일