Cordova Compass API提供错误代码3

时间:2015-03-14 19:05:00

标签: javascript android cordova compass

这个问题已在stackoverflow here上提出,但我没有找到任何答案,所以我再次提出这个问题。请有人能够回复此事吗?

我的代码如下:

<!DOCTYPE html>
<html>
 <head>
<title>Compass Example</title>

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">

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

function onDeviceReady() 
{
    navigator.compass.getCurrentHeading(onSuccess, onError);
}

function onSuccess(heading)
 {
    alert('Heading: ' + heading.magneticHeading);
}

function onError(compassError) 
{
    alert('Compass Error: ' + compassError.code);
}

</script>
  </head>
 <body>
<h1>Example</h1>
<p>getCurrentHeading</p>
 </body>
</html>

1 个答案:

答案 0 :(得分:1)

您的设备没有磁传感器,或者供应商未在操作系统中实现对它的支持。

查看面向设备插件的Android源代码,启动代码是这样编写的(为简洁起见而修改):

List<Sensor> list = this.sensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

// If found, then register as listener
if (list != null)
    this.setStatus(CompassListener.STARTING);

// If error, then set status to error
else
    this.setStatus(CompassListener.ERROR_FAILED_TO_START);

不确定为什么他们在那里编写了自己的错误代码(public static int ERROR_FAILED_TO_START = 3),但实际上他们应该按照文档中的定义报告COMPASS_NOT_SUPPORTED