uniApp连接传统蓝牙的斑马打印机打印
1、1. 页面初始化,获取位置,打开蓝牙连接(必须打开定位)letsystem=uni.getSystemInfoSync();//获取系统信息if(system.p造婷用痃latform==='android'){//判断平台 varthat=this varcontext=plus.android.importClass("android.content.Context"); varlocationManager=plus.android.importClass("android.location.LocationManager"); varmain=plus.android.runtimeMainActivity(); varmainSvr=main.getSystemService(context.LOCATION_SERVICE); // 定位检测 if(!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)){ uni.showModal({ title:'提示', content:'请打开定位服务功能', showCancel:false,//不显示取消按钮 success(){ if(!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)){ varIntent=plus.android.importClass('android.content.Intent'); varSettings=plus.android.importClass('android.provider.Settings'); varintent=newIntent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); main.startActivity(intent);//打开系统设置GPS服务页面 }else{ console.log('GPS功能已开启'); } } }); returnfalse }else{ console.log('GPS功能已开启'); that.searchDevices() returntrue }}
2、2. 毛殴陀灾搜索蓝牙//注册类varthat=thisthat.list1=[] //未配对that.list2=[] // 已配对that.main=plus.android.runtimeMainActivity();varIntentFilter=plus.android.importClass('android.content.IntentFilter');varBluetoothAdapter=plus.android.importClass("android.bluetooth.BluetoothAdapter");varBluetoothDevice=plus.android.importClass("android.bluetooth.BluetoothDevice");varBAdapter=BluetoothAdapter.getDefaultAdapter();uni.showLoading({ title:'开始搜索设备'})varfilter=newIntentFilter();varbdevice=newBluetoothDevice();BAdapter.startDiscovery();//开启搜索varreceiver;receiver=plus.android.implements('io.dcloud.android.content.BroadcastReceiver',{onReceive:function(context,intent){//实现onReceiver回调函数plus.android.importClass(intent);//通过intent实例引入intent类,方便以后的‘.’操作if(intent.getAction()=="android.bluetooth.adapter.action.DISCOVERY_FINISHED"){ that.main.unregisterReceiver(receiver);//取消监听 console.log("搜索结束") uni.hideLoading()}else{ if(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getBondState()===10){ that.list1.push({ name:intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getName(), address:intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getAddress() }) }elseif(intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getBondState()===12){ that.list2.push({ name:intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getName(), address:intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE).getAddress() }) } }}});filter.addAction(bdevice.ACTION_FOUND);filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);filter.addAction(BAdapter.ACTION_STATE_CHANGED);that.main.registerReceiver(receiver,filter);//注册监听
3、3. 蓝牙连接// mac_address为获取到蓝牙数据中的address字段if(!mac_address){ mui.toast('请选择蓝牙打印机'); return;}this.main=plus.android.runtimeMainActivity();BluetoothAdapter=plus.android.importClass("android.bluetooth.BluetoothAdapter");varUUID=plus.android.importClass("java.util.UUID");uuid=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");BAdapter=BluetoothAdapter.getDefaultAdapter();device=BAdapter.getRemoteDevice(mac_address);plus.android.importClass(device);this.bluetoothSocket=device.createInsecureRfcommSocketToServiceRecord(uuid);plus.android.importClass(this.bluetoothSocket); if(!this.bluetoothSocket.isConnected()){uni.showLoading({title:'检测到设备未连接,尝试连接....'})this.bluetoothSocket.connect(); }uni.hideLoading()console.log('设备已连接')
4、4. 打印坡纠课柩if(this.bluetoothSocket.isConnected()){ uni.showLoadi荏鱿胫协ng({ title:'打印中,请稍后!' }) varoutputStream=this.bluetoothSocket.getOutputStream(); plus.android.importClass(outputStream); varstring="!02002004181\r\n"+"LABEL\r\n"+"PW575\r\n"+"TONE0\r\n"+"SPEED2\r\n"+"ON-FEEDIGNORE\r\n"+"NO-PACE\r\n"+"BAR-SENSE\r\n"+"BQR1305M2U5\r\n"+"MA,e9b98ae6a1a5e4bb99c2b7e7baa4e4ba91e5bc84e5b7a7e5ae8be7a7a6e8a782e7baa4e4ba91e5bc84e5b7a7efbc8ce9a39ee6989fe4bca0e681a8efbc8ce993b6e6b189e8bfa2e8bfa2e69a97e5baa6e38082e98791e9a38ee78e89e99cb2e4b880e79bb8e980a2efbc8ce4bebfe8839ce58db4e4babae997b4e697a0e695b0e38082e69f94e68385e4bcbce6b0b4efbc8ce4bdb3e69c9fe5a682e6a2a6efbc8ce5bf8de9a1bee9b98ae6a1a5e5bd92e8b7afe38082e4b8a4e68385e88ba5e698afe4b985e995bfe697b6efbc8ce58f88e5b282e59ca8e69c9de69c9de69aaee69aaee38082\r\n"+"ENDQR\r\n"+"FORM\r\n"+"PRINT\r\n"varbytes=plus.android.invoke(string,'getBytes','gbk');outputStream.write(bytes);outputStream.flush();device=null//这里关键uni.hideLoading()//bluetoothSocket.close();//必须关闭蓝牙连接否则意外断开的话打印错误}
5、5. 打印结束关闭蓝牙连接bluetoothSocket.close()