2015-04-16 59 views
1

我試圖編碼移動跨平臺應用程序,該應用程序使用設備的藍牙硬件來掃描區域並顯示該區域中可用於連接的藍牙設備列表。Cordova BluetoothSerial插件:discoverUnpaired方法不起作用

因此,我自然使用谷歌找到一種方法來做到這一點,發現並安裝了這個插件:BluethoothSerial使用這種方法:discoverUnpaired這似乎是完成我想做的事情的完美工具。

所以使用一些代碼,他們給了作爲一個例子:

bluetoothSerial.discoverUnpaired(function(devices) { 
    devices.forEach(function(device) { 
     console.log(device.id); 
    }) 
}, failure); 

我結束了與此:

function reshButt() { 
alert('reshButt'); 
bluetoothSerial.discoverUnpaired(
    function(devices) { 
     var currentNode; 
     devices.forEach(
      function(device){ 
       currentNode = document.createElement('div'); 
       currentNode.id = device.id; 
       document.getElementById(device.id).innerHTML = '<div id="'+device.name+'" onclick="bluetoothSerial.connect('+device.address+', alert("Connecting to '+device.name+'"), alert("Impossible to connect to '+device.name+'"));">'+device.name+'</div></br>'; 
       document.getElementById("devices_list").appendChild(currentNode); 
      } 
     ); 
    } 
); 

}

這是醜陋的,我知道。 但它不起作用,我想在應用程序的html代碼中插入在該區域中找到的設備列表,並且我希望用戶能夠通過單擊連接來連接設備,但每次我嘗試運行代碼變量設備設備未定義。

功能discoverUnpaired發現未配對的藍牙設備: 這樣的,因爲他們似乎走出無處但它說,該插件的文件中並沒有讓我感到吃驚。成功回調是通過與列表相似的對象列表來調用的,如果沒有找到未配對的設備,則返回空列表。

,他們給他們的名字,班級,MAC地址發現的設備列表中的一些例子,等

所以我還挺希望你能幫助我在這裏是index.html,然後index.js的項目。

<!DOCTYPE html> 

<head> 
    <meta charset="utf-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="msapplication-tap-highlight" content="no" /> 
    <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 --> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
    <link rel="stylesheet" type="text/css" href="css/style.css" /> 
    <title>Bluetooth transmission</title> 
</head> 

<body> 
    <center> 
     <h1>Bluetooth transmission</h1> 

     <button id="button-research" onclick="reshButt()">Research</button> 

     <h2>Devices detected:</h2> 

     <div id="devices_list"> 
     </div> 

     <p>Click on the device you want to connect to.</p> 

     <script type="text/javascript"></script> 
     <script type="text/javascript" src="js/index.js"></script> 
     <script type="text/javascript" src="cordova.js"></script> 
    </center> 
</body> 

document.addEventListener('deviceready', onDeviceReady, onError); 

function onDeviceReady() { 
    alert('deviceReady'); 
    bluetoothSerial.enable(); 
} 


//_____BlueTooth_____ 
function reshButt() { 
    alert('deviceReady'); 
    bluetoothSerial.discoverUnpaired(
     function(devices) { 
      var currentNode; 
      devices.forEach(
       function(device){ 
        currentNode = document.createElement('div'); 
        currentNode.id = device.id; 
        document.getElementById(device.id).innerHTML = '<div id="'+device.name+'" onclick="bluetoothSerial.connect('+device.address+', alert("Connecting to '+device.name+'"), alert("Impossible to connect to '+device.name+'"));">'+device.name+'</div></br>'; 
      document.getElementById("devices_list").appendChild(currentNode); 
       } 
      ); 
     } 
    ); 
    } 
    function onError() { 
     alert('Error while looking for BlueTooth devices'); 
    } 

對不起壞壓痕,堆棧溢出有點毀了這一切。 謝謝你們!

+0

你找到這個問題的答案?我有問題,我很絕望 –

回答

0

你需要調用bluetoothSerial.setDeviceDiscoveredListenerbluetoothSerial.discoverUnpaired。當discoverUnpaired開始時,調用如果已設置設備發現聽衆。

例子:

bluetoothSerial.setDeviceDiscoveredListener(function (device) { 
         console.log('Found: ' + device.name); 
}); 


bluetoothSerial.discoverUnpaired();