#微信小程序# 藍(lán)牙模塊
-Start:關(guān)注本公眾號(hào)后,可直接聯(lián)系后臺(tái)獲取排版美化的詳細(xì)文檔!
-Hints:本篇文章所編纂的資料均來(lái)自網(wǎng)絡(luò),特此感謝參與奉獻(xiàn)的有關(guān)人員。
微信小程序-開(kāi)發(fā)步驟說(shuō)明
-開(kāi)發(fā)賬號(hào)申請(qǐng)
https://mp.weixin.qq.com/wxopen/waregister?action=step1&token=&lang=zh_CN
-賬號(hào)APPID獲取
https://mp.weixin.qq.com/wxamp/basicprofile/index?token=784407765&lang=zh_CN
微信管理平臺(tái):設(shè)置》賬號(hào)信息》AppID
-開(kāi)發(fā)工具部署
下載地址:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
使用說(shuō)明:
https://www.w3cschool.cn/weixinapp/weixinapp-devtools.html
?
微信小程序-項(xiàng)目基礎(chǔ)結(jié)構(gòu)

1 pages,小程序的頁(yè)面組成,有index 頁(yè)面和 logs 頁(yè)面,即歡迎頁(yè)和日志頁(yè)
Js文件,頁(yè)面邏輯
Wxml文件,頁(yè)面結(jié)構(gòu)
Json文件,頁(yè)面配置
Wxss文件,頁(yè)面樣式
2 utils 存放js文件,支持公共函數(shù)
3 app.js是小程序的腳本代碼。監(jiān)聽(tīng)并處理小程序的生命周期函數(shù)、聲明全局變量,調(diào)用微信原生 API、網(wǎng)絡(luò)超時(shí)時(shí)間、底部tab
4app.json 是小程序的全局配置。配置小程序的頁(yè)面組成,窗口背景色,導(dǎo)航條樣式,默認(rèn)標(biāo)題。注意該文件不可添加任何注釋。
5 app.wxss是小程序的公共樣式表。頁(yè)面組件的 class 屬性可以直接使用app.wxss 中聲明的樣式規(guī)則。
6 project.config.json在工具上做的任何配置都會(huì)寫入到這個(gè)文件,當(dāng)你重新安裝工具或者換電腦工作時(shí),你只要載入同一個(gè)項(xiàng)目的代碼包,開(kāi)發(fā)者工具就自動(dòng)會(huì)幫你恢復(fù)到當(dāng)時(shí)你開(kāi)發(fā)項(xiàng)目時(shí)的個(gè)性化配置,其中會(huì)包括編輯器的顏色、代碼上傳時(shí)自動(dòng)壓縮等等一系列選項(xiàng)。
7 sitemap.json開(kāi)發(fā)者可以通過(guò) sitemap.json 配置,或者管理后臺(tái)頁(yè)面收錄開(kāi)關(guān)來(lái)配置其小程序頁(yè)面是否允許微信索引。當(dāng)開(kāi)發(fā)者允許微信索引時(shí),微信會(huì)通過(guò)爬蟲的形式,為小程序的頁(yè)面內(nèi)容建立索引。當(dāng)用戶的搜索詞條觸發(fā)該索引時(shí),小程序的頁(yè)面將可能展示在搜索結(jié)果中。
8 readme.md自行添加的關(guān)于項(xiàng)目的說(shuō)明文件
?
微信小程序-藍(lán)牙模塊開(kāi)發(fā)
-藍(lán)牙API生效周期:
藍(lán)牙適配器模塊生效周期為調(diào)用?wx.openBluetoothAdapter?至調(diào)用?wx.closeBluetoothAdapter?或小程序被銷毀為止。在小程序藍(lán)牙適配器模塊生效期間,開(kāi)發(fā)者才能夠正常調(diào)用藍(lán)牙相關(guān)的小程序 API,并收到藍(lán)牙模塊相關(guān)的事件回調(diào)。
-藍(lán)牙設(shè)備地址說(shuō)明:
--由于系統(tǒng)限制,Android 上獲取到的?deviceId?為設(shè)備 MAC 地址,iOS 上則為設(shè)備uuid。因此?deviceId?不能硬編碼到代碼中。
--目前不支持在開(kāi)發(fā)者工具上進(jìn)行藍(lán)牙功能的調(diào)試,需要使用真機(jī)才能正常調(diào)用小程序藍(lán)牙接口。
-低功耗藍(lán)牙BLE說(shuō)明:
iOS 上對(duì)特征值的?read、write、notify操作,由于系統(tǒng)需要獲取特征值實(shí)例,傳入的?serviceId?與?characteristicId?必須由?wx.getBLEDeviceServices?與?wx.getBLEDeviceCharacteristics?中獲取到后才能使用。建議雙平臺(tái)統(tǒng)一在建立連接后先執(zhí)行?wx.getBLEDeviceServices?與?wx.getBLEDeviceCharacteristics?后再進(jìn)行與藍(lán)牙設(shè)備的數(shù)據(jù)交互。
微信小程序--藍(lán)牙開(kāi)放接口
OBJECT參數(shù)說(shuō)明:
參數(shù) | 類型 | 必填 | 說(shuō)明 |
success | Function | 是 | 成功則返回成功初始化信息 |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
--獲取本機(jī)藍(lán)牙適配器狀態(tài)
wx.getBluetoothAdapterState(OBJECT)
--初始化藍(lán)牙適配器
wx.openBluetoothAdapter
--開(kāi)始搜尋附近的藍(lán)牙外圍設(shè)備
wx.startBluetoothDevicesDiscovery(OBJECT)
--停止搜尋附近的藍(lán)牙外圍設(shè)備
搜尋附近的藍(lán)牙外圍設(shè)備操作比較耗費(fèi)系統(tǒng)資源,請(qǐng)?jiān)谒阉鞑⑦B接到設(shè)備后調(diào)用 stop 方法停止搜索。
wx.stopBluetoothDevicesDiscovery(OBJECT)
--獲取所有已發(fā)現(xiàn)的藍(lán)牙設(shè)備,包括已經(jīng)和本機(jī)處于連接狀態(tài)的設(shè)備
wx.getBluetoothDevices(OBJECT)
--獲取處于已連接狀態(tài)的設(shè)備
wx.getConnectedBluetoothDevices(OBJECT)
--監(jiān)聽(tīng)藍(lán)牙適配器狀態(tài)變化事件
wx.onBluetoothAdapterStateChange(CALLBACK)
--監(jiān)聽(tīng)尋找到新設(shè)備的事件
wx.onBluetoothDeviceFound(CALLBACK)
wx.createBLEConnection({
? // 這里的 deviceId 需要在上面的 getBluetoothDevices 或onBluetoothDeviceFound 接口中獲取
? deviceId: deviceId,
? success: function (res) {
??? console.log(res)
? }
})
--連接低功耗藍(lán)牙設(shè)備
wx.createBLEConnection(OBJECT)
--獲取藍(lán)牙設(shè)備所有 service(服務(wù))
wx.getBLEDeviceServices(OBJECT)
--獲取藍(lán)牙設(shè)備所有 characteristic(特征值)
wx.getBLEDeviceCharacteristics(OBJECT)
--讀取低功耗藍(lán)牙設(shè)備的特征值的二進(jìn)制數(shù)據(jù)值
注意:必須設(shè)備的特征值支持read才可以成功調(diào)用,具體參照 characteristic 的 properties 屬性
wx.readBLECharacteristicValue(OBJECT)
--向低功耗藍(lán)牙設(shè)備特征值中寫入二進(jìn)制數(shù)據(jù)
wx.writeBLECharacteristicValue(OBJECT)
注意:必須設(shè)備的特征值支持write才可以成功調(diào)用,具體參照 characteristic 的 properties 屬性
tips: 并行調(diào)用多次讀寫接口存在讀寫失敗的可能性
--啟用低功耗藍(lán)牙設(shè)備特征值變化時(shí)的 notify 功能。
wx.notifyBLECharacteristicValueChanged(OBJECT)
注意:必須設(shè)備的特征值支持notify才可以成功調(diào)用,具體參照 characteristic 的 properties
--監(jiān)聽(tīng)低功耗藍(lán)牙連接的錯(cuò)誤事件,包括設(shè)備丟失,連接異常斷開(kāi)等等
wx.onBLEConnectionStateChanged(CALLBACK)
--監(jiān)聽(tīng)低功耗藍(lán)牙設(shè)備的特征值變化
必須先啟用notify接口才能接收到設(shè)備推送的notification。
wx.onBLECharacteristicValueChange(CALLBACK)
--藍(lán)牙配對(duì)接口,僅安卓使用。安卓上藍(lán)牙連接時(shí),部分設(shè)備需先配對(duì)。
wx.makeBluetoothPair(Objectobject)
--斷開(kāi)與低功耗藍(lán)牙設(shè)備的連接
wx.closeBLEConnection(OBJECT)
--關(guān)閉藍(lán)牙模塊
wx.closeBluetoothAdapter
詳細(xì)資料:https://www.w3cschool.cn/weixinapp/weixinapp-bluetooth.html
?
微信小程序-藍(lán)牙連接流程
小程序與藍(lán)牙設(shè)備建立連接進(jìn)行通訊的一般流程如下:


詳細(xì)資料:https://blog.csdn.net/liweipei_gd/article/details/114829582
?
微信小程序-藍(lán)牙開(kāi)發(fā)Demo:
Demo代碼:
https://developers.weixin.qq.com/s/pQU51zmz7a3K
Demo連接:
https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.writeBLECharacteristicValue.html
Demo思路:
1打開(kāi)藍(lán)牙適配器接口wx.openBluetoothAdapter
1.1藍(lán)牙適配器啟用成功,搜索藍(lán)牙設(shè)備wx.startBluetoothDevicesDiscovery
1.2藍(lán)牙適配器啟用失敗,監(jiān)聽(tīng)藍(lán)牙適配器狀態(tài)變化wx.onBluetoothAdapterStateChange
1.2.1 當(dāng)藍(lán)牙適配器狀態(tài)為可用時(shí),進(jìn)行搜索藍(lán)牙設(shè)備wx.startBluetoothDevicesDiscovery
2 搜索藍(lán)牙設(shè)備wx.startBluetoothDevicesDiscovery
3 獲取發(fā)現(xiàn)的藍(lán)牙設(shè)備wx.onBluetoothDeviceFound
4 進(jìn)行低功耗藍(lán)牙設(shè)備連接wx.createBLEConnection
4.1 低功耗藍(lán)牙連接成功,獲取藍(lán)牙設(shè)備所有 service(服務(wù))wx.getBLEDeviceServices(OBJECT)
4.1.1 低功耗藍(lán)牙連接成功,獲取藍(lán)牙設(shè)備service成功,進(jìn)行獲取藍(lán)牙設(shè)備所有 characteristic(特征值)wx.getBLEDeviceCharacteristics(OBJECT)
4.1.1.1 低功耗藍(lán)牙連接成功,獲取藍(lán)牙設(shè)備service成功,獲取藍(lán)牙設(shè)備characteristic成功,讀取低功耗藍(lán)牙設(shè)備的特征值的二進(jìn)制數(shù)據(jù)值,wx.readBLECharacteristicValue(OBJECT)
5 向低功耗藍(lán)牙設(shè)備特征值中寫入二進(jìn)制數(shù)據(jù)wx.writeBLECharacteristicValue
6 啟用低功耗藍(lán)牙設(shè)備特征值變化時(shí)的 notify 功能wx.notifyBLECharacteristicValueChange
7 停止搜尋附近的藍(lán)牙外圍設(shè)備wx.stopBluetoothDevicesDiscovery(OBJECT)
8 關(guān)閉低功耗藍(lán)牙連接?wx.closeBLEConnection
9 關(guān)閉藍(lán)牙適配器?wx.closeBluetoothAdapter
?
參考資料
https://blog.csdn.net/qq_37896578/article/details/103721004?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1
https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.stopBluetoothDevicesDiscovery.html
https://blog.csdn.net/liweipei_gd/article/details/114829582
公眾號(hào)二維碼
End:如果有興趣了解量化交易、數(shù)據(jù)分析和互聯(lián)網(wǎng)+的實(shí)用技術(shù),歡迎關(guān)注本公眾號(hào)
