Cordova Compass API 给出错误代码 3

Cordova Compass API is giving error code 3

这个问题已经在 Whosebug 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>

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

查看设备方向插件的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