免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

跳坑《一百七十六》藍(lán)牙API使用指南

發(fā)布時(shí)間:2018-04-20 10:27 所屬欄目:小程序開發(fā)教程
目前藍(lán)牙資料極少,但是為了讓大家能夠迅速的了解新API及可能遇到的問題,本帖將不斷聚合跟藍(lán)牙相關(guān)的內(nèi)容;以便大家參考;

官方文檔地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.html
基礎(chǔ)庫版本 1.1.0 開始支持,低版本需做兼容處理
iOS 微信客戶端 6.5.6 版本開始支持,Android 客戶端目前已經(jīng)支持
由于系統(tǒng)的問題,目前僅在 mac 版的開發(fā)工具上支持藍(lán)牙調(diào)試
  • tip: Mac系統(tǒng)可能無法獲取advertisData及RSSI,請使用真機(jī)調(diào)試
  • tip: 開發(fā)者工具和 Android 上獲取到的deviceId為設(shè)備 MAC 地址,iOS 上則為設(shè)備 uuid。因此deviceId不能硬編碼到代碼中
  • 開發(fā)者工具和 Android 上獲取到的deviceId為設(shè)備 MAC 地址,iOS 上則為設(shè)備 uuid。因此deviceId不能硬編碼到代碼中
  • tip: 并行調(diào)用多次讀寫接口存在讀寫失敗的可能性。
  • tip: read接口讀取到的信息需要在onBLECharacteristicValueChange方法注冊的回調(diào)中獲取。
     

藍(lán)牙錯(cuò)誤碼(errCode)列表
錯(cuò)誤碼 說明 備注
0 ok 正常
10000 not init 未初始化藍(lán)牙適配器
10001 not available 當(dāng)前藍(lán)牙適配器不可用
10002 no device 沒有找到指定設(shè)備
10003 connection fail 連接失敗
10004 no service 沒有找到指定服務(wù)
10005 no characteristic 沒有找到指定特征值
10006 no connection 當(dāng)前連接已斷開
10007 property not support 當(dāng)前特征值不支持此操作
10008 system error 其余所有系統(tǒng)上報(bào)的異常
10009 system not support Android 系統(tǒng)特有,系統(tǒng)版本低于 4.3 不支持BLE
10010 no descriptor 沒有找到指定描述符



推薦貼:
微信小程序藍(lán)牙實(shí)現(xiàn)連接的開發(fā)總結(jié)
【藍(lán)牙】開發(fā)相關(guān)匯總【長期更新】

相關(guān)文章:
微信小程序?qū)崿F(xiàn)BLE藍(lán)牙連接
【經(jīng)驗(yàn)總結(jié)】小程序有效判斷手機(jī)藍(lán)牙開/關(guān)狀態(tài)
微信小程序 藍(lán)牙BLE開發(fā)實(shí)戰(zhàn)(附demo)
微信小程序更新--測試API之藍(lán)牙
微信小程序最新更新--api測試一覽
微信小程序--Ble藍(lán)牙

相關(guān)demo:
微信小程序藍(lán)牙通訊demo
微信小程序?qū)W習(xí)用demo:藍(lán)牙測試
微信小程序 低耗藍(lán)牙接口封裝

相關(guān)討論:
Android環(huán)境 wx.writeBLECharacteristicValue寫入數(shù)據(jù)無通知
小程序連接Android 藍(lán)牙ble,只搜到自帶的service

相關(guān)討論:

小程序藍(lán)牙設(shè)備支持咨詢
很雞凍,在28日小程序放出支持藍(lán)牙設(shè)備的接口,使小程序的控制功能更厲害.但細(xì)看文檔后發(fā)現(xiàn)該功能目前僅支持iOS 微信客戶端 6.5.6和只能在mac開發(fā)工具上進(jìn)行調(diào)試。
存有2個(gè)疑問:
1、未來會(huì)否支持安卓的藍(lán)牙控制?
2、Windows版的開發(fā)工具是否支持藍(lán)牙接口的開發(fā)(如電腦沒藍(lán)牙的,在安卓機(jī)上調(diào)試)?
下載最新的Android6.5.7已經(jīng)支持,Windows由于對藍(lán)牙支持不友好,暫不支持。
假如你的安卓仍未支持,請將安卓升級到6.5.7版及以上,重啟一下手機(jī)進(jìn)入微信。就可以進(jìn)行藍(lán)牙測試了

相關(guān)討論:
微信已是6.5.6版本,但是基礎(chǔ)庫版本還是舊的,應(yīng)該怎么辦?
需要調(diào)試藍(lán)牙接口,很著急
Android還沒有更新最新版本的公共庫

目前需要使用 mac 版本開發(fā)工具或者 iOS 機(jī)器來調(diào)試


相關(guān)討論:
藍(lán)牙功能 怎么沒有發(fā)送數(shù)據(jù) 和 監(jiān)聽數(shù)據(jù)返回的
新開放的藍(lán)牙功能 沒有交互數(shù)據(jù)的嗎 怎么沒有發(fā)送數(shù)據(jù) 和 監(jiān)聽數(shù)據(jù)返回的
wx.readBLECharacteristicValue(OBJECT)
wx.writeBLECharacteristicValue(OBJECT)


相關(guān)討論:
藍(lán)牙寫入數(shù)據(jù) 有個(gè)問題沒有可以寫入的值。  比如 寫入  AA5504B10000B5  的16進(jìn)制字符串  ,改怎么寫入。
1.jpg
參數(shù)列表里面有寫
wx.writeBLECharacteristicValue(OBJECT)
向低功耗藍(lán)牙設(shè)備特征值中寫入二進(jìn)制數(shù)據(jù)。注意:必須設(shè)備的特征值支持write才可以成功調(diào)用,具體參照 characteristic 的 properties 屬性
tips: 并行調(diào)用多次讀寫接口存在讀寫失敗的可能性
OBJECT參數(shù)說明:

參數(shù) 類型 必填 說明
deviceId string 藍(lán)牙設(shè)備 id,參考 device 對象
serviceId string 藍(lán)牙特征值對應(yīng)服務(wù)的 uuid
characteristicId string 藍(lán)牙特征值的 uuid
value ArrayBuffer 藍(lán)牙設(shè)備特征值對應(yīng)的二進(jìn)制值


相關(guān)討論:
安卓6.5.7版本的微信不支持藍(lán)牙嗎?
安卓6.5.7版本的微信不支持藍(lán)牙嗎?
提示找不到wx.openBluetoothAdapter函數(shù)
兼容處理只是檢查有沒有該接口。
我想知安卓是不是基礎(chǔ)庫不支持?
[AppleScript] 純文本查看 復(fù)制代碼

if (wx.openBluetoothAdapter) {

  wx.openBluetoothAdapter()

} else {  // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦?,可以這樣子提示

  wx.showModal({

    title: '提示',

    content: '當(dāng)前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'

  })

}
基礎(chǔ)庫還未更新,請參考文檔如何做兼容處理



相關(guān)討論:
小程序的藍(lán)牙功能,如何獲取藍(lán)牙的major minor 值;發(fā)送到設(shè)備的指令后,沒有返回?cái)?shù)據(jù),改怎么處理
此功能屬于 ibeacon 功能,需要使用 ibeacon 請等下一版本的相關(guān)接口


相關(guān)討論:
藍(lán)牙接口無法獲取advertisData
onBluetoothDeviceFound回調(diào)返回的設(shè)備數(shù)據(jù)有問題,無法獲得藍(lán)牙廣播數(shù)據(jù)(ibeacon設(shè)備),advertisData為空。

getBluetoothDevices也一樣。
mac 上存在底層接口限制,無法獲取 BLE 設(shè)備的 advertisData



相關(guān)討論:
藍(lán)牙API在mac上調(diào)試問題
用mac測試藍(lán)牙可以搜到設(shè)備,但是讀到的mac地址不對(跟實(shí)際的mac地址不一樣),用真機(jī)測試,連設(shè)備都掃不到,經(jīng)測試發(fā)現(xiàn)wx.onBluetoothDeviceFound(function(devices) 這個(gè)回調(diào)沒有響應(yīng),求各位指導(dǎo)下,謝謝
圖中是用mac測試,搜索到的mac地址,但是實(shí)際的地址不一樣,用這個(gè)地址去掃描service服務(wù)也無響應(yīng)
  • 確保設(shè)備是低功耗藍(lán)牙設(shè)備而不是經(jīng)典藍(lán)牙設(shè)備
  • 懷疑設(shè)備 mac 地址不正確,可以在 mac 上下一個(gè) lightblue 的 app 嘗試連接

     


我在ios上面是可以找到我的設(shè)備的, 但是地址不一樣了, 設(shè)備名稱沒有變化 例如:安卓自己開發(fā)的APP下面設(shè)備地址:00:15:83:00:85:0A 但是IOS下面變成這樣了:57473C16-BCEC-4BC5-9FD7-68FD484B7CC1 修復(fù)地址以后可以正確訪問的 你不要指定地址,先掃描設(shè)備,應(yīng)該可以找到你的設(shè)備





相關(guān)討論:
小程序藍(lán)牙開發(fā)藍(lán)牙相關(guān)的API介紹中提到目前只支持MAC系統(tǒng)調(diào)試,windows系統(tǒng)環(huán)境下寫代碼然后預(yù)覽上傳到iphone手機(jī)上測試是否可行
可行


新增討論:安卓藍(lán)牙 
今天發(fā)現(xiàn)小程序可以支持安卓藍(lán)牙API了,但測試了下wx.getBluetoothDevices這個(gè)API報(bào)錯(cuò)!
另外向非低功耗藍(lán)牙設(shè)備發(fā)送數(shù)據(jù)的場景如何實(shí)現(xiàn)?比如我要使用藍(lán)牙便攜打印機(jī)(非低功耗藍(lán)牙)

答:追夢的人 
要先初始化藍(lán)牙 。

Page({
  onLoad: function () {
    //var that = this;

    wx.openBluetoothAdapter({
      success: function (res) {
        console.log(res)

        wx.getBluetoothAdapterState({
          success: function (res) {
            console.log(res)
          }
        })

        wx.startBluetoothDevicesDiscovery({
          success: function (res) {
            console.log(res)
          }
        })

        wx.getConnectedBluetoothDevices({
          success: function (res) {
            console.log(res)
          }
        })

        wx.getBluetoothDevices({
          //services: ['0019E0A29C02'],
          success: function (res) {
            console.log(res)
            // that.setData({
            //   // BLT_name: res.devices[0].name,
            //   // BLT_deviceId: res.devices[0].deviceId,
            //   // BLT_RSSI: res.devices[0].RSSI
            //   // BLT_advertisData: res.devices[0].advertisData
            // })
          }
        })

      }
    })

  }
})  

控制臺(tái)輸出,就wx.getBluetoothDevices報(bào)錯(cuò),其他四個(gè)API正常。
錯(cuò)誤代碼:cannot read property 'map' of undefined
剛才嘗試了安卓和蘋果的手機(jī)返回來的數(shù)據(jù)不一樣,這樣子輸出出來看看就知道了,但是這個(gè)

1111.jpgwx.onBLECharacteristicValueChange(CALLBACK)
這個(gè)接口沒有實(shí)時(shí)的數(shù)據(jù)返回來

 

新增案例:wx.onBluetoothDeviceFound參數(shù)類型不統(tǒng)一 
wx.onBluetoothDeviceFound(function(devices) {
        console.log(devices)
}
打印devices
在Mac中devices=[object]
在iphone中devices={ devices : [object] }
在android中devices=object

答:庫從建 
需要這樣才能統(tǒng)一操作,希望能統(tǒng)一一下參數(shù)

44.jpg


新增案例:關(guān)于小程序讀取藍(lán)牙特征值問題 
有人成功使用小程序調(diào)通BLE的嗎?為什么我讀取的特征值返回的value都是——proto:null
答:開泰 
function buf2hex(buffer) { // buffer is an ArrayBuffer
  return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
}

轉(zhuǎn)換下格式就可以了

新增案例:微信小程序的藍(lán)牙功能支持連接OBD讀取車載信息嗎?微信小程序的藍(lán)牙功能支持連接OBD讀取車載信息嗎? 
答:林超
理論上如果是低功耗藍(lán)牙都是可以接入的


新增案例:
手機(jī)測試藍(lán)牙API,不走devicefound回調(diào),求指導(dǎo) 上面的代碼,在mac上調(diào)試都沒問題,用手機(jī)調(diào)試就發(fā)現(xiàn)不走回調(diào)(蘋果和安卓微信版本都是6.5.7)
4.jpg
答:飛
參考一下吧,我這個(gè)是蘋果真機(jī)測試(版本6.5.6)可以執(zhí)行333.jpg

新增案例:
問題:
藍(lán)牙indication可以用哪個(gè)API操作
答:吳清生
搞半天換臺(tái)蘋果手機(jī)可以用了,android notify API不支持indication

相關(guān)討論:


讀取藍(lán)牙設(shè)備發(fā)出的數(shù)據(jù)問題
使用 wx.writeBLECharacteristicValue(OBJECT)  發(fā)送數(shù)據(jù)的時(shí)候,發(fā)送的數(shù)據(jù)在設(shè)備上可以接收到,并且正常,
但是使用 wx.readBLECharacteristicValue(OBJECT) 接收數(shù)據(jù)的時(shí)候,確一直接收不到,
我用了 使用了 wx.onBLECharacteristicValueChange(CALLBACK) 來監(jiān)聽數(shù)據(jù),數(shù)據(jù)發(fā)送來的時(shí)候事件確實(shí)可以激活,但是
wx.onBLECharacteristicValueChange(function(res) {  
console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)
})
上面代碼的res.value確一直是空對象,

請問 是不是在底層這里的二進(jìn)制轉(zhuǎn)換沒有做,導(dǎo)致字符串對象為空,還是說這里有什么其他方法可以處理的。


答:維明 
sendtoequ: function (e) {
        var that = this
        console.log(this.data.services)
        console.log("發(fā)送消息到:deviceId" + that.data.connectedDeviceId);
        console.log("serviceId:" + that.data.services[0].uuid);
        console.log("characteristicId:" + that.data.characteristicId);


        //這里是核心,自己編碼協(xié)議
        let buffer = new ArrayBuffer(1)
        let dataView = new DataView(buffer)
        dataView.setUint8(0, 6)
         //這里是核心,自己編碼協(xié)議


        wx.writeBLECharacteristicValue({
            // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取
            deviceId: that.data.connectedDeviceId,
            // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取
            serviceId: that.data.services[0].uuid,
            // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取
            characteristicId: that.data.characteristicId,
            // 這里的value是ArrayBuffer類型
            value: buffer,
            success: function (res) {
                console.log(res)
                console.log('writeBLECharacteristicValue success', res.errMsg)
            }
        })
    }


這段是給藍(lán)牙設(shè)備發(fā)了一個(gè)字節(jié)
方便大家 我自己回答了 收到的數(shù)據(jù)是二進(jìn)制格式的,根據(jù)自己的協(xié)議來讀吧。
舉個(gè)例子
wx.onBLECharacteristicValueChange(function (characteristic) {
console.log('characteristic value comed:')
let buffer = characteristic.value
let dataView = new DataView(buffer)
console.log(dataView.getUint8(1))
})


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.szcjxy.com/wxmini/doc/course/23738.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服