PhoneGap API介紹:Accelerometer
方法:
accelerometer.getCurrentAcceleration
accelerometer.watchAcceleration
參數:
對象(只讀):
accelerometer.getCurrentAcceleration
返回當前沿x、y和z方向的加速度。
- navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
說明:
加速計是檢測設備在當前方向上所做相對運動變化(增、減量)的運動傳感器。加速計可以檢測沿X、Y和Z軸的三維運動。
加速度數據通過accelerometerSuccess回調函數返回。
支持的平臺:
Android
BlackBerry WebWorks (OS 5.0或更高版本)
iPhone
簡單的范例:
- 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);
完整的范例:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Acceleration Example</title>
- <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
- <script type="text/javascript" charset="utf-8">
- // 等待加載PhoneGap
- document.addEventListener("deviceready", onDeviceReady, false);
- // PhoneGap加載完畢
- function onDeviceReady() {
- navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
- }
- // onSuccess: 返回當前加速度數據的快照
- function onSuccess(acceleration) {
- alert('Acceleration X: ' + acceleration.x + '\n' +
- 'Acceleration Y: ' + acceleration.y + '\n' +
- 'Acceleration Z: ' + acceleration.z + '\n' +
- 'Timestamp: ' + acceleration.timestamp + '\n');
- }
- // onError: 返回加速度數據失敗
- function onError() {
- alert('onError!');
- }
- </script>
- </head>
- <body>
- <h1>Example</h1>
- <p>getCurrentAcceleration</p>
- </body>
- </html>
iPhone的特異情況:
iPhone沒有獲取在任何給定點當前加速度數據的概念。
你必須通過給定時間間隔查看加速度并獲得數據。
因此,getCurrentAcceleration函數會返回從phoneGap watchAccelerometer調用開始后的最近一個返回值。
accelerometer.watchAcceleration
在固定的時間間隔獲取沿x、y和z軸的加速度。
- var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
- accelerometerError,
- [accelerometerOptions]);
說明:
加速計是檢測設備在當前方向上所做相對運動變化(增、減量)的動作傳感器。加速計可以檢測沿X、Y和Z軸的三維運動。
accelerometer.watchAcceleration每隔固定時間就獲取一次設備的當前加速度。每次取得加速度后,accelerometerSuccess回調函數會被執行。通過acceleratorOptions對象的frequency參數可以設定以毫秒為單位的時間間隔。
返回的watch id是加速度計監視周期的引用,可以通過accelerometer.clearWatch調用該watch ID以停止對加速度計的監視。
支持的平臺:
Android
BlackBerry WebWorks (OS 5.0或更高版本)
iPhone
簡單的范例:
- 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 }; // 每隔3秒更新一次
- var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
完整的范例:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Acceleration Example</title>
- <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
- <script type="text/javascript" charset="utf-8">
- // watch id 是當前“watchAcceleration”的引用
- var watchID = null;
- // 等待加載PhoneGap
- document.addEventListener("deviceready", onDeviceReady, false);
- // PhoneGap加載完畢
- 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(acceleration) {
- var element = document.getElementById('accelerometer');
- element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
- 'Acceleration Y: ' + acceleration.y + '<br />' +
- 'Acceleration Z: ' + acceleration.z + '<br />' +
- 'Timestamp: ' + acceleration.timestamp + '<br />';
- }
- // onError: 獲取加速度失敗
- function onError() {
- alert('onError!');
- }
- </script>
- </head>
- <body>
- <div id="accelerometer">Waiting for accelerometer...</div>
- </body>
- </html>
iPhone的特異情況:
在請求的時間間隔,PhoneGap將調用success回調指向的函數,并傳遞加速度計數據。
不過,PhoneGap將對設備的請求間隔時間限制為最小40ms,***1000ms。
例如,如果你設定每隔3秒(3000毫秒)請求一次,PhoneGap仍然每隔1秒請求一次設備,但是每隔3秒才調用一次success回調函數。
停止watch ID參數指向的加速度監視。
- navigator.accelerometer.clearWatch(watchID);
watchID:由accelerometer.watchAcceleration返回的引用標識ID。
支持的平臺:
Android
BlackBerry WebWorks (OS 5.0或更高版本)
iPhone
簡單的范例:
- var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
- // ... 后續處理 ...
- navigator.accelerometer.clearWatch(watchID);
完整的范例:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Acceleration Example</title>
- <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
- <script type="text/javascript" charset="utf-8">
- // watch id 是當前“watchAcceleration”的引用
- var watchID = null;
- // 等待加載PhoneGap
- document.addEventListener("deviceready", onDeviceReady, false);
- // PhoneGap加載完畢
- 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(acceleration) {
- var element = document.getElementById('accelerometer');
- element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
- 'Acceleration Y: ' + acceleration.y + '<br />' +
- 'Acceleration Z: ' + acceleration.z + '<br />' +
- 'Timestamp: ' + acceleration.timestamp + '<br />';
- }
- // onError: 獲取加速度失敗
- function onError() {
- alert('onError!');
- }
- </script>
- </head>
- <body>
- <div id="accelerometer">Waiting for accelerometer...</div>
- <button onclick="stopWatch();">Stop Watching</button>
- </body>
- </html>
包含特定時間點采集到的加速計數據。
屬性:
x:在X軸的運動量,[0, 1]范圍(數字類型)
y:在Y軸的運動量,[0, 1]范圍(數字類型)
z:在Z軸的運動量,[0, 1]范圍(數字類型)
timestamp:以毫秒為單位的創建時間戳。(DOMTimeStamp類型)
說明:
這個對象是由phoneGap創建和填充,并由Acce這個對象是由PhoneGap創建和填充,并由Accelerometer的方法返回。
支持的平臺:
Android
BlackBerry WebWorks (OS 5.0或更高版本)
iPhone
簡單的范例:
- 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);
完整的范例:
- <!DOCTYPE html>
- <html>
- <head>
- <title>Acceleration Example</title>
- <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
- <script type="text/javascript" charset="utf-8">
- // 等待加載PhoneGap
- document.addEventListener("deviceready", onDeviceReady, false);
- // PhoneGap加載完畢
- function onDeviceReady() {
- navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
- }
- // onSuccess: 獲得加速度數據的快照
- function onSuccess(acceleration) {
- alert('Acceleration X: ' + acceleration.x + '\n' +
- 'Acceleration Y: ' + acceleration.y + '\n' +
- 'Acceleration Z: ' + acceleration.z + '\n' +
- 'Timestamp: ' + acceleration.timestamp + '\n');
- }
- // onError: 獲取加速度失敗
- function onError() {
- alert('onError!');
- }
- </script>
- </head>
- <body>
- <h1>Example</h1>
- <p>getCurrentAcceleration</p>
- </body>
- </html>
提供加速度信息的onSuccess回調函數。
- function(acceleration) {
- // 進一步處理
- }
參數:
acceleration: 在某一時刻的加速度(Acacceleration:在某一時刻的加速度。(Acceleration對象類型)
- function onSuccess(acceleration) {
- alert('Acceleration X: ' + acceleration.x + '\n' +
- 'Acceleration Y: ' + acceleration.y + '\n' +
- 'Acceleration Z: ' + acceleration.z + '\n' +
- 'Timestamp: ' + acceleration.timestamp + '\n');
- }
加速度方法的onError回調函數。
- function() {
- // 錯誤處理
- }
定制檢索加速度計的可選參數。
選項:
frequency:多少毫秒獲取一次Acceleration。(數字類型)(默認值:10000)