2013-10-25 65 views
2

我正在測試Android32上的PhoneGap 3.0.0的Tanelih's Bluetooth Plugin的功能。 該插件似乎工作得很好;我可以使用鏈接到JavaScript函數的HTML按鈕打開和關閉藍牙,並在函數運行或不運行時獲取onSuccess/onError回調來顯示消息。PhoneGap 3.0.0 Android上的Tanelih藍牙插件isEnabled 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); 
     } 
    } 

有沒有人有任何想法?

回答

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; 
}