无法访问Cordova Android应用中的加速度计

时间:2014-01-04 21:18:18

标签: javascript android cordova

我正在尝试访问我的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”应用程序,除了添加警报和加速度计回调之外没有任何修改。

2 个答案:

答案 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更改为警报。