您好,登錄后才能下訂單哦!
這篇文章主要介紹“openBluetoothAdapter初始化藍牙適配器的方法”,在日常操作中,相信很多人在openBluetoothAdapter初始化藍牙適配器的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”openBluetoothAdapter初始化藍牙適配器的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
iOS 微信客戶端 6.5.6 版本開始支持,Android 客戶端暫不支持
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
初始化藍牙適配器
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
success | Function | 是 | 成功則返回成功初始化信息 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
示例代碼:
wx.openBluetoothAdapter({ success: function (res) {console.log(res) } })
tip
: 由于系統的問題,目前僅在 mac 版的開發工具上支持藍牙調試
tip
: 基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
關閉藍牙模塊。調用該方法將斷開所有已建立的鏈接并釋放系統資源
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
success | Function | 是 | 成功則返回成功關閉模塊信息 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
示例代碼:
wx.closeBluetoothAdapter({ success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
獲取本機藍牙適配器狀態
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
discovering | Boolean | 是否正在搜索設備 |
available | Boolean | 藍牙適配器是否可用 |
errMsg | String | 成功:ok,錯誤:詳細信息 |
wx.getBluetoothAdapterState({ success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
監聽藍牙適配器狀態變化事件
CALLBACK參數說明:
參數 | 類型 | 說明 |
---|---|---|
available | boolean | 藍牙適配器是否可用 |
discovering | boolean | 藍牙適配器是否處于搜索狀態 |
示例代碼:
wx.onBluetoothAdapterStateChange(function(res) { console.log(`adapterState changed, now is`, res) })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
開始搜尋附近的藍牙外圍設備。注意,該操作比較耗費系統資源,請在搜索并連接到設備后調用 stop 方法停止搜索。
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
services | Array | 否 | 藍牙設備主 service 的 uuid 列表 |
allowDuplicatesKey | boolean | 否 | 是否允許重復上報同一設備, 如果允許重復上報,則onDeviceFound 方法會多次上報同一設備,但是 RSSI 值會有不同 |
interval | integer | 否 | 上報設備的間隔,默認為0,意思是找到新設備立即上報,否則根據傳入的間隔上報 |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
services參數說明:某些藍牙設備會廣播自己的主 service 的 uuid。如果這里傳入該數組,那么根據該 uuid 列表,只搜索有這個主服務的設備。
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
isDiscovering | boolean | 當前藍牙適配器是否處于搜索狀態 |
示例代碼:
// 以微信硬件平臺的藍牙智能燈為例,主服務的 UUID 是 FEE7。傳入這個參數,只搜索主服務 UUID 為 FEE7 的設備wx.startBluetoothDevicesDiscovery({ services: ['FEE7'], success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
停止搜尋附近的藍牙外圍設備。請在確保找到需要連接的設備后調用該方法停止搜索。
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
adapterState
藍牙適配器狀態信息
參數 | 類型 | 說明 |
---|---|---|
discovering | boolean | 是否正在搜索設備 |
available | boolean | 藍牙適配器是否可用 |
示例代碼:
wx.stopBluetoothDevicesDiscovery({ success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
獲取所有已發現的藍牙設備,包括已經和本機處于連接狀態的設備
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
devices | Array | uuid 對應的的已連接設備列表 |
errMsg | string | 成功:ok,錯誤:詳細信息 |
device 對象
藍牙設備信息
參數 | 類型 | 說明 |
---|---|---|
name | string | 藍牙設備名稱,某些設備可能沒有 |
deviceId | string | 用于區分設備的 id |
RSSI | int | 當前藍牙設備的信號強度 |
advertisData | ArrayBuffer | 當前藍牙設備的廣播內容(注意:vConsole 無法打印出 ArrayBuffer 類型數據) |
示例代碼:
wx.getBluetoothDevices({ success: function (res) {console.log(res) } })
tip
: Mac系統可能無法獲取advertisData
及RSSI
,請使用真機調試
tip
: 開發者工具和 Android 上獲取到的deviceId
為設備 MAC 地址,iOS 上則為設備 uuid。因此deviceId
不能硬編碼到代碼中
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
根據 uuid 獲取處于已連接狀態的設備
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
services | Array | 是 | 藍牙設備主 service 的 uuid 列表 |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
devices | Array | 搜索到的設備列表 |
errMsg | string | 成功:ok,錯誤:詳細信息 |
device對象
藍牙設備信息
參數 | 類型 | 說明 |
---|---|---|
name | string | 藍牙設備名稱,某些設備可能沒有 |
deviceId | string | 用于區分設備的 id |
示例代碼:
wx.getConnectedBluetoothDevices({ success: function (res) {console.log(res) } })
tip
: 開發者工具和 Android 上獲取到的deviceId
為設備 MAC 地址,iOS 上則為設備 uuid。因此deviceId
不能硬編碼到代碼中
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
監聽尋找到新設備的事件
CALLBACK參數說明:
參數 | 類型 | 說明 |
---|---|---|
devices | Array | 新搜索到的設備列表 |
device對象
參數 | 類型 | 說明 |
---|---|---|
deviceId | string | 藍牙設備 id,參考 device 對象 |
name | string | 藍牙設備名稱,參考 device 對象 |
RSSI | int | 當前藍牙設備的信號強度 |
advertisData | ArrayBuffer | 當前藍牙設備的廣播內容(注意:vConsole 無法打印出 ArrayBuffer 類型數據) |
示例代碼:
wx.onBluetoothDeviceFound(function(devices) { console.log('new device list has founded') console.dir(devices) })
tip
: Mac系統可能無法獲取advertisData
及RSSI
,請使用真機調試
tip
: 開發者工具和 Android 上獲取到的deviceId
為設備 MAC 地址,iOS 上則為設備 uuid。因此deviceId
不能硬編碼到代碼中
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
連接低功耗藍牙設備
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 getDevices 接口 |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
示例代碼:
wx.createBLEConnection({ // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
斷開與低功耗藍牙設備的連接
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 getDevices 接口 |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
示例代碼:
wx.closeBLEConnection({ success: function (res) {console.log(res) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
獲取藍牙設備所有 service(服務)
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 getDevices 接口 |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
services | array | 設備服務列表 |
errMsg | string | 成功:ok,錯誤:詳細信息 |
service對象
藍牙設備service(服務)信息
參數 | 類型 | 說明 |
---|---|---|
uuid | string | 藍牙設備服務的 uuid |
isPrimary | boolean | 該服務是否為主服務 |
示例代碼:
wx.getBLEDeviceServices({ // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, success: function (res) {console.log('device services:', res.services) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
獲取藍牙設備所有 characteristic(特征值)
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 device 對象 |
serviceId | string | 是 | 藍牙服務 uuid |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
characteristics | array | 設備特征值列表 |
errMsg | string | 成功:ok,錯誤:詳細信息 |
characteristic對象
藍牙設備characteristic(特征值)信息
參數 | 類型 | 說明 |
---|---|---|
uuid | string | 藍牙設備特征值的 uuid |
properties | object | 該特征值支持的操作類型 |
properties對象
參數 | 類型 | 說明 |
---|---|---|
read | boolean | 該特征值是否支持 read 操作 |
write | boolean | 該特征值是否支持 write 操作 |
notify | boolean | 該特征值是否支持 notify 操作 |
indicate | boolean | 該特征值是否支持 indicate 操作 |
示例代碼:
wx.getBLEDeviceCharacteristics({ // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取 serviceId: serviceId, success: function (res) {console.log('device getBLEDeviceCharacteristics:', res.characteristics) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
讀取低功耗藍牙設備的特征值的二進制數據值。注意:必須設備的特征值支持read
才可以成功調用,具體參照 characteristic 的 properties 屬性
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 device 對象 |
serviceId | string | 是 | 藍牙特征值對應服務的 uuid |
characteristicId | string | 是 | 藍牙特征值的 uuid |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
characteristic | object | 設備特征值信息 |
errMsg | string | 成功:ok,錯誤:詳細信息 |
characteristic對象
藍牙設備characteristic(特征值)信息
參數 | 類型 | 說明 |
---|---|---|
characteristicId | string | 藍牙設備特征值的 uuid |
serviceId | object | 藍牙設備特征值對應服務的 uuid |
value | ArrayBuffer | 藍牙設備特征值對應的二進制值(注意:vConsole 無法打印出 ArrayBuffer 類型數據) |
示例代碼:
// 必須在這里的回調才能獲取wx.onBLECharacteristicValueChange(function(characteristic) { console.log('characteristic value comed:', characteristic) }) wx.readBLECharacteristicValue({ // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取 serviceId: serviceId, // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取 characteristicId: characteristicId, success: function (res) {console.log('readBLECharacteristicValue:', res.characteristic.value) } })
tip
: 并行調用多次讀寫接口存在讀寫失敗的可能性。
tip
:read
接口讀取到的信息需要在onBLECharacteristicValueChange
方法注冊的回調中獲取。
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
向低功耗藍牙設備特征值中寫入二進制數據。注意:必須設備的特征值支持write
才可以成功調用,具體參照 characteristic 的 properties 屬性
tips: 并行調用多次讀寫接口存在讀寫失敗的可能性
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 device 對象 |
serviceId | string | 是 | 藍牙特征值對應服務的 uuid |
characteristicId | string | 是 | 藍牙特征值的 uuid |
value | ArrayBuffer | 是 | 藍牙設備特征值對應的二進制值(注意:vConsole 無法打印出 ArrayBuffer 類型數據) |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
示例代碼:
// 這里的回調可以獲取到 write 導致的特征值改變wx.onBLECharacteristicValueChange(function(characteristic) { console.log('characteristic value changed:', characteristic) })// 向藍牙設備發送一個0x00的16進制數據let buffer = new ArrayBuffer(1)let dataView = new DataView(buffer) dataView.setUint8(0, 0) wx.writeBLECharacteristicValue({ // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取 serviceId: serviceId, // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取 characteristicId: characteristicId, // 這里的value是ArrayBuffer類型 value: buffer, success: function (res) {console.log('writeBLECharacteristicValue success', res.errMsg) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
啟用低功耗藍牙設備特征值變化時的 notify 功能。注意:必須設備的特征值支持notify
才可以成功調用,具體參照 characteristic 的 properties 屬性
另外,必須先啟用notify
才能監聽到設備 characteristicValueChange 事件
OBJECT參數說明:
參數 | 類型 | 必填 | 說明 |
---|---|---|---|
deviceId | string | 是 | 藍牙設備 id,參考 device 對象 |
serviceId | string | 是 | 藍牙特征值對應服務的 uuid |
characteristicId | string | 是 | 藍牙特征值的 uuid |
state | boolean | 是 | true: 啟用 notify; false: 停用 notify |
success | Function | 是 | 成功則返回本機藍牙適配器狀態 |
fail | Function | 否 | 接口調用失敗的回調函數 |
complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
success返回參數:
參數 | 類型 | 說明 |
---|---|---|
errMsg | string | 成功:ok,錯誤:詳細信息 |
示例代碼:
wx.notifyBLECharacteristicValueChanged({ state: true, // 啟用 notify 功能 // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取 deviceId: deviceId, // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取 serviceId: serviceId, // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取 characteristicId: characteristicId, success: function (res) {console.log('notifyBLECharacteristicValueChanged success', res.errMsg) } })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
監聽低功耗藍牙連接的錯誤事件,包括設備丟失,連接異常斷開等等。
CALLBACK參數說明:
參數 | 類型 | 說明 |
---|---|---|
deviceId | string | 藍牙設備 id,參考 device 對象 |
connected | boolean | 連接目前的狀態 |
示例代碼:
wx.onBLEConnectionStateChanged(function(res) { // 該方法回調中可以用于處理連接意外斷開等異常情況 console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`) })
基礎庫版本 1.1.0 開始支持,低版本需做兼容處理
監聽低功耗藍牙設備的特征值變化。必須先啟用notify
接口才能接收到設備推送的notification。
CALLBACK參數說明:
參數 | 類型 | 說明 |
---|---|---|
deviceId | string | 藍牙設備 id,參考 device 對象 |
serviceId | string | 特征值所屬服務 uuid |
characteristicId | string | 特征值 uuid |
value | ArrayBuffer | 特征值最新的值(注意:vConsole 無法打印出 ArrayBuffer 類型數據) |
示例代碼:
wx.onBLECharacteristicValueChange(function(res) { console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`) })
錯誤碼 | 說明 | 備注 |
---|---|---|
0 | ok | 正常 |
10000 | not init | 未初始化藍牙適配器 |
10001 | not available | 當前藍牙適配器不可用 |
10002 | no device | 沒有找到指定設備 |
10003 | connection fail | 連接失敗 |
10004 | no service | 沒有找到指定服務 |
10005 | no characteristic | 沒有找到指定特征值 |
10006 | no connection | 當前連接已斷開 |
10007 | property not support | 當前特征值不支持此操作 |
10008 | system error | 其余所有系統上報的異常 |
10009 | system not support | Android 系統特有,系統版本低于 4.3 不支持BLE |
10010 | no descriptor | 沒有找到指定描述符 |
到此,關于“openBluetoothAdapter初始化藍牙適配器的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。