2

我正在测试Android 上用于 PhoneGap 3.0.0的Tanelih 蓝牙插件的功能。该插件似乎运行良好;我可以使用链接到 JavaScript 函数的 HTML 按钮打开和关闭蓝牙,并获取 onSuccess/onError 回调以显示函数是否正常工作的消息。

但是,当我尝试查看是否启用window.bluetooth.isEnabled(isEnabledSuccess, isEnabledError);了蓝牙时,无论蓝牙是启用还是禁用,回调总是 isEnabledSuccess 。

这是我的一些 index.html:

<head>
<script type="text/javascript" charset="utf-8">

// Wait for device API libraries to load
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() 
{
   window.bluetooth.isEnabled(isEnabledSuccess, isEnabledError);
}

function isEnabledSuccess(isEnabled)
{
   var element = document.getElementById('status');
   element.innerHTML = "Enabled";
}

function isEnabledError(isEnabled)
{
   var element = document.getElementById('status');
   element.innerHTML = "Disabled";
}
</script>
</head>

<body>
  <p id="status"></p>
</body>

这是一些bluetooth.js(我没有接触过这个文件):

    Bluetooth.prototype.isEnabled = function(onSuccess, onError)
    {
    exec(onSuccess, onError, "Bluetooth", "isEnabled", []);
    }

这是一些 BluetoothPlugin.java (我没有接触过这个文件):

     /**
     * Is Bluetooth on.
     * 
     * @param args          Arguments given.
     * @param callbackCtx   Where to send results.
     */
    private void isEnabled(JSONArray args, CallbackContext callbackCtx)
    {
        try 
        {
            callbackCtx.sendPluginResult(new PluginResult(PluginResult.Status.OK, _bluetooth.isEnabled()));
        } 
        catch(Exception e) 
        {
            this.error(callbackCtx, e.getMessage(), BluetoothError.ERR_UNKNOWN);
        }
    }

有没有人有任何想法?

4

1 回答 1

1

只有在调用插件期间发生 Java 异常时才会调用错误函数(这不太可能)。成功函数返回一个布尔值,告诉您蓝牙是否启用。因此,请尝试这样的事情:

function onDeviceReady() 
{
   window.bluetooth.isEnabled(isEnabledSuccess, isEnabledError);
}

function isEnabledSuccess(isEnabled)
{
   var element = document.getElementById('status');
   if(isEnabled){
     element.innerHTML = "Enabled";
   }else{
     element.innerHTML = "Disabled";
   }
}

function isEnabledError(error)
{
   var element = document.getElementById('status');
   element.innerHTML = "Cannot determine Bluetooth status: " + error.message;
}
于 2013-10-26T08:37:38.283 回答