微信硬件蓝牙jsapi之getWXDeviceInfos接口获取设备deviceid(10)

文章来源 http://www.vxzsk.com/106.html

已推出最新微 信硬件jsapi学习笔记 地址 http://www.vxzsk.com/282.html

我们在微信蓝牙设备使用jsapi说明 这节课已经说的很明白了,以后案例是按照红色箭头的走向,所以接下来也是这样子。

第一、扫描二维码绑定蓝牙设备

1)、把我们在第三课生成的二维码用二维码生成器生成图片并打开。

2)、打开手机蓝牙并且打开手机微信扫一扫,扫描二维码图片会出现如图:

3),点击绑定设备 然后进入公众账号,进入公众账号之后,我们在微信的头部会看到"未连接设备"或"已连接1个设备"

4)、如果没有出现已连接1个设备或者未连接设备 可能是您授权的二维码和设备mac地址不匹配,还有一种情况就是手机蓝牙不支持ble模式,在绑定设备后,记得打开设备。

第二、根据微信蓝牙接入官方文档编写调用微信jsapi代码。

js代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<script type= "text/javascript" >
  jQuery(document).ready( function (){
   //初始化库 
  loadXMLDoc();
  //初始化库结束
  
  $( "#CallGetWXrefresh" ).on( "click" , function (e){  
     //showdialog();
     
      //1. 打开微信设备 
      my_openWXDeviceLib();
      
      //2. 安装设备事件
      my_installwxEvents();
      
      //2.1安装状态改变事件 暂时不检测
     // my_onWXDeviceStateChange(); 
      
      //3. 安装接收到数据事件 暂时 
      my_onReceiveDataFromWXDevice();
      
      //4. 刷新设备信息
      my_getWXDeviceInfos();
      
      
       
   });
   
});
  //微信硬件jsapi库
function  loadXMLDoc()
{
     var  appId =jQuery( "#appId" ).text();
     var  timestamp=jQuery( "#timestamp" ).text();
     var  nonceStr =jQuery( "#nonceStr" ).text();
     var  signature=jQuery( "#signature" ).text();
     wx.config({
              beta:  true ,
               debug:  true , // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
               appId: appId, 
               timestamp: timestamp,
               nonceStr: nonceStr,
               signature: signature,
               jsApiList: [
                 'openWXDeviceLib' ,
                 'closeWXDeviceLib' ,
                 'getWXDeviceInfos' ,
                 'getWXDeviceBindTicket' ,
                 'getWXDeviceUnbindTicket' ,
                 'startScanWXDevice' ,
                 'stopScanWXDevice' ,
                 'connectWXDevice' ,
                 'disconnectWXDevice' ,
                 'sendDataToWXDevice' ,
                 'onWXDeviceBindStateChange' ,
                 'onWXDeviceStateChange' ,
                 'onScanWXDeviceResult' ,
                 'onReceiveDataFromWXDevice' ,
                 'onWXDeviceBluetoothStateChange' ,
               ]
           });
              alert( "初始化库结束" );
}
//判断调用jsapi返回状态 true表示成功
wx.error( function  (res) {
   alert( "调用微信jsapi返回的状态:" +res.errMsg);
});
 
/******************************分割线************************************************/
/*********************************************************
* 打开微信设备 
* 作者:V型知识库 www.vxzsk.com 2016-04-04
* my_openWXDeviceLib
* 入口参数:无
* 出口参数:0表示打开成功;1表示打开失败
*********************************************************/
function  my_openWXDeviceLib(){
    var  x=0; 
    WeixinJSBridge.invoke( 'openWXDeviceLib' , {}, 
    function (res){
        mlog( "打开设备返回:" +res.err_msg);
       if (res.err_msg== 'openWXDeviceLib:ok' )
         {
           if (res.bluetoothState== 'off' )
             {    
               showdialog( "太着急啦" , "亲,使用前请先打开手机蓝牙!" );  
               $( "#lbInfo" ).innerHTML= "1.请打开手机蓝牙" ;
               $( "#lbInfo" ).css({color: "red" });
               x=1;
               isOver();
             };
           if (res.bluetoothState== 'unauthorized' )
             {
               showdialog( "出错啦" , "亲,请授权微信蓝牙功能并打开蓝牙!" );    
               $( "#lbInfo" ).html( "1.请授权蓝牙功能" );
               $( "#lbInfo" ).css({color: "red" });
               x=1;
               isOver();
             }; 
           if (res.bluetoothState== 'on' )
             {
               //showdialog("太着急啦","亲,请查看您的设备是否打开!");   
               $( "#lbInfo" ).html( "1.蓝牙已打开,未找到设备" );
               $( "#lbInfo" ).css({color: "red" });
               //$("#lbInfo").attr(("style", "background-color:#000");
               x=0;
               //isOver();
             };      
         }
       else
         {
           $( "#lbInfo" ).html( "1.微信蓝牙打开失败" );
           x=1; 
           showdialog( "微信蓝牙状态" , "亲,请授权微信蓝牙功能并打开蓝牙!" );   
         }
     });
    return  x;   //0表示成功 1表示失败
}
 
 
/*********************************************************
* 装载微信事件处理
* 作者:V型知识库 www.vxzsk.com 2016-04-04
* my_installwxEvents
* 入口参数:无
* 出口参数:无
*********************************************************/
  function  my_installwxEvents(){
    //1. 安装微信绑定事件
    WeixinJSBridge.on( 'onWXDeviceBindStateChange' function (argv) {
        //todo
         }); 
    //2. 扫描到某个设备      
    WeixinJSBridge.on( 'onScanWXDeviceResult' function (argv) {
         //todo
         });
    //3. 手机蓝牙状态改变事件    
    WeixinJSBridge.on( 'onWXDeviceBluetoothStateChange' function (argv) {
         //todo
         });         
  }
  
/*********************************************************
* 接收到数据事件
* 作者:V型知识库 www.vxzsk.com 2016-04-04
* my_onReceiveDataFromWXDevice
* 入口参数:无
* 出口参数:无
*********************************************************/ 
function  my_onReceiveDataFromWXDevice(){
     
     WeixinJSBridge.on( 'onReceiveDataFromWXDevice' function (argv) {
     mlog( "接收的数据-->" +argv.base64Data);
         //var Bytes=base64_to_bytes_array(argv.base64Data);
         //alert("硬件设备返回的base64数据"+argv.base64Data);
       //  mlog("接收的数据-->"+pHex(base64_to_bytes_array(argv.base64Data)));
        // recevResult=checkReceiveData(Bytes);
        
       
       });
}
  
 
 
/**********************************************
* 取得微信设备信息
* 作者:V型知识库 www.vxzsk.com 2016-04-04
* my_getWXDeviceInfos
* 入口参数:无
* 出口参数:返回一个已经链接的设备的ID
**********************************************/
function  my_getWXDeviceInfos(){
    
     WeixinJSBridge.invoke( 'getWXDeviceInfos' , {},  function (res){
         var  len=res.deviceInfos.length;   //绑定设备总数量
         for (i=0; i<=len-1;i++)
          {
            //alert(i + ' ' + res.deviceInfos[i].deviceId + ' ' +res.deviceInfos[i].state); 
            if (res.deviceInfos[i].state=== "connected" )
             {
               $( "#lbdeviceid" ).html(res.deviceInfos[i].deviceId); 
               C_DEVICEID = res.deviceInfos[i].deviceId;
               $( "#lbInfo" ).html( "2.设备已成功连接" );
               $( "#lbInfo" ).css({color: "green" });
              
               break ;   
             }  
          }
            
     }); 
   return ;    
}
 
function  mlog(m){
     var  log=$( '#logtext' ).val();
     //log=log+m;
     log = m;
     $( '#logtext' ).val(log);
}
 
/***************************************************************
  * 显示提示信息
***************************************************************/
function  showdialog(DialogTitle,DialogContent){
    var  $dialog = $( "#Mydialog" );
    $dialog.find( "#dialogTitle" ).html(DialogTitle);
    $dialog.find( "#dialogContent" ).html(DialogContent);
    $dialog.show();
    $dialog.find( ".weui_btn_dialog" ).one( "click" function (){
         $dialog.hide();
    });
}
</script>

loadXMLDoc();这个方法中的四个参数咱们在前两节已经讲过,如果读者不明白可翻看前两节在这里不在累述

第7行是微信蓝牙接入的步骤,分为四步,第一步打开微信设备、第二步安装设备事件、第三安装设备接收事件、其中有个步骤我注释掉了主要因为这个接口经过测试很不稳定,不知是微信原因还是我设备或者代码原因 。第四呢就是刷新设备信息。

第三、点击菜单进入界面,点击获取设备,获取设备信息和日志状态等

第四、完整jsp代码如下

 

第五、说明

用户打开微信,打开手机蓝牙,然后点击菜单进入h5界面并点击获取设备按钮获取设备信息,其中用户点击菜单跳转H5界面这个代码流程请看http://www.vxzsk.com/82.html 这一章节。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值