V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sonders
V2EX  ›  问与答

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

  •  
  •   sonders · 2022 年 3 月 9 日 · 773 次点击
    这是一个创建于 1494 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   848 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:16 · PVG 05:16 · LAX 14:16 · JFK 17:16
    ♥ Do have faith in what you're doing.