PhoneGap中文网

标题: PhoneGap Accelerometer Api 采集设备在x、y、z方向上的动作 [打印本页]

作者: admin    时间: 2013-6-28 21:49
标题: PhoneGap Accelerometer Api 采集设备在x、y、z方向上的动作
“采集设备在x、y、z方向上的动作。

说明:
加速计是检测设备在当前方向上所做相对运动变化(增、减量)的运动传感器。加速计可以检测沿X、Y和Z轴的三维运动。
加速度数据通过accelerometerSuccess回调函数返回。

方法:

    accelerometer.getCurrentAcceleration
    accelerometer.watchAcceleration
    accelerometer.clearWatch


参数:

    accelerometerSuccess
    accelerometerError
    accelerometerOptions


对象(只读):

    Acceleration


accelerometer.getCurrentAcceleration

返回当前沿x、y和z方向的加速度。
  1.    navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);  
复制代码
支持的平台:

    Android
    BlackBerry WebWorks (OS 5.0或更高版本)
    iPhone


简单的范例:

  1.         function onSuccess(acceleration) {  
  2.             alert('Acceleration X: ' + acceleration.x + '\n' +  
  3.             'Acceleration Y: ' + acceleration.y + '\n' +  
  4.             'Acceleration Z: ' + acceleration.z + '\n' +  
  5.             'Timestamp: '      + acceleration.timestamp + '\n');  
  6.         }  
  7.             
  8.         function onError() {  
  9.             alert('onError!');  
  10.         }  
  11.             
  12.         navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
复制代码
完整的范例:
  1. <!DOCTYPE html>  
  2.         <html>  
  3.         <head>  
  4.         <title>Acceleration Example</title>  
  5.          
  6.         <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.         <script type="text/javascript" charset="utf-8">  
  8.          
  9.             // 等待加载PhoneGap     
  10.             document.addEventListener("deviceready", onDeviceReady, false);   
  11.          
  12.             // PhoneGap加载完毕  
  13.             function onDeviceReady() {  
  14.                 navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);  
  15.             }  
  16.          
  17.             // onSuccess: 返回当前加速度数据的快照  
  18.             function onSuccess(acceleration) {  
  19.                 alert('Acceleration X: ' + acceleration.x + '\n' +  
  20.                     'Acceleration Y: ' + acceleration.y + '\n' +  
  21.                     'Acceleration Z: ' + acceleration.z + '\n' +  
  22.                     'Timestamp: '      + acceleration.timestamp + '\n');  
  23.             }  
  24.          
  25.             // onError: 返回加速度数据失败  
  26.             function onError() {  
  27.                 alert('onError!');  
  28.             }  
  29.             
  30.         </script>  
  31.          
  32.         </head>  
  33.         <body>  
  34.             <h1>Example</h1>  
  35.             <p>getCurrentAcceleration</p>  
  36.         </body>  
  37.         </html>  
复制代码
iPhone的特异情况:

    iPhone没有获取在任何给定点当前加速度数据的概念。
    你必须通过给定时间间隔查看加速度并获得数据。
    因此,getCurrentAcceleration函数会返回从phoneGap watchAccelerometer调用开始后的最近一个返回值

accelerometer.watchAcceleration

在固定的时间间隔获取沿x、y和z轴的加速度。
  1.         var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,  
  2.                                     accelerometerError,  
  3.                                     [accelerometerOptions]);  
复制代码
说明:
加速计是检测设备在当前方向上所做相对运动变化(增、减量)的动作传感器。加速计可以检测沿X、Y和Z轴的三维运动。
accelerometer.watchAcceleration每隔固定时间就获取一次设备的当前加速度。每次取得加速度后,accelerometerSuccess回调函数会被执行。通过acceleratorOptions对象的frequency参数可以设定以毫秒为单位的时间间隔。
返回的watch id是加速度计监视周期的引用,可以通过accelerometer.clearWatch调用该watch ID以停止对加速度计的监视。

支持的平台:

    Android
    BlackBerry WebWorks (OS 5.0或更高版本)
    iPhone

简单的范例:
  1.     function onSuccess(acceleration) {  
  2.             alert('Acceleration X: ' + acceleration.x + '\n' +  
  3.             'Acceleration Y: ' + acceleration.y + '\n' +  
  4.             'Acceleration Z: ' + acceleration.z + '\n' +  
  5.             'Timestamp: '      + acceleration.timestamp + '\n');  
  6.         }  
  7.             
  8.         function onError() {  
  9.             alert('onError!');  
  10.         }  
  11.             
  12.         var options = { frequency: 3000 };  // 每隔3秒更新一次  
  13.             
  14.         var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);  
复制代码
完整的范例:

  1.         <!DOCTYPE html>  
  2.         <html>  
  3.         <head>  
  4.         <title>Acceleration Example</title>  
  5.             
  6.         <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.         <script type="text/javascript" charset="utf-8">  
  8.          
  9.             // watch id 是当前“watchAcceleration”的引用  
  10.             var watchID = null;  
  11.             
  12.             // 等待加载PhoneGap  
  13.             document.addEventListener("deviceready", onDeviceReady, false);  
  14.             
  15.             // PhoneGap加载完毕  
  16.             function onDeviceReady() {  
  17.                 startWatch();  
  18.             }  
  19.             
  20.             // 开始监视加速度  
  21.             function startWatch() {  
  22.             
  23.             // 每隔3秒钟更新一次加速度数据  
  24.             var options = { frequency: 3000 };  
  25.             
  26.             watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);  
  27.             }  
  28.             
  29.             // 停止监视加速度  
  30.             function stopWatch() {  
  31.                 if (watchID) {  
  32.                     navigator.accelerometer.clearWatch(watchID);  
  33.                     watchID = null;  
  34.                 }  
  35.             }  
  36.             
  37.             // onSuccess: 获取当前加速度数据的快照  
  38.             function onSuccess(acceleration) {  
  39.                 var element = document.getElementById('accelerometer');  
  40.                 element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +  
  41.                                     'Acceleration Y: ' + acceleration.y + '<br />' +  
  42.                                     'Acceleration Z: ' + acceleration.z + '<br />' +  
  43.                                     'Timestamp: '      + acceleration.timestamp + '<br />';  
  44.             }  
  45.             
  46.             // onError: 获取加速度失败  
  47.             function onError() {  
  48.                 alert('onError!');  
  49.             }  
  50.             
  51.         </script>  
  52.          
  53.         </head>  
  54.         <body>  
  55.             <div id="accelerometer">Waiting for accelerometer...</div>  
  56.         </body>  
  57.         </html>  
复制代码
iPhone的特异情况:

    在请求的时间间隔,PhoneGap将调用success回调指向的函数,并传递加速度计数据。
    不过,PhoneGap将对设备的请求间隔时间限制为最小40ms,最大1000ms。
    例如,如果你设定每隔3秒(3000毫秒)请求一次,PhoneGap仍然每隔1秒请求一次设备,但是每隔3秒才调用一次success回调函数。


accelerometer.clearWatch

停止watch ID参数指向的加速度监视。
  1.     navigator.accelerometer.clearWatch(watchID);  
复制代码
watchID:由accelerometer.watchAcceleration返回的引用标识ID。
支持的平台:

    Android
    BlackBerry WebWorks (OS 5.0或更高版本)
    iPhone


简单的范例:
  1.   var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);  
  2.          
  3.         // ... 后续处理 ...  
  4.          
  5.         navigator.accelerometer.clearWatch(watchID);  
复制代码
完整的范例:
  1. <!DOCTYPE html>  
  2.         <html>  
  3.         <head>  
  4.         <title>Acceleration Example</title>  
  5.          
  6.         <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.         <script type="text/javascript" charset="utf-8">  
  8.          
  9.             // watch id 是当前“watchAcceleration”的引用  
  10.             var watchID = null;  
  11.             
  12.             // 等待加载PhoneGap  
  13.             document.addEventListener("deviceready", onDeviceReady, false);  
  14.             
  15.             // PhoneGap加载完毕  
  16.             function onDeviceReady() {  
  17.                 startWatch();  
  18.             }  
  19.             
  20.             // 开始监视加速度  
  21.             function startWatch() {  
  22.             
  23.                 // 每隔3秒钟更新一次加速度数据  
  24.                 var options = { frequency: 3000 };  
  25.                 watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);  
  26.             }  
  27.             
  28.             // 停止监视加速度  
  29.             function stopWatch() {  
  30.                 if (watchID) {  
  31.                     navigator.accelerometer.clearWatch(watchID);  
  32.                     watchID = null;  
  33.                 }  
  34.             }  
  35.             
  36.             // onSuccess: 获取当前加速度数据的快照  
  37.             function onSuccess(acceleration) {  
  38.                 var element = document.getElementById('accelerometer');  
  39.                 element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +  
  40.                                     'Acceleration Y: ' + acceleration.y + '<br />' +  
  41.                                     'Acceleration Z: ' + acceleration.z + '<br />' +  
  42.                                     'Timestamp: '      + acceleration.timestamp + '<br />';  
  43.             }  
  44.             
  45.             // onError: 获取加速度失败  
  46.             function onError() {  
  47.                 alert('onError!');  
  48.             }  
  49.             
  50.         </script>  
  51.         </head>  
  52.         <body>  
  53.             <div id="accelerometer">Waiting for accelerometer...</div>  
  54.             <button>Stop Watching</button>  
  55.         </body>  
  56.         </html>  
复制代码
Acceleration
包含特定时间点采集到的加速计数据。

属性:

    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


简单的范例:
  1. function onSuccess(acceleration) {  
  2.             alert('Acceleration X: ' + acceleration.x + '\n' +  
  3.             'Acceleration Y: ' + acceleration.y + '\n' +  
  4.             'Acceleration Z: ' + acceleration.z + '\n' +  
  5.             'Timestamp: '      + acceleration.timestamp + '\n');  
  6.         }  
  7.             
  8.         function onError() {  
  9.             alert('onError!');  
  10.         }  
  11.             
  12.         navigator.accelerometer.getCurrentAcceleration(onSuccess,onError);  
复制代码
完整的范例:
  1. <!DOCTYPE html>  
  2.         <html>  
  3.         <head>  
  4.         <title>Acceleration Example</title>  
  5.             
  6.         <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7.         <script type="text/javascript" charset="utf-8">  
  8.             
  9.             // 等待加载PhoneGap  
  10.             document.addEventListener("deviceready", onDeviceReady, false);  
  11.             
  12.             // PhoneGap加载完毕  
  13.             function onDeviceReady() {  
  14.                 navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);  
  15.             }  
  16.             
  17.             // onSuccess: 获得加速度数据的快照  
  18.             function onSuccess(acceleration) {  
  19.                 alert('Acceleration X: ' + acceleration.x + '\n' +  
  20.                 'Acceleration Y: ' + acceleration.y + '\n' +  
  21.                 'Acceleration Z: ' + acceleration.z + '\n' +  
  22.                 'Timestamp: '      + acceleration.timestamp + '\n');  
  23.             }  
  24.             
  25.             // onError: 获取加速度失败  
  26.             function onError() {  
  27.                 alert('onError!');  
  28.             }  
  29.             
  30.         </script>  
  31.          
  32.         </head>  
  33.         <body>  
  34.             <h1>Example</h1>  
  35.             <p>getCurrentAcceleration</p>  
  36.         </body>  
  37.         </html>  
复制代码
accelerometerSuccess
提供加速度信息的onSuccess回调函数。
  1.         function(acceleration) {  
  2.            // 进一步处理  
  3.         }  
复制代码
参数:

  1.     acceleration: 在某一时刻的加速度(Acacceleration:在某一时刻的加速度。(Acceleration对象类型)
  2.             function onSuccess(acceleration) {  
  3.                 alert('Acceleration X: ' + acceleration.x + '\n' +  
  4.                 'Acceleration Y: ' + acceleration.y + '\n' +  
  5.                 'Acceleration Z: ' + acceleration.z + '\n' +  
  6.                 'Timestamp: '      + acceleration.timestamp + '\n');  
  7.             }  
  8.    
复制代码
accelerometerError
    加速度方法的onError回调函数。
  1.         function() {  
  2.            // 错误处理  
  3.         }  
复制代码
accelerometerOptions
定制检索加速度计的可选参数。

选项:

    frequency:多少毫秒获取一次Acceleration。(数字类型)(默认值:10000)

作者: 一心相上    时间: 2013-9-22 16:00
百度有个API 详解 150多页
作者: balmon2009    时间: 2015-5-13 10:35
好贴顶起 希望帮助更多人
作者: omwomw    时间: 2015-5-13 10:43
人不错,学习学习 感觉phonegap+html应该是趋势




欢迎光临 PhoneGap中文网 (http://bbs.phonegap100.com/) Powered by Discuz! X3.2