我正在尝试编写一个移动跨平台应用程序,该应用程序使用设备的蓝牙硬件扫描该区域,并显示该区域可连接的蓝牙设备列表。
所以很自然我用google找到了一种方法,找到并安装了这个插件: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代码中插入在该区域找到的设备列表,我希望用户能够通过单击设备连接到设备,但每次我试图运行代码时,设备和设备的变量都是未定义的。
这一点也不奇怪,因为他们似乎不知从何而来,但在插件的文档中,它说:
查找未配对的功能查找未配对的蓝牙设备。使用类似于list的对象列表调用success回调,如果找不到未配对的设备,则使用空列表调用。
他们给出了一些设备列表的例子,包括它们的名称、类、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');
  }

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

最佳答案

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

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


bluetoothSerial.discoverUnpaired();

关于javascript - Cordova BluetoothSerial插件:discoverUnpaired方法不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29670997/

10-11 11:45