我正在尝试编写一个移动跨平台应用程序,该应用程序使用设备的蓝牙硬件扫描该区域,并显示该区域可连接的蓝牙设备列表。
所以很自然我用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/