亚洲视频二区I天堂网av 在线I丰满人妻AV一区二区三I088精品在线观看视频IAV在线网站免费I亚洲人成影院在线I91精品91久久久777777I131M久I日日摸日日

027-81331413

微信小程序藍牙開發

發布時間:2021-03-23 瀏覽:4023

接口總結

正常使用:

  1. 初始化(開啟)藍牙模塊wx.openBluetoothAdapter

  2. 搜索藍牙設備(消耗大量資源,要及時結束)wx.startBluetoothDevicesDiscovery

  3. 結束搜索wx.stopBluetoothDevicesDiscovery

  4. 與藍牙設備建立連接wx.createBLEConnection

  5. 獲取藍牙設備的服務列表wx.getBLEDeviceServices

  6. 獲取藍牙設備的某個服務的特征值列表wx.getBLEDeviceCharacteristics

  7. 與特征值通信

    • 啟用/關閉某個特征值的 notify wx.notifyBLECharacteristicValueChange

    • 讀取特征值數據(讀取到的數據通過特征值變化事件返回) wx.readBLECharacteristicValue

    • 向特征值寫入數據wx.writeBLECharacteristicValue

  8. 斷開與藍牙設備的連接wx.closeBLEConnection

  9. 停用(關閉)藍牙模塊wx.closeBluetoothAdapter

事件監聽:

  1. 搜索過程中發現新的藍牙設備wx.onBluetoothDeviceFound

  2. 藍牙適配器狀態變化wx.onBluetoothAdapterStateChange

  3. 藍牙設備連接狀態變化wx.onBLEConnectionStateChange

  4. 特征值變化(需開啟notify)wx.onBLECharacteristicValueChange

其他:

  1. 根據uuid獲取已連接的設備wx.getConnectedBluetoothDevices

  2. 獲取當前藍牙模塊周期已發現的設備wx.getBluetoothDevices

  3. 獲取本機藍牙適配器的狀態wx.getBluetoothAdapterState

踩坑總結

  1. 全局

    • 初始化藍牙模塊后才能調用相關API

    • 初始化之前可執行事件監聽,但不會觸發事件回調

    • 初始化后,如果errCode=10001,那么其實此時小程序藍牙模塊已經初始化完成,可以調用API,也會有事件回調。

    • iOS 上由于系統需要獲取特征值實例,必須要調用獲取設備服務和特征值的接口,使用獲取到的serviceIdcharacteristicId,才能對特征值進行readwritenotify操作

    • Android 上,部分機型獲取設備服務時會多出0000180000001801UUID的服務,這是系統行為,注意不要使用這兩個服務

    • Android 上獲取到的deviceId為設備 MAC 地址,iOS 上則為設備 UUID

    • iOS 上不同手機搜索到的deviceId是不同的

    • 與藍牙設備通信的 MTU(最大傳輸單元)系統限定為20字節,如果超過則會出錯,這里應該根據藍牙設備協議進行分片傳輸。

    • 特征值的讀寫是二進制數據,ArrayBuffer類型

  2. 設備連接

    • 必須成對地調用createBLEConnectioncloseBLEConnection接口

    • Android 上,如果連續多次調用createBLEConnection,可能會導致系統持有同一設備多個連接的實例,導致調用 closeBLEConnection 的時候并不能真正地斷開與設備的連接

    • 如果未能及時關閉連接釋放資源,容易導致state 133 GATT ERROR的異常

    • 若小程序在之前已有搜索過某個藍牙設備,并成功建立連接,可直接傳入之前搜索獲取的deviceId直接嘗試連接該設備,無需進行搜索操作

    • 藍牙連接隨時可能斷開,建議監聽wx.onBLEConnectionStateChange回調事件,當藍牙設備斷開時按需執行重連操作

  3. 設備搜索

    • iOS里面藍牙狀態變化以后不能馬上開始搜索,否則會搜索不到設備,必須要等待2秒以上

    • Android 上,部分機型無定位權限或者是定位開關未打開時會搜不到設備。原因是藍牙功能是可以獲取到定位的,系統基于安全考量,使用藍牙接口時必須要有定位權限

    • 設備搜索占用大量資源,要及時關閉

    • wx.getBluetoothDevices獲取到的設備列表為藍牙模塊生效期間所有搜索到的藍牙設備

    • 若在藍牙模塊使用流程結束后未及時調用wx.closeBluetoothAdapter釋放資源,那么:

      • 可能不會發現新的設備,因為之前已搜索過

      • 調用wx.getBluetoothDevices時,仍會返回之前的藍牙使用流程中搜索到的藍牙設備,即使設備已經不在用戶身邊,無法連接

    • 藍牙設備在被搜索到時,系統返回的name字段一般為廣播包中的localName字段中的設備名稱,而如果與藍牙設備建立連接,系統返回的name字段會改為從藍牙設備上獲取到的GattName。若需要動態改變設備名稱并展示,建議使用localName字段

  4. 向特征值寫入數據

    • 并行調用多次可能會導致寫入失敗

    • 若單次寫入數據過長,iOS 上存在系統不會有任何回調的情況(包括錯誤回調)

    • 特征值必須支持 write

  5. 讀取特征值數據

    • 并行調用多次可能會導致讀取失敗

    • 接口讀取到的信息需要在 onBLECharacteristicValueChange 方法注冊的回調中獲取

    • 特征值必須支持 read

  6. 啟用/關閉notify

    • 啟用后才會觸發特征值變化

    • 監聽到的消息要進行過濾處理,有些設備會抽風一樣的發送同樣的消息,需要在處理邏輯里面去重

    • 開啟notify以后并不能馬上發送消息,藍牙設備有個準備的過程,需要延遲1秒以上才能發送,否則會發送失敗

    • 特征值必須支持notify或者indicate



作者:我也不知道該起什么名字
鏈接:https://www.jianshu.com/p/ef4a77328b70
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


主站蜘蛛池模板: 97视频免费在线看 | 中文字幕免费成人 | 麻豆影视在线免费观看 | 午夜免费在线观看 | 婷婷丁香激情综合 | 久久你懂得 | 精品国产日本 | 久久久国产影院 | 久久美女视频 | 色香天天| 久久免费av电影 | 黄色av播放| www.五月激情.com | 欧美一区免费在线观看 | 日韩视频一区二区三区在线播放免费观看 | 久久一级片 | 免费av大片| 国内精品久久久久久久久 | av在线8| 最近2019好看的中文字幕免费 | 成人午夜黄色 | 中文字幕在线观看一区二区 | 天堂成人在线 | 色妞色视频一区二区三区四区 | 伊人久久国产精品 | 久久久久国产精品免费 | 西西4444www大胆视频 | 国产精品原创在线 | 91女子私密保健养生少妇 | 久久久午夜电影 | 丁香综合网 | 在线色亚洲 | 日韩免费在线观看网站 | 成人看片 | 国产视频资源 | 久久久久国产成人免费精品免费 | 国产一区二区三区在线免费观看 | 日韩精品国产一区 | 国产高清在线一区 | 三级av免费看 | 手机看片国产日韩 | 国产精品久久久久久久久久99 | 亚洲高清精品在线 | 国产又黄又爽又猛视频日本 | 国产精品完整版 | 99久久99久久精品免费 | 欧美一性一交一乱 | 亚在线播放中文视频 | 国产视频97 | 成年人在线看视频 | 波多野结依在线观看 | 国内精品小视频 | 中文字幕av在线不卡 | 亚洲 欧美 成人 | 国产中文字幕在线观看 | 国产精品麻豆免费版 | 99久久精品免费视频 | 99色国产| 亚洲精品tv久久久久久久久久 | 免费看的毛片 | 日韩在线免费视频 | 久久精品国产一区二区 | 九九视频一区 | 日韩免费二区 | 日本三级久久久 | 色www精品视频在线观看 | 99久久久久久国产精品 | 91亚洲精品在线 | 欧美大jb | 国产精品毛片久久久久久久久久99999999 | 91视频传媒 | 超级碰99| 亚洲天堂毛片 | 免费成人av网站 | 久久久亚洲精华液 | 午夜精品一区二区三区在线播放 | 伊人久久国产精品 | 国产欧美在线一区 | 国产精品第十页 | 天天天天天干 | 99性视频| 亚洲成av人片 | 欧美成人h版电影 | 激情伊人五月天久久综合 | 亚洲精品久久久久58 | 成人免费xxxxxx视频 | 亚洲黄色小说网址 | 91精品伦理| 欧美一级片在线播放 | 日本精品视频在线 | 国产在线一区观看 | 黄色片网站大全 | 欧美黑人xxxx猛性大交 | 激情www| 欧美精品久久久久久久久久久 | 久久免费高清视频 | 国产午夜三级一区二区三 | 亚洲一区网站 | 97在线观看免费观看高清 |