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/config.xml
    <feature name="Accelerometer">
        <param name="ios-package" value="CDVAccelerometer"/>
    </feature>

관련 함수

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

  • 감지할 가속 센서의 옵션을 설정한다.
유형설명타입비고
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);
유형설명타입비고
Xx 축 가속 값을 기록.Number값 : 0 ~ 1
Yy 축 가속 값을 기록.Number값 : 0 ~ 1
Zz 축 가속 값을 기록.Number값 : 0 ~ 1
timestamp측정한 milliseconds 단위의 시간.DOMTimeStampmilliseconds

참고 자료

 
egovframework/hyb3.5/hrte/deviceapi/accelerometer.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki