加速度计无法在phonegap中工作

时间:2014-12-30 14:46:30

标签: javascript android html cordova

美好的一天,我正在尝试使用Phonegap制作Android应用程序。我想每1秒更新一次值。出于某种原因,我没有得到任何价值。我使用Phonegap-2.9.0,我的设备是HTC Wildfire S,安卓版2.3.5。这是我的代码,

<head>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", loaded, false);

function loaded() {
 startWatch();
}

function startWatch() {

 var options = { frequency: 1000 };

 watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
}


function stopWatch() {
 if (watchID) {
    navigator.accelerometer.clearWatch(watchID);
    watchID = null;
 }
}

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 />';
}

function onError() {
 alert('onError!');
}
</script>
</head>

<body>
 <div id="accelerometer"></div>
</body>

我在这里做错了吗?你的帮助真的很明显。 TNX。

1 个答案:

答案 0 :(得分:0)

解决方案尝试此操作,您必须在函数onDeviceReady()范围内使用此方法watchAcceleration()才能正常工作 根据{{​​3}}

  

通过全局navigator.accelerometer对象进行访问。   虽然该对象附加到全局范围导航器,但在deviceready事件之后才可用。

在你的情况下loaded()onDeviceReady() 另一方面你没有功能init() 你只有

document.addEventListener("deviceready", loaded, false);

将您的第init()行放入功能document.addEventListener("deviceready", loaded, false); 然后<body onload="init()"> 所以我的意思是将值为init()的属性onload添加到代码底部的<body>标记