|  |  | 
 |  |  | import Vue from 'vue'; | 
 |  |  | let main, Context, BManager, BluetoothAdapter, BAdapter, BluetoothDevice, IntentFilter; | 
 |  |  | import {SET_INFODATA,SET_CONNECTBLEDATA} from '@/store/actionsType.js'; | 
 |  |  | import {GET_CONNECTBLEDATA} from '@/store/gettersType.js'; | 
 |  |  | /** | 
 |  |  |  * 蓝牙初始化和注册 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$init_bluetooth = function(){ | 
 |  |  |    console.log('蓝牙初始化'); | 
 |  |  |    let _this = this; | 
 |  |  |    //获取android应用Activity活动对象 | 
 |  |  |    main = plus.android.runtimeMainActivity(); | 
 |  |  |    //引入Context类 | 
 |  |  |    Context = plus.android.importClass("android.content.Context"); | 
 |  |  |     // Context.BLUETOOTH_SERVICE  获取Context类的静态常量(蓝牙服务,获取BluetoothManager,以使用蓝牙) | 
 |  |  |    BManager = main.getSystemService(Context.BLUETOOTH_SERVICE); | 
 |  |  |    //获取蓝牙适配器对象类 | 
 |  |  |    BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"); | 
 |  |  |    //蓝牙本地适配器(对象) | 
 |  |  |    BAdapter = BluetoothAdapter.getDefaultAdapter(); | 
 |  |  |    //引入蓝牙设备类(创建与相应设备的连接或查询有关该设备的信息,例如名称,地址,类和绑定状态) | 
 |  |  |    BluetoothDevice = plus.android.importClass('android.bluetooth.BluetoothDevice'); | 
 |  |  |    //引入过滤器类 (IntentFilter可以匹配Intent中的动作,类别,数据) | 
 |  |  |    IntentFilter = plus.android.importClass('android.content.IntentFilter'); | 
 |  |  | } | 
 |  |  | /** | 
 |  |  |  * 检查蓝牙是否开启 | 
 |  |  |  * 1.用户没有开启,提示开启 | 
 |  |  |  * 2.用户蓝牙已经开启 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$check_bluetooth_open = function(){ | 
 |  |  |    let _this = this; | 
 |  |  |    /** | 
 |  |  |     * BAdapter.isEnabled(); 判断蓝牙是否打开 | 
 |  |  |     * BAdapter.enable();  //开启蓝牙 | 
 |  |  |     * BAdapter.disable();  //关闭蓝牙 | 
 |  |  |     */ | 
 |  |  |    return new Promise((resolve,reject)=>{ | 
 |  |  |       if (!BAdapter.isEnabled()) { | 
 |  |  |          //蓝牙未打开 | 
 |  |  |          uni.showModal({ | 
 |  |  |             title:"提示", | 
 |  |  |             content:"蓝牙未开启,是否开启蓝牙~", | 
 |  |  |             success:function(res){ | 
 |  |  |                if (res.confirm) { | 
 |  |  |                   //开启蓝牙 | 
 |  |  |                   BAdapter.enable(); | 
 |  |  |                   resolve(true); | 
 |  |  |                }else if(res.cancel){ | 
 |  |  |                   resolve(false); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          }) | 
 |  |  |          // 后续提示框提示或用户手动打开 | 
 |  |  |       } else { | 
 |  |  |          //蓝牙已打开 | 
 |  |  |          resolve(true); | 
 |  |  |       } | 
 |  |  |    }) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 检测手机是否已经连接蓝牙设备 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$check_bluetooth_connect = function(){ | 
 |  |  |    let _this = this; | 
 |  |  |    // 先清空vuex原来已有的数据 | 
 |  |  |    _this.$store.dispatch(SET_CONNECTBLEDATA,[]); | 
 |  |  |    return new Promise((resolve,reject)=>{ | 
 |  |  |       // 获取android应用已配对的蓝牙设备类 | 
 |  |  |       let lists = BAdapter.getBondedDevices(); | 
 |  |  |       // 引入类 | 
 |  |  |       plus.android.importClass(lists); | 
 |  |  |       // 获取已配对蓝牙设备的个数 | 
 |  |  |       let len = lists.size(); | 
 |  |  |       // iterator()  把一个容器的所有对象,做成一个线性表(List),而iterator本身是一个指针 | 
 |  |  |       let iterator = lists.iterator();   | 
 |  |  |       // console.log(iterator.hasNext()); | 
 |  |  |       plus.android.importClass(iterator); | 
 |  |  |       /** | 
 |  |  |        * iterator.hasNext()  true如果迭代具有更多元素 | 
 |  |  |        * iterator.next() 放回迭代中的下一个元素 | 
 |  |  |        * iterator.remove() 从基础集合中移除此迭代器返回的最后一个元素(可选操作) | 
 |  |  |        */ | 
 |  |  |       while (iterator.hasNext()) { | 
 |  |  |          let d = iterator.next();   | 
 |  |  |          plus.android.importClass(d); | 
 |  |  |          let matchList = { | 
 |  |  |             name: d.getName(), | 
 |  |  |             mac: d.getAddress() | 
 |  |  |          } | 
 |  |  |          console.log(matchList); | 
 |  |  |          _this.$store.dispatch(SET_CONNECTBLEDATA,matchList); | 
 |  |  |          resolve({code:true,msg:matchList}); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |        //获取一个已连接的设备 | 
 |  |  |       // plus.android.importClass(BManager); //引入相关的method函数 | 
 |  |  |       // //蓝牙适配器 | 
 |  |  |       // let BAdapter = BManager.getAdapter(); | 
 |  |  |       // // console.log(BAdapter); | 
 |  |  |       // plus.android.importClass(BAdapter); //引入相关的method函数,这样之后才会有isEna; | 
 |  |  |       // let lists = BAdapter.getBondedDevices(); | 
 |  |  |       // // console.log(lists); | 
 |  |  |       // plus.android.importClass(lists); | 
 |  |  |       // let iterator = lists.iterator(); | 
 |  |  |       // // console.log(iterator); | 
 |  |  |       // plus.android.importClass(iterator); | 
 |  |  |       // // console.log(iterator.hasNext()); | 
 |  |  |       // if(iterator.hasNext()){   //判断下一个元素的有无 | 
 |  |  |       //    let d = iterator.next(); | 
 |  |  |       //    plus.android.importClass(d); | 
 |  |  |       //    //已连接蓝牙的数据 | 
 |  |  |       //    // console.log(d.getAddress()); | 
 |  |  |       //    console.log(d.getAddress() + "----" + d.getName()); | 
 |  |  |       //    // _this.match_list = { | 
 |  |  |       //    //    name: d.getName(), | 
 |  |  |       //    //    mac: d.getAddress() | 
 |  |  |       //    // }; | 
 |  |  |       //    let matchList = { | 
 |  |  |       //       name: d.getName(), | 
 |  |  |       //       mac: d.getAddress() | 
 |  |  |       //    } | 
 |  |  |       //    _this.$store.dispatch(SET_CONNECTBLEDATA,matchList); | 
 |  |  |       //    // console.log(_this.$store.getters.GET_CONNECTBLEDATA) | 
 |  |  |       //    /**  | 
 |  |  |       //     * 连接打印机 | 
 |  |  |       //     */ | 
 |  |  |       //     resolve({code:true,msg:matchList}); | 
 |  |  |       // }else{ | 
 |  |  |       //    resolve({code:false}) | 
 |  |  |       // } | 
 |  |  |    }) | 
 |  |  | } | 
 |  |  | /** | 
 |  |  |  * 打开蓝牙 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$open_bluetooth = function(){ | 
 |  |  |    let _this = this; | 
 |  |  |    return new Promise((resolve,reject)=>{ | 
 |  |  |       if (!BAdapter.isEnabled()) { | 
 |  |  |          BAdapter.enable(); //启动蓝牙 | 
 |  |  |          uni.showToast({ | 
 |  |  |             icon: "none", | 
 |  |  |             title: '蓝牙已打开', | 
 |  |  |             duration: 3000 | 
 |  |  |          }) | 
 |  |  |          resolve(true); | 
 |  |  |       } | 
 |  |  |    }) | 
 |  |  | } | 
 |  |  | /** | 
 |  |  |  * 关闭蓝牙  | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$close_bluetooth = function (){ | 
 |  |  |    let _this = this; | 
 |  |  |    if (BAdapter.isEnabled()) { | 
 |  |  |       BAdapter.disable(); //关闭蓝牙   | 
 |  |  |       uni.showToast({ | 
 |  |  |          icon: "none", | 
 |  |  |          title: '蓝牙已关闭', | 
 |  |  |          duration: 2000 | 
 |  |  |       }) | 
 |  |  |    } else { | 
 |  |  |       uni.showToast({ | 
 |  |  |          icon: "none", | 
 |  |  |          title: '蓝牙已关闭', | 
 |  |  |          duration: 2000 | 
 |  |  |       }) | 
 |  |  |    } | 
 |  |  | } | 
 |  |  | /** | 
 |  |  |  * 搜索蓝牙设备 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$search_bluetooth = function(){ | 
 |  |  |    let _this = this; | 
 |  |  |    let obj = {}; | 
 |  |  |    return new Promise((resolve,reject)=>{ | 
 |  |  |       // console.log(BAdapter.isEnabled()); | 
 |  |  |       // console.log(JSON.stringify(_this.$store.getters)); | 
 |  |  |       // BAdapter.isconnect("DC:1D:30:7C:74:96"); | 
 |  |  |       //判断蓝牙是否开启 | 
 |  |  |       if(!BAdapter.isEnabled()) { | 
 |  |  |          uni.showModal({ | 
 |  |  |             title:"提示", | 
 |  |  |             content:"蓝牙未开启,是否开启蓝牙~", | 
 |  |  |             success:function(res){ | 
 |  |  |                if (res.confirm) { | 
 |  |  |                   console.log('用户点击确定'); | 
 |  |  |                   obj.code = false;  //用户点击确定,开启蓝牙 | 
 |  |  |                   obj.msg = "蓝牙未开启"; | 
 |  |  |                   resolve(obj); | 
 |  |  |                   // _this.$open_bluetooth(); | 
 |  |  |                }else if(res.cancel){ | 
 |  |  |                   // resolve() | 
 |  |  |                   obj.code = null; | 
 |  |  |                   resolve(obj); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |          }) | 
 |  |  |       }else{ | 
 |  |  |          obj.code = true; | 
 |  |  |          obj.msg = "开启搜索蓝牙"; | 
 |  |  |          resolve(obj); | 
 |  |  |       } | 
 |  |  |    }) | 
 |  |  | } | 
 |  |  | /** | 
 |  |  |  * 监听蓝牙设备信息 | 
 |  |  |  */ | 
 |  |  | Vue.prototype.$search_pipei=function(){ | 
 |  |  |    let timer = null; | 
 |  |  |    let _this = this; | 
 |  |  |    //提示蓝牙开启权限访问 | 
 |  |  |    uni.openBluetoothAdapter({ | 
 |  |  |       success(res) { | 
 |  |  |          if (res.errMsg === "openBluetoothAdapter:ok") { | 
 |  |  |             //这里是开启蓝牙搜寻 | 
 |  |  |             uni.startBluetoothDevicesDiscovery({ | 
 |  |  |                success: (res) => { | 
 |  |  |                   console.log('startBluetoothDevicesDiscovery success', res) | 
 |  |  |                   uni.showLoading({ | 
 |  |  |                      title: "蓝牙搜索中...", | 
 |  |  |                      mask: true | 
 |  |  |                   }) | 
 |  |  |                   //每次搜索都把之前的清空 | 
 |  |  |                   // _this.bArray = []; | 
 |  |  |                   // _this.no_match_list = []; | 
 |  |  |                   _this.$store.dispatch(SET_INFODATA,[]); | 
 |  |  |                   let bArray = [];  //用于蓝牙去重 | 
 |  |  |                   let filter = new IntentFilter();   //实例化过滤器类 | 
 |  |  |                   let BDevice = new BluetoothDevice();  //实例化蓝牙设备类 | 
 |  |  |                   // let connect = _this.$store.state.Bluetooth.connectBLEData; | 
 |  |  |                   // console.log("已连接:" + JSON.stringify(connect)); | 
 |  |  |                   BAdapter.startDiscovery(); //开启搜索  | 
 |  |  |                   let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', { | 
 |  |  |                      onReceive: function(context, intent) { //回调  | 
 |  |  |                         try { | 
 |  |  |                                   plus.android.importClass(intent); | 
 |  |  |                            if (intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") { | 
 |  |  |                                main.unregisterReceiver(receiver); //取消监听  | 
 |  |  |                            } else { | 
 |  |  |                               // Intent中获取设备对象 | 
 |  |  |                              BDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); | 
 |  |  |                              console.log(BDevice.getName() + "---" + BDevice.getAddress()); | 
 |  |  |                              // 判断如果蓝牙没有名称则不显示 | 
 |  |  |                              if (BDevice.getName() !== null) { | 
 |  |  |                               //蓝牙去重 | 
 |  |  |                               let address = BDevice.getAddress(); | 
 |  |  |                               //已经连接的蓝牙 | 
 |  |  |                               if(bArray.indexOf(address) == -1){ | 
 |  |  |                                  bArray.push(address); | 
 |  |  |                                  _this.$store.dispatch(SET_INFODATA,{ | 
 |  |  |                                     name: BDevice.getName(), | 
 |  |  |                                     mac: BDevice.getAddress() | 
 |  |  |                                  }) | 
 |  |  |                               } | 
 |  |  |                              } | 
 |  |  |                              //如果intent为空则取消蓝牙监听 | 
 |  |  |                              if (BDevice == null) { | 
 |  |  |                                 main.unregisterReceiver(receiver); //取消监听  | 
 |  |  |                                 uni.hideLoading() | 
 |  |  |                                 //获取已匹配的蓝牙   | 
 |  |  |                                 // that.bluetooth_list()  | 
 |  |  |                                 return; | 
 |  |  |                              } | 
 |  |  |                              if(timer != null){ | 
 |  |  |                                 clearTimeout(timer); | 
 |  |  |                              } | 
 |  |  |                              timer = setTimeout(()=>{ | 
 |  |  |                                 main.unregisterReceiver(receiver); //取消监听 | 
 |  |  |                                 uni.hideLoading(); | 
 |  |  |                              },3000); | 
 |  |  |                            } | 
 |  |  |                         } catch (e) { | 
 |  |  |                             uni.showToast({ | 
 |  |  |                                icon: "none", | 
 |  |  |                                title: "蓝牙搜寻错误~", | 
 |  |  |                                duration: 3000, | 
 |  |  |                                mask: true | 
 |  |  |                             }) | 
 |  |  |                         } | 
 |  |  |                      } | 
 |  |  |                   }); | 
 |  |  | 						 | 
 |  |  |                   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); //注册监听 | 
 |  |  |                }, | 
 |  |  |                fail: (err) => { | 
 |  |  |                   uni.showToast({ | 
 |  |  |                      icon: "none", | 
 |  |  |                      title: "蓝牙搜寻失败~", | 
 |  |  |                      duration: 3000, | 
 |  |  |                      mask: true | 
 |  |  |                   }) | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       fail(err) { | 
 |  |  |          uni.showToast({ | 
 |  |  |             icon: "none", | 
 |  |  |             title: "蓝牙搜索失败" | 
 |  |  |          }) | 
 |  |  |       } | 
 |  |  |    }) | 
 |  |  | } | 
 |  |  | import Vue from 'vue';
 | 
 |  |  | let main, Context, BManager, BluetoothAdapter, BAdapter, BluetoothDevice, IntentFilter;
 | 
 |  |  | import {SET_INFODATA,SET_CONNECTBLEDATA} from '@/store/actionsType.js';
 | 
 |  |  | import {GET_CONNECTBLEDATA} from '@/store/gettersType.js';
 | 
 |  |  | /**
 | 
 |  |  |  * 蓝牙初始化和注册
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$init_bluetooth = function(){
 | 
 |  |  |    console.log('蓝牙初始化');
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    //获取android应用Activity活动对象
 | 
 |  |  |    main = plus.android.runtimeMainActivity();
 | 
 |  |  |    //引入Context类
 | 
 |  |  |    Context = plus.android.importClass("android.content.Context");
 | 
 |  |  |     // Context.BLUETOOTH_SERVICE  获取Context类的静态常量(蓝牙服务,获取BluetoothManager,以使用蓝牙)
 | 
 |  |  |    BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
 | 
 |  |  |    //获取蓝牙适配器对象类
 | 
 |  |  |    BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
 | 
 |  |  |    //蓝牙本地适配器(对象)
 | 
 |  |  |    BAdapter = BluetoothAdapter.getDefaultAdapter();
 | 
 |  |  |    //引入蓝牙设备类(创建与相应设备的连接或查询有关该设备的信息,例如名称,地址,类和绑定状态)
 | 
 |  |  |    BluetoothDevice = plus.android.importClass('android.bluetooth.BluetoothDevice');
 | 
 |  |  |    //引入过滤器类 (IntentFilter可以匹配Intent中的动作,类别,数据)
 | 
 |  |  |    IntentFilter = plus.android.importClass('android.content.IntentFilter');
 | 
 |  |  | }
 | 
 |  |  | /**
 | 
 |  |  |  * 检查蓝牙是否开启
 | 
 |  |  |  * 1.用户没有开启,提示开启
 | 
 |  |  |  * 2.用户蓝牙已经开启
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$check_bluetooth_open = function(){
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    /**
 | 
 |  |  |     * BAdapter.isEnabled(); 判断蓝牙是否打开
 | 
 |  |  |     * BAdapter.enable();  //开启蓝牙
 | 
 |  |  |     * BAdapter.disable();  //关闭蓝牙
 | 
 |  |  |     */
 | 
 |  |  |    return new Promise((resolve,reject)=>{
 | 
 |  |  |       if (!BAdapter.isEnabled()) {
 | 
 |  |  |          //蓝牙未打开
 | 
 |  |  |          uni.showModal({
 | 
 |  |  |             title:"提示",
 | 
 |  |  |             content:"蓝牙未开启,是否开启蓝牙~",
 | 
 |  |  |             success:function(res){
 | 
 |  |  |                if (res.confirm) {
 | 
 |  |  |                   //开启蓝牙
 | 
 |  |  |                   BAdapter.enable();
 | 
 |  |  |                   resolve(true);
 | 
 |  |  |                }else if(res.cancel){
 | 
 |  |  |                   resolve(false);
 | 
 |  |  |                }
 | 
 |  |  |             }
 | 
 |  |  |          })
 | 
 |  |  |          // 后续提示框提示或用户手动打开
 | 
 |  |  |       } else {
 | 
 |  |  |          //蓝牙已打开
 | 
 |  |  |          resolve(true);
 | 
 |  |  |       }
 | 
 |  |  |    })
 | 
 |  |  | }
 | 
 |  |  | 
 | 
 |  |  | /**
 | 
 |  |  |  * 检测手机是否已经连接蓝牙设备
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$check_bluetooth_connect = function(){
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    // 先清空vuex原来已有的数据
 | 
 |  |  |    _this.$store.dispatch(SET_CONNECTBLEDATA,[]);
 | 
 |  |  |    return new Promise((resolve,reject)=>{
 | 
 |  |  |       // 获取android应用已配对的蓝牙设备类
 | 
 |  |  |       let lists = BAdapter.getBondedDevices();
 | 
 |  |  |       // 引入类
 | 
 |  |  |       plus.android.importClass(lists);
 | 
 |  |  |       // 获取已配对蓝牙设备的个数
 | 
 |  |  |       let len = lists.size();
 | 
 |  |  |       // iterator()  把一个容器的所有对象,做成一个线性表(List),而iterator本身是一个指针
 | 
 |  |  |       let iterator = lists.iterator();   | 
 |  |  |       // console.log(iterator.hasNext());
 | 
 |  |  |       plus.android.importClass(iterator);
 | 
 |  |  |       /**
 | 
 |  |  |        * iterator.hasNext()  true如果迭代具有更多元素
 | 
 |  |  |        * iterator.next() 放回迭代中的下一个元素
 | 
 |  |  |        * iterator.remove() 从基础集合中移除此迭代器返回的最后一个元素(可选操作)
 | 
 |  |  |        */
 | 
 |  |  |       while (iterator.hasNext()) {
 | 
 |  |  |          let d = iterator.next();   | 
 |  |  |          plus.android.importClass(d);
 | 
 |  |  |          let matchList = {
 | 
 |  |  |             name: d.getName(),
 | 
 |  |  |             mac: d.getAddress()
 | 
 |  |  |          }
 | 
 |  |  |          console.log(matchList);
 | 
 |  |  |          _this.$store.dispatch(SET_CONNECTBLEDATA,matchList);
 | 
 |  |  |          resolve({code:true,msg:matchList});
 | 
 |  |  |       }
 | 
 |  |  | 		 | 
 |  |  |        //获取一个已连接的设备
 | 
 |  |  |       // plus.android.importClass(BManager); //引入相关的method函数
 | 
 |  |  |       // //蓝牙适配器
 | 
 |  |  |       // let BAdapter = BManager.getAdapter();
 | 
 |  |  |       // // console.log(BAdapter);
 | 
 |  |  |       // plus.android.importClass(BAdapter); //引入相关的method函数,这样之后才会有isEna;
 | 
 |  |  |       // let lists = BAdapter.getBondedDevices();
 | 
 |  |  |       // // console.log(lists);
 | 
 |  |  |       // plus.android.importClass(lists);
 | 
 |  |  |       // let iterator = lists.iterator();
 | 
 |  |  |       // // console.log(iterator);
 | 
 |  |  |       // plus.android.importClass(iterator);
 | 
 |  |  |       // // console.log(iterator.hasNext());
 | 
 |  |  |       // if(iterator.hasNext()){   //判断下一个元素的有无
 | 
 |  |  |       //    let d = iterator.next();
 | 
 |  |  |       //    plus.android.importClass(d);
 | 
 |  |  |       //    //已连接蓝牙的数据
 | 
 |  |  |       //    // console.log(d.getAddress());
 | 
 |  |  |       //    console.log(d.getAddress() + "----" + d.getName());
 | 
 |  |  |       //    // _this.match_list = {
 | 
 |  |  |       //    //    name: d.getName(),
 | 
 |  |  |       //    //    mac: d.getAddress()
 | 
 |  |  |       //    // };
 | 
 |  |  |       //    let matchList = {
 | 
 |  |  |       //       name: d.getName(),
 | 
 |  |  |       //       mac: d.getAddress()
 | 
 |  |  |       //    }
 | 
 |  |  |       //    _this.$store.dispatch(SET_CONNECTBLEDATA,matchList);
 | 
 |  |  |       //    // console.log(_this.$store.getters.GET_CONNECTBLEDATA)
 | 
 |  |  |       //    /**  | 
 |  |  |       //     * 连接打印机
 | 
 |  |  |       //     */
 | 
 |  |  |       //     resolve({code:true,msg:matchList});
 | 
 |  |  |       // }else{
 | 
 |  |  |       //    resolve({code:false})
 | 
 |  |  |       // }
 | 
 |  |  |    })
 | 
 |  |  | }
 | 
 |  |  | /**
 | 
 |  |  |  * 打开蓝牙
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$open_bluetooth = function(){
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    return new Promise((resolve,reject)=>{
 | 
 |  |  |       if (!BAdapter.isEnabled()) {
 | 
 |  |  |          BAdapter.enable(); //启动蓝牙
 | 
 |  |  |          uni.showToast({
 | 
 |  |  |             icon: "none",
 | 
 |  |  |             title: '蓝牙已打开',
 | 
 |  |  |             duration: 3000
 | 
 |  |  |          })
 | 
 |  |  |          resolve(true);
 | 
 |  |  |       }
 | 
 |  |  |    })
 | 
 |  |  | }
 | 
 |  |  | /**
 | 
 |  |  |  * 关闭蓝牙  | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$close_bluetooth = function (){
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    if (BAdapter.isEnabled()) {
 | 
 |  |  |       BAdapter.disable(); //关闭蓝牙   | 
 |  |  |       uni.showToast({
 | 
 |  |  |          icon: "none",
 | 
 |  |  |          title: '蓝牙已关闭',
 | 
 |  |  |          duration: 2000
 | 
 |  |  |       })
 | 
 |  |  |    } else {
 | 
 |  |  |       uni.showToast({
 | 
 |  |  |          icon: "none",
 | 
 |  |  |          title: '蓝牙已关闭',
 | 
 |  |  |          duration: 2000
 | 
 |  |  |       })
 | 
 |  |  |    }
 | 
 |  |  | }
 | 
 |  |  | /**
 | 
 |  |  |  * 搜索蓝牙设备
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$search_bluetooth = function(){
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    let obj = {};
 | 
 |  |  |    return new Promise((resolve,reject)=>{
 | 
 |  |  |       // console.log(BAdapter.isEnabled());
 | 
 |  |  |       // console.log(JSON.stringify(_this.$store.getters));
 | 
 |  |  |       // BAdapter.isconnect("DC:1D:30:7C:74:96");
 | 
 |  |  |       //判断蓝牙是否开启
 | 
 |  |  |       if(!BAdapter.isEnabled()) {
 | 
 |  |  |          uni.showModal({
 | 
 |  |  |             title:"提示",
 | 
 |  |  |             content:"蓝牙未开启,是否开启蓝牙~",
 | 
 |  |  |             success:function(res){
 | 
 |  |  |                if (res.confirm) {
 | 
 |  |  |                   console.log('用户点击确定');
 | 
 |  |  |                   obj.code = false;  //用户点击确定,开启蓝牙
 | 
 |  |  |                   obj.msg = "蓝牙未开启";
 | 
 |  |  |                   resolve(obj);
 | 
 |  |  |                   // _this.$open_bluetooth();
 | 
 |  |  |                }else if(res.cancel){
 | 
 |  |  |                   // resolve()
 | 
 |  |  |                   obj.code = null;
 | 
 |  |  |                   resolve(obj);
 | 
 |  |  |                }
 | 
 |  |  |             }
 | 
 |  |  |          })
 | 
 |  |  |       }else{
 | 
 |  |  |          obj.code = true;
 | 
 |  |  |          obj.msg = "开启搜索蓝牙";
 | 
 |  |  |          resolve(obj);
 | 
 |  |  |       }
 | 
 |  |  |    })
 | 
 |  |  | }
 | 
 |  |  | /**
 | 
 |  |  |  * 监听蓝牙设备信息
 | 
 |  |  |  */
 | 
 |  |  | Vue.prototype.$search_pipei=function(){
 | 
 |  |  |    let timer = null;
 | 
 |  |  |    let _this = this;
 | 
 |  |  |    //提示蓝牙开启权限访问
 | 
 |  |  |    uni.openBluetoothAdapter({
 | 
 |  |  |       success(res) {
 | 
 |  |  |          if (res.errMsg === "openBluetoothAdapter:ok") {
 | 
 |  |  |             //这里是开启蓝牙搜寻
 | 
 |  |  |             uni.startBluetoothDevicesDiscovery({
 | 
 |  |  |                success: (res) => {
 | 
 |  |  |                   console.log('startBluetoothDevicesDiscovery success', res)
 | 
 |  |  |                   uni.showLoading({
 | 
 |  |  |                      title: "蓝牙搜索中...",
 | 
 |  |  |                      mask: true
 | 
 |  |  |                   })
 | 
 |  |  |                   //每次搜索都把之前的清空
 | 
 |  |  |                   // _this.bArray = [];
 | 
 |  |  |                   // _this.no_match_list = [];
 | 
 |  |  |                   _this.$store.dispatch(SET_INFODATA,[]);
 | 
 |  |  |                   let bArray = [];  //用于蓝牙去重
 | 
 |  |  |                   let filter = new IntentFilter();   //实例化过滤器类
 | 
 |  |  |                   let BDevice = new BluetoothDevice();  //实例化蓝牙设备类
 | 
 |  |  |                   // let connect = _this.$store.state.Bluetooth.connectBLEData;
 | 
 |  |  |                   // console.log("已连接:" + JSON.stringify(connect));
 | 
 |  |  |                   BAdapter.startDiscovery(); //开启搜索  | 
 |  |  |                   let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
 | 
 |  |  |                      onReceive: function(context, intent) { //回调  | 
 |  |  |                         try {
 | 
 |  |  |                                   plus.android.importClass(intent);
 | 
 |  |  |                            if (intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {
 | 
 |  |  |                                main.unregisterReceiver(receiver); //取消监听  | 
 |  |  |                            } else {
 | 
 |  |  |                               // Intent中获取设备对象
 | 
 |  |  |                              BDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
 | 
 |  |  |                              console.log(BDevice.getName() + "---" + BDevice.getAddress());
 | 
 |  |  |                              // 判断如果蓝牙没有名称则不显示
 | 
 |  |  |                              if (BDevice.getName() !== null) {
 | 
 |  |  |                               //蓝牙去重
 | 
 |  |  |                               let address = BDevice.getAddress();
 | 
 |  |  |                               //已经连接的蓝牙
 | 
 |  |  |                               if(bArray.indexOf(address) == -1){
 | 
 |  |  |                                  bArray.push(address);
 | 
 |  |  |                                  _this.$store.dispatch(SET_INFODATA,{
 | 
 |  |  |                                     name: BDevice.getName(),
 | 
 |  |  |                                     mac: BDevice.getAddress()
 | 
 |  |  |                                  })
 | 
 |  |  |                               }
 | 
 |  |  |                              }
 | 
 |  |  |                              //如果intent为空则取消蓝牙监听
 | 
 |  |  |                              if (BDevice == null) {
 | 
 |  |  |                                 main.unregisterReceiver(receiver); //取消监听  | 
 |  |  |                                 uni.hideLoading()
 | 
 |  |  |                                 //获取已匹配的蓝牙   | 
 |  |  |                                 // that.bluetooth_list()  | 
 |  |  |                                 return;
 | 
 |  |  |                              }
 | 
 |  |  |                              if(timer != null){
 | 
 |  |  |                                 clearTimeout(timer);
 | 
 |  |  |                              }
 | 
 |  |  |                              timer = setTimeout(()=>{
 | 
 |  |  |                                 main.unregisterReceiver(receiver); //取消监听
 | 
 |  |  |                                 uni.hideLoading();
 | 
 |  |  |                              },3000);
 | 
 |  |  |                            }
 | 
 |  |  |                         } catch (e) {
 | 
 |  |  |                             uni.showToast({
 | 
 |  |  |                                icon: "none",
 | 
 |  |  |                                title: "蓝牙搜寻错误~",
 | 
 |  |  |                                duration: 3000,
 | 
 |  |  |                                mask: true
 | 
 |  |  |                             })
 | 
 |  |  |                         }
 | 
 |  |  |                      }
 | 
 |  |  |                   });
 | 
 |  |  | 						 | 
 |  |  |                   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); //注册监听
 | 
 |  |  |                },
 | 
 |  |  |                fail: (err) => {
 | 
 |  |  |                   uni.showToast({
 | 
 |  |  |                      icon: "none",
 | 
 |  |  |                      title: "蓝牙搜寻失败~",
 | 
 |  |  |                      duration: 3000,
 | 
 |  |  |                      mask: true
 | 
 |  |  |                   })
 | 
 |  |  |                }
 | 
 |  |  |             })
 | 
 |  |  |          }
 | 
 |  |  |       },
 | 
 |  |  |       fail(err) {
 | 
 |  |  |          uni.showToast({
 | 
 |  |  |             icon: "none",
 | 
 |  |  |             title: "蓝牙搜索失败"
 | 
 |  |  |          })
 | 
 |  |  |       }
 | 
 |  |  |    })
 | 
 |  |  | }
 |