基于 Native.js 实现蓝牙打印问题请教

2022-03-09 18:11:16 +08:00
 sonders

框架使用的是 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 ,暂时不知道怎么来的

510 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839201

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX