
框架使用的是 UNI-APP ,由于使用 uniapp 找不到非 BLE 蓝牙,于是使用了 Native.js 来实现,代码如下:
const main = plus.android.runtimeMainActivity(); const COntext= plus.android.importClass("android.content.Context"); const BManager = main.getSystemService(Context.BLUETOOTH_SERVICE); plus.android.importClass(BManager); const BAdapter = BManager.getAdapter(); console.log("BAdapter", BAdapter) plus.android.importClass(BAdapter); const lists = BAdapter.getBondedDevices(); console.log("lists", lists) plus.android.importClass(lists); // const resultDiv = document.getElementById('bluetooth_list'); const iterator = lists.iterator(); console.log("iterator", iterator) plus.android.importClass(iterator); while(iterator.hasNext()) { const d = iterator.next(); plus.android.importClass(d); this.deviceList.push({ name: d.getName(), deviceId: d.getAddress() }) } // 根据以上获取到的设备地址,尝试连接 const UUID = plus.android.importClass("java.util.UUID"); const uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); var device = BAdapter.getRemoteDevice("DC:0D:30:26:CC:2A"); plus.android.importClass(device); const bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid); plus.android.importClass(bluetoothSocket); if (!bluetoothSocket.isConnected()) { console.log('检测到设备未连接,尝试连接....'); bluetoothSocket.connect(); } console.log('设备已连接'); if (bluetoothSocket.isConnected()) { console.log('设备已连接'); // 以下没有继续执行 var outputStream = bluetoothSocket.getOutputStream(); plus.android.importClass(outputStream); var string = "打印测试\r\n"; var bytes = plus.android.invoke(string, 'getBytes', 'gbk'); outputStream.write(bytes); outputStream.flush(); device = null //这里关键 bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误 } 代码执行到“设别已连接”后就没有继续执行了,也没有报任何错误,对 plus.android.xx 相关 API 不熟悉,uniapp 官方文档也没有详细说明,请教各位彦祖指点迷津
uuid 是固定的,似乎所有的案例中都是这个 UUID ,暂时不知道怎么来的