Cordova BluetoothSerial插件:discoverUnpaired方法不起作用

时间:2015-04-16 09:45:03

标签: javascript html cordova bluetooth cordova-plugins

我尝试编写移动跨平台应用程序的代码,该应用程序使用设备的蓝牙硬件扫描该区域并显示该区域中可用于连接的蓝牙设备列表。

很自然地,我使用谷歌找到了一种方法,找到并安装了这个插件: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代码中插入该区域中找到的设备列表,我希望用户能够通过点击它连接到设备,但每次都我尝试运行代码,变量 devices device 未定义。 它有点让我感到惊讶,因为它们似乎无处可去,但在插件的文档中它说:

  

功能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');
  }

抱歉压痕不好,堆栈溢出有点毁了它。 谢谢你们!

1 个答案:

答案 0 :(得分:0)

您需要在 bluetoothSerial.discoverUnpaired 之前调用 bluetoothSerial.setDeviceDiscoveredListener 。当discoverUnpaired启动时,如果已设置,则调用设备发现的侦听器。

示例:

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


bluetoothSerial.discoverUnpaired();