phoneGap可以通过对象accelerometer得到手机的加速度, accelerometer对象可以直接使用,也可以通过全写"navigator.accelermometer"得到。
加速度是矢量,accelerometer得到的加速度是把垂直手机方向当z轴, 手机平面上分x与y轴, 如下图:
navigator.accelerometer.getCurrentAcceleration(onSuccess,onError);
参数:onSuccess: 得到加速度成功后的回调函数,再通过该回调用函数的参数可以得到加速度的三个分量(x,y,z)值,也能得到时间
参数: 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>
运行结果如图:
点击这里下载上面完整项目例示
在固定的时间间隔周期性
获取沿x、y和z轴的加速度。
复制
(1)onSuccess和onError与函数getCurrentAcceleration中的参数意思相同
(2)options 定制检索加速度计的可选参数 {frequency:多少毫秒获取一次Acceleration。(数字类型)(默认值:10000)}
例:
<!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>
运行结果如下图:
点击这里下载上面完整项目例示