蓝牙打印和网口打印的实现
生活随笔
收集整理的這篇文章主要介紹了
蓝牙打印和网口打印的实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
藍(lán)牙打印的js
export default {install(Vue,options){// 藍(lán)牙搜索方法Vue.prototype.SearchBluetooth = function () {/*plus變量定義*/var main, BluetoothAdapter, BAdapter, IntentFilter, BluetoothDevice, receiver;/*其他定義*/var isSearchDevices = false, //是否處于搜索狀態(tài)debug = false; //調(diào)試模式main = plus.android.runtimeMainActivity(),BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"),IntentFilter = plus.android.importClass('android.content.IntentFilter'),BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice"),BAdapter = new BluetoothAdapter.getDefaultAdapter();return {// 檢查藍(lán)牙是否開啟CheckBluetoothState:function(){return BAdapter.isEnabled();},// 開啟藍(lán)牙StartBluetooth:function(CallBack){var self = this; if(!BAdapter.isEnabled()) { // isEnabled判斷藍(lán)牙狀態(tài)plus.nativeUI.confirm("藍(lán)牙處于關(guān)閉狀態(tài),是否打開?", function(e) {if(e.index == 0) {var enable = BAdapter.enable(); // 請(qǐng)求開啟藍(lán)牙console.log(enable); CallBack(true);}else{CallBack(false);}});}},// 開始搜索設(shè)備StartSeatch:function(CallBack,errcallback){try {var self = this;isSearchDevices = true;var filter = new IntentFilter(),bdevice = new BluetoothDevice();BAdapter.startDiscovery(); //開啟搜索receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {onReceive: onReceiveFn});filter.addAction(bdevice.ACTION_FOUND);filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);filter.addAction(BAdapter.ACTION_STATE_CHANGED);main.registerReceiver(receiver, filter); //注冊(cè)監(jiān)聽事件//監(jiān)聽回調(diào)函數(shù) 回調(diào)函數(shù)會(huì)在搜索期間 持續(xù)調(diào)用function onReceiveFn(context, intent) {plus.android.importClass(intent); //通過intent實(shí)例引入intent類,方便以后的‘.’操作//開始搜索改變狀態(tài)intent.getAction() === "android.bluetooth.device.action.FOUND" && (isSearchDevices = true);//判斷是否搜索結(jié)束if(intent.getAction() === 'android.bluetooth.adapter.action.DISCOVERY_FINISHED') {main.unregisterReceiver(receiver); //取消監(jiān)聽isSearchDevices = false;errcallback();return;}var BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE), // 設(shè)備對(duì)象bleName = BleDevice.getName(), //設(shè)備名稱bleId = BleDevice.getAddress(); //設(shè)備mac地址console.dir(JSON.stringify(BleDevice));if(!bleName || !bleId) {CallBack(false);}//判斷是否配對(duì)if(BleDevice.getBondState() === bdevice.BOND_BONDED) { // 已配對(duì)的藍(lán)牙設(shè)備CallBack({BleDevice:BleDevice,bleName:bleName, // 設(shè)備名稱bleId:bleId, // 設(shè)備idisPaired:true,is_active:false});} else { // 未配對(duì)的藍(lán)牙設(shè)備CallBack({BleDevice:BleDevice,bleName:bleName, // 設(shè)備名稱bleId:bleId, // 設(shè)備idisPaired:false});}}}catch(err) {errcallback();} },// 配對(duì)藍(lán)牙設(shè)備Bluepairing:function(BleDevice,bleId,CallBack,ErrCallBack){try {var self = this,bdevice = new BluetoothDevice(), // new java android.bluetooth.BluetoothDevice對(duì)象BleDeviceItem = BleDevice; // 賦值設(shè)備if(BleDeviceItem.getAddress() === bleId){BleDeviceItem.createBond(); // 設(shè)備進(jìn)行配對(duì)var timeout = setInterval(function(){ // 創(chuàng)建定時(shí)器輪詢配對(duì)結(jié)果if(BleDeviceItem.getBondState() === bdevice.BOND_BONDED) { // 配對(duì)成功window.clearInterval(timeout);CallBack({status:true,errmsg:'配對(duì)成功'});} else if(BleDeviceItem.getBondState() === bdevice.BOND_NONE) { // 配對(duì)失敗window.clearInterval(timeout);ErrCallBack({status:false,errmsg:'配對(duì)失敗,請(qǐng)嘗試重新配對(duì)'});}},1000);}else{ErrCallBack({status:false,errmsg:'設(shè)備有誤'});}}catch(err) {ErrCallBack({status:false,errmsg:'異常錯(cuò)誤'});} },CancelSearch:function(){ // 取消搜索main.unregisterReceiver(receiver); //取消監(jiān)聽},}};// 打印機(jī)連接方法Vue.prototype.ConnectPrinter = {// 首次new這個(gè)類會(huì)創(chuàng)建進(jìn)行連接BluePrinter:function(bleId){ // 藍(lán)牙打印機(jī)連接var plusMain = plus.android.runtimeMainActivity(),BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"),UUID = plus.android.importClass("java.util.UUID"),uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"),BAdapter = BluetoothAdapter.getDefaultAdapter(),device = BAdapter.getRemoteDevice(bleId);plus.android.importClass(device);var bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);plus.android.importClass(bluetoothSocket);if(!bluetoothSocket.isConnected()) {try {bluetoothSocket.connect();} catch (e) {console.log(e);} }// 判斷是否連接 沒有連接則連接this.Print = function(byteStr){ // 打印的方法var outputStream = bluetoothSocket.getOutputStream();plus.android.importClass(outputStream);var bytes = plus.android.invoke(byteStr, 'getBytes', 'gbk');try {outputStream.write(bytes);} catch (e) {mui.toast('打印失敗!');} outputStream.flush();device = null;// bluetoothSocket.close();console.log(2);};// 檢查是否連接this.ConnectStatus = function(){return bluetoothSocket.isConnected();};// 關(guān)閉連接this.CloseConnect = function(){bluetoothSocket.close();};// 連接方法this.ConnectDevice = function(){try{bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);bluetoothSocket.connect();}catch(err){console.log(err.message);return false;}};// 保存當(dāng)前連接的bleId 用于判斷使用單例模式this.BleId = bleId;}};}}網(wǎng)口打印的js
export default {sockets:false,connectstatus:false,printIns:'',socketconnect:function(ip,port){try{if(plus.os.name=='Android'){var res = this.androidconnect(ip,port);return res;}if(plus.os.name == 'iOS'){}}catch(e){mui.toast("連接錯(cuò)誤");return false;}},print:function(datastr,mm){this.printIns.println(datastr);this.sockets.close();},androidconnect:function(ip,port){if(this.sockets){if(this.sockets.isConnected() && !this.sockets.isClosed()){}else{var res = this.connectsockte(ip,port);return res;}}else{var res = this.connectsockte(ip,port);return res;}},connectsockte(ip,port){try{var Socket = plus.android.importClass("java.net.Socket");var PrintWriter = plus.android.importClass("java.io.PrintWriter");var BufferedWriter = plus.android.importClass("java.io.BufferedWriter");var OutputStreamWriter = plus.android.importClass("java.io.OutputStreamWriter");var BufferedReader = plus.android.importClass("java.io.BufferedReader");var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");var SocketAddress = plus.android.importClass("java.net.InetSocketAddress");//測試改良var StrictMode = plus.android.importClass("android.os.StrictMode");var Build = plus.android.importClass("android.os.Build");if (Build.VERSION.SDK_INT > 9) {var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);}var socket = new Socket();var socketAddr = new SocketAddress(ip,port);socket.connect(socketAddr,2000);var outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(),'gbk');var bufferWriter = new BufferedWriter(outputStreamWriter);var out = new PrintWriter(bufferWriter, true);this.sockets = socket;this.printIns = out;mui.toast("連接成功");return true;}catch(e){mui.toast("連接打印機(jī)失敗");return false;}},socketclose:function(){this.sockets.close();} }具體domo地址
https://github.com/Sun-Traget/print
總結(jié)
以上是生活随笔為你收集整理的蓝牙打印和网口打印的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 Layui 的富文本编辑器和封面的
- 下一篇: powerdesigner生成表sql语