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















 
 
 
 
 
 
 