我正在尝试访问我的Cordova [3.3.1-0.1.2] Android应用中的navigator.accelerometer,并且在Android [4.0.3]模拟器中运行时,navigator.accelerometer未定义。
我在设置Cordova应用时遵循了本教程:http://www.techariv.in/2013/08/creating-android-hello-cordova.html
我在<widget>
内的www / config.xml中添加了以下内容:
<plugin name="Accelerometer" value="org.apache.cordova.AccelListener" />
我也试过
<plugin name="Accelerometer" value="CDVAccelerometer" />
此外,我在www / js / index.js中有以下内容(它确实加载了执行):
onDeviceReady: function() {
app.receivedEvent('deviceready');
alert(navigator.accelerometer);
navigator.accelerometer.getCurrentAcceleration(function() {
alert('success');
}, function() {
alert('fail');
});
},
当应用程序运行时,我会收到一条简单说“未定义”的警报。无法调用getCurrentAcceleration()回调。
请注意,onDeviceReady()是通过
调用的document.addEventListener('deviceready', this.onDeviceReady, false)
(这是标准的“Hello World”应用程序,除了添加警报和加速度计回调之外没有任何修改。
答案 0 :(得分:5)
向config.xml添加插件记录不足以将插件添加到cordova应用程序中。应安装一些本机代码并通过cordova或phonegap cli链接到导航器。
这是guide。
参见访问功能部分。
您可能会注意到,cordova cli将为您处理config.xml的修改。
无论如何,我建议你使用这个漂亮的grunt plugin。它可以通过PluginID或url轻松管理phonegap插件。您可以找到针对此类案例here和更多插件here
的插件的信息答案 1 :(得分:1)
这就是我在Android上访问加速计的方法。
安装设备动作插件cordova plugin add org.apache.cordova.device-motion
然后在onDeviceReady回调中:
window.addEventListener("devicemotion", deviceMotionUpdate, true);
function deviceMotionUpdate(e){
console.log("x: ", e.accelerationIncludingGravity.x);
console.log("y: ", e.accelerationIncludingGravity.y);
console.log("z: ", e.accelerationIncludingGravity.z);
}
如果您没有远程调试设置,您可能希望将console.logs更改为警报。