iPhone은 어떤 주어진 점에서 가속 센서가 감지한 좌표 값을 주지 않는다.
특정 시간 간격으로 가속 센서를 감지해야 한다.
getCurrentAcceleration() 은 watchAcceletometer() 을 통해 마지막으로 감지된 좌표 값을 나타낸다.
iPhone에서는 가속 센서 감지 간격이 40 milliseconds 에서 1000 milliseconds 에서만 유효하게 적용된다.
만약 3초 간격으로 watchAcceleration()을 요청하게 되면, phoneGap을 통해 1초 간격으로 가속 센서의 좌표 값을 받아오지만, phoneGap은 3초 단위로 callback 함수를 요청하도록 자체 보정한다.
<plugin name="Accelerometer" value="org.apache.cordova.AccelListener" />
<key>Plugins</key>
<dict>
<key>Accelerometer</key>
<string>CDVAccelerometer</string>
</dict>
navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
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);
특정 시간 간격으로 가속 센서가 감지한 좌표 값 (x, y, z) 을 받아온다.
acceleratorOptions Object 내의 frequency 파라미터로 정한 특정 시간 간격으로 accelerometerSuccess을 호출한다.
함수 실행을 통해 얻은 watch ID를 가지고 accelerometer.clearWatch 함수로 가속 센서 감지를 중단할 수 있다.
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
accelerometerError,
[accelerometerOptions]);
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);
navigator.accelerometer.clearWatch(watchID);
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
...
navigator.accelerometer.clearWatch(watchID);
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function() {
// Handle the error
}
유형 | 설명 | 타입 | 비고 |
frequency | 특정 시간 간격으로 가속 센서를 감지한다. | Number | 기본값 : 10000 |
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);
유형 | 설명 | 타입 | 비고 |
X | x 축 가속 값을 기록. | Number | 값 : 0 ~ 1 |
Y | y 축 가속 값을 기록. | Number | 값 : 0 ~ 1 |
Z | z 축 가속 값을 기록. | Number | 값 : 0 ~ 1 |
timestamp | 측정한 milliseconds 단위의 시간. | DOMTimeStamp | milliseconds |