2011-12-20 43 views
1

这是我的代码:PhoneGap的加速度仅调用错误回调

function onDeviceReady() { 
    console.log("Device Ready"); 
    startWatch(); 

}; 

function startWatch() { 

    // Update acceleration every 5 seconds 
    var options = { frequency: 5000 }; 
    watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options); 
}; 



function onSuccess(acceleration){ 

    console.log('Acceleration X: ' + acceleration.x + 
     'Acceleration Y: ' + acceleration.y + 
     'Acceleration Z: ' + acceleration.z + 
     'Timestamp: '  + acceleration.timestamp); 
}; 

function onError(){ 
    console.log("Acceleration Error occured"); 
}; 

我测试了2个Android手机(三星Galaxy Nexus的GT-I9250,Android 4.0及华为的Ideos X3,安卓2.3.3),从我的控制台输出我知道都只调用错误回调,但为什么?

我在google上找不到这个原因,所以如果你有一个想法请帮助。

+0

所以我刚刚在我的Nexus One上用Android 2.3.6和PhoneGap 1.2试过了你的脚本,它工作的很好。也许你应该发布你的AndroidManifest.xml和任何其他相关的源代码。 – 2011-12-22 05:09:45

+0

我想碰到这个问题,请,因为我遇到了同样的问题。 – brain56 2014-04-03 01:45:56

回答

0

您可能会遇到计时问题。

你应该尝试成功地运行在我的HTC的Evo以下或发表您的整个应用程序:

<!DOCTYPE HTML> 
<html> 
    <head> 
    <meta name="viewport" content="width=320; user-scalable=no" /> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <title>PhoneGap</title> 
     <script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script> 
     <script type="text/javascript" charset="utf-8"> 


function onDeviceReady() { 
    console.log("Device Ready"); 
    startWatch(); 

}; 

function startWatch() { 

    // Update acceleration every 5 seconds 
    var options = { frequency: 5000 }; 
    watchID = navigator.accelerometer.watchAcceleration(onSuccess, accelerometerError, options); 
}; 



function onSuccess(acceleration){ 

    alert('Acceleration X: ' + acceleration.x + 
     'Acceleration Y: ' + acceleration.y + 
     'Acceleration Z: ' + acceleration.z + 
     'Timestamp: '  + acceleration.timestamp); 
}; 

function accelerometerError(){ 
    alert("Acceleration Error occured"); 
}; 

function init() { 
    document.addEventListener("deviceready", onDeviceReady, true); 
} 
</script> 

    </head> 
    <body onload="init();" id="stage" class="theme"> 

    </body> 
</html> 
+0

谢谢你,但仍然是同样的问题。 – dan 2011-12-21 10:35:13

+0

logcat中的任何有用消息? – 2011-12-21 15:54:09

0

难道是因为你传递了一个不存在于你的watchAccelerometer参考()调用?

您传递onError的,但你的处理程序的名称是accelerometerError

+0

那是我的错,我复制了错误的代码。我的源代码中的名字是正确的,我的错误。 – dan 2011-12-21 10:16:17

+0

我在我的问题中修复了它。 – dan 2011-12-21 10:37:59

0

这里是一个想法。我还没有测试过(我的移动开发机器在家中),但是在我看来,您可能需要告诉Android设备您想要在Android Manifest中使用加速度计。

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> 

在清单XML文件中是否有该设置?

+0

注意:我试过这个,在我的Nexus One上它可以使用或不使用此设置。 – 2011-12-22 05:12:49