(舊)支付寶小程序API 藍牙

2018-10-10 11:24 更新

支付寶小程序API藍牙

my.openBluetoothAdapter

初始化藍牙適配器。

名稱 類型 必填 描述 success Function 否 調(diào)用成功的回調(diào)函數(shù) fail Function 否 調(diào)用失敗的回調(diào)函數(shù) complete Function 否 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
isSupportBLE Boolean 是否支持 BLE

錯誤碼描述

error 描述
12 藍牙未打開
13 與系統(tǒng)服務的鏈接暫時丟失
14 未授權(quán)支付寶使用藍牙功能
15 未知錯誤

示例代碼

my.openBluetoothAdapter({
  success: (res) => {
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.closeBluetoothAdapter

關(guān)閉本機藍牙模塊。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 藍牙關(guān)閉失敗

示例代碼

my.closeBluetoothAdapter({
  success: (res) => {
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.getBluetoothAdapterState

獲取本機藍牙模塊狀態(tài)。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
discovering Boolean 是否正在搜索設(shè)備
available Boolean 藍牙模塊是否可用(需支持 BLE 并且藍牙是打開狀態(tài))

錯誤碼描述

error 描述
12 獲取失敗

示例代碼

my.getBluetoothAdapterState({
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.startBluetoothDevicesDiscovery

開始搜尋附近的藍牙外圍設(shè)備。搜索結(jié)果將在 onBluetoothDeviceFound 事件中返回。

入?yún)?/a>

名稱 類型 必填 描述
services Array 藍牙設(shè)備主 service 的 uuid 列表
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 開始搜索失敗

示例代碼

my.startBluetoothDevicesDiscovery({
  services: ['fff0'],
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.stopBluetoothDevicesDiscovery

停止搜尋附近的藍牙外圍設(shè)備。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 停止搜索失敗

示例代碼

my.stopBluetoothDevicesDiscovery({
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.getBluetoothDevices

獲取所有已發(fā)現(xiàn)的藍牙設(shè)備,包括已經(jīng)和本機處于連接狀態(tài)的設(shè)備。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
devices Array 已發(fā)現(xiàn)的設(shè)備列表

device對象

名稱 類型 描述
name String 藍牙設(shè)備名稱,某些設(shè)備可能沒有
deviceName(兼容舊版本) String 值與 name 一致
localName String 廣播設(shè)備名稱
deviceId String 設(shè)備 Id
RSSI Number 設(shè)備信號強度
advertisData Hex String 設(shè)備的廣播內(nèi)容
manufacturerData Hex String 設(shè)備的manufacturerData

錯誤碼描述

error 描述
12 獲取失敗

示例代碼

my.getBluetoothDevices({
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.getConnectedBluetoothDevices

獲取處于已連接狀態(tài)的設(shè)備。

入?yún)?/a>

名稱 類型 必填 描述
services Array 藍牙設(shè)備主 service 的 uuid 列表
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
devices Array 已連接的設(shè)備列表

device對象

名稱 類型 描述
name String 藍牙設(shè)備名稱,某些設(shè)備可能沒有
deviceName(兼容舊版本) String 值與 name 一致
localName String 廣播設(shè)備名稱
deviceId String 設(shè)備 Id
RSSI Number 設(shè)備信號強度
advertisData Hex String 設(shè)備的廣播內(nèi)容
manufacturerData Hex String 設(shè)備的manufacturerData

錯誤碼描述

error 描述
12 獲取失敗

示例代碼

my.getConnectedBluetoothDevices({
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.connectBLEDevice

連接低功耗藍牙設(shè)備。

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備id
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 連接失敗

示例代碼

my.connectBLEDevice({
  // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取
  deviceId: deviceId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.disconnectBLEDevice

斷開與低功耗藍牙設(shè)備的連接。

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備id
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 斷開失敗

示例代碼

my.disconnectBLEDevice({
  deviceId: deviceId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.writeBLECharacteristicValue

向低功耗藍牙設(shè)備特征值中寫入數(shù)據(jù)。

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
serviceId String 藍牙特征值對應 service 的 uuid
characteristicId String 藍牙特征值的 uuid
value Hex String 藍牙設(shè)備特征值對應的值,16進制字符串
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 寫入數(shù)據(jù)失敗

示例代碼

my.writeBLECharacteristicValue({
  deviceId: deviceId,
  serviceId: serviceId,
  characteristicId: characteristicId,
  value: 'fffe',
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.readBLECharacteristicValue

讀取低功耗藍牙設(shè)備特征值中的數(shù)據(jù)。調(diào)用后在my.onBLECharacteristicValueChange() 事件中接收數(shù)據(jù)返回。

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
serviceId String 藍牙特征值對應 service 的 uuid
characteristicId String 藍牙特征值的 uuid
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
characteristic Object 設(shè)備特征值信息

characteristic對象

藍牙設(shè)備characteristic(特征值)信息

名稱 類型 描述
characteristicId String 藍牙設(shè)備特征值的 uuid
serviceId String 藍牙設(shè)備特征值對應服務的 uuid
value Hex String 藍牙設(shè)備特征值的value

錯誤碼描述

error 描述
12 讀取數(shù)據(jù)失敗

示例代碼

my.readBLECharacteristicValue({
  deviceId: deviceId,
  serviceId: serviceId,
  characteristicId: characteristicId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.notifyBLECharacteristicValueChange

啟用低功耗藍牙設(shè)備特征值變化時的 notify 功能。注意:必須設(shè)備的特征值支持notify才可以成功調(diào)用,具體參照 characteristic 的 properties 屬性 另外,必須先啟用notify才能監(jiān)聽到設(shè)備 characteristicValueChange 事件。

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
serviceId String 藍牙特征值對應 service 的 uuid
characteristicId String 藍牙特征值的 uuid
descriptorId String notify 的 descriptor 的 uuid (只有android 會用到,非必填,默認值00002902-0000-10008000-00805f9b34fb)
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

錯誤碼描述

error 描述
12 啟動失敗

示例代碼

my.notifyBLECharacteristicValueChange({
  deviceId: deviceId,
  serviceId: serviceId,
  characteristicId: characteristicId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.getBLEDeviceServices

獲取藍牙設(shè)備所有 service(服務)

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
services Array 設(shè)備service 對象列表,詳見下表特征值信息

service對象

藍牙設(shè)備service(服務)信息

名稱 類型 描述
serviceId String 藍牙設(shè)備服務的 uuid
isPrimary Boolean 該服務是否為主服務

錯誤碼描述

error 描述
12 獲取失敗

示例代碼

my.getBLEDeviceServices({
  deviceId: deviceId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.getBLEDeviceCharacteristics

獲取藍牙設(shè)備所有 characteristic(特征值)

入?yún)?/a>

名稱 類型 必填 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
serviceId String 藍牙特征值對應 service 的 uuid
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
characteristics Array 設(shè)備特征值列

characteristic對象

藍牙設(shè)備 characteristic (特征值)信息

名稱 類型 描述
characteristicId String 藍牙設(shè)備特征值的 uuid
serviceId String 藍牙設(shè)備特征值對應服務的 uuid
value Hex String 藍牙設(shè)備特征值對應的16進制值
properties Object 該特征值支持的操作類型

properties 對象

名稱 類型 描述
read boolean 該特征值是否支持 read 操作
write boolean 該特征值是否支持 write 操作
notify boolean 該特征值是否支持 notify 操作
indicate boolean 該特征值是否支持 indicate 操作

錯誤碼描述

error 描述
12 獲取失敗

示例代碼

my.getBLEDeviceCharacteristics({
  deviceId: deviceId,
  serviceId: serviceId,
  success: (res) => {
    console.log(res)
  },
  fail:(res) => {
  },
  complete: (res)=>{
  }
});

my.onBluetoothDeviceFound

尋找到新的藍牙設(shè)備時觸發(fā)此事件。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
devices Array 新搜索到的設(shè)備列表

device對象

名稱 類型 描述
name String 藍牙設(shè)備名稱,某些設(shè)備可能沒有
deviceName(兼容舊版本) String 值與 name 一致
localName String 廣播設(shè)備名稱
deviceId String 設(shè)備 Id
RSSI Number 設(shè)備信號強度
advertisData Hex String 設(shè)備的廣播內(nèi)容

示例代碼

my.onBluetoothDeviceFound({
  success: (res) => {
    console.log(res);
  }
});

my.offBluetoothDeviceFound

移除尋找到新的藍牙設(shè)備事件的監(jiān)聽。

示例代碼

my.offBluetoothDeviceFound();

my.onBLECharacteristicValueChange

監(jiān)聽低功耗藍牙設(shè)備的特征值變化的事件。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
serviceId String 藍牙特征值對應 service 的 uuid
characteristicId String 藍牙特征值的 uuid
value Hex String 特征值最新的16進制值

示例代碼

my.onBLECharacteristicValueChange({
  success: (res) => {
    console.log(res);
  }
});

my.offBLECharacteristicValueChange

移除低功耗藍牙設(shè)備的特征值變化事件的監(jiān)聽。

示例代碼

my.offBLECharacteristicValueChange();

my.onBLEConnectionStateChanged

監(jiān)聽低功耗藍牙連接的錯誤事件,包括設(shè)備丟失,連接異常斷開等。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
deviceId String 藍牙設(shè)備 id,參考 device 對象
connected Boolean 連接目前的狀態(tài)

示例代碼

my.onBLEConnectionStateChanged({
  success: (res) => {
    console.log(res);
  }
});

my.offBLEConnectionStateChanged

移除低功耗藍牙連接的錯誤事件的監(jiān)聽。

示例代碼

my.offBLEConnectionStateChanged();

my.onBluetoothAdapterStateChange

監(jiān)聽本機藍牙狀態(tài)變化的事件。

入?yún)?/a>

名稱 類型 必填 描述
success Function 調(diào)用成功的回調(diào)函數(shù)
fail Function 調(diào)用失敗的回調(diào)函數(shù)
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回值

名稱 類型 描述
available Boolean 藍牙模塊是否可用
discovering Boolean 藍牙模塊是否處于搜索狀態(tài)

示例代碼

my.onBluetoothAdapterStateChange({
  success: (res) => {
    console.log(res);
  }
});

my.offBluetoothAdapterStateChange

移除本機藍牙狀態(tài)變化的事件的監(jiān)聽。

示例代碼

my.offBluetoothAdapterStateChange();

錯誤碼

錯誤碼 說明
10000 未初始化藍牙適配器
10001 當前藍牙適配器不可用
10002 沒有找到指定設(shè)備
10003 連接失敗
10004 沒有找到指定服務
10005 沒有找到指定特征值
10006 當前連接已斷開
10007 當前特征值不支持此操作
10008 其余所有系統(tǒng)上報的異常
10009 Android 系統(tǒng)特有,系統(tǒng)版本低于 4.3 不支持BLE
10010 沒有找到指定描述符
10011 設(shè)備 id 不可用/為空
10012 服務 id 不可用/為空
10013 特征 id 不可用/為空
10014 發(fā)送的數(shù)據(jù)為空或格式錯誤
10015 操作超時
10016 缺少參數(shù)
10017 寫入特征值失敗
10018 讀取特征值失敗10001

常見的藍牙調(diào)用流程

常見的支付寶小程序藍牙調(diào)用流程

常見問題

  1. 支持版本 android4.3以上支持ble
  2. ios6以上都支持
  3. deviceId,android取到的是藍牙的mac地址(11:22:33:44:55:66),ios取到的是UUID(00000000-0000-0000-0000-000000000000這種格式)
  4. 調(diào)startBluetoothDevicesDiscovery接口搜索不到設(shè)備,請確保設(shè)備發(fā)出了廣播。如果接口中有傳入services,請確保設(shè)備的廣播內(nèi)容中包含了service的UUID
  5. 連接設(shè)備失敗,請確認傳入的deviceId是否正確,以及設(shè)備發(fā)出的信號是否足夠強,在信號弱的時候可能會出現(xiàn)連接不上的情況
  6. 寫數(shù)據(jù)失敗,查看傳入的deviceId、serviceId、characteristicId格式是否正確,deviceId是否已連接上(onBLEConnectionStateChanged這個事件中可以監(jiān)聽連接狀態(tài)變化,getConnectedBluetoothDevices這個方法可以拿到),確保是在連接狀態(tài)下調(diào)寫入方法,查看characteristicId是否屬于這個service,以及這個特征值是否支持寫
  7. 讀數(shù)據(jù)失敗,同上,查看這個特征值是否支持讀
  8. 收不到數(shù)據(jù)通知,請確認調(diào)了notifyBLECharacteristicValueChange這個方法以及傳入的參數(shù)是否正確,傳入的characteristicId特征值是否支持notify或indicate,以及確認硬件是否發(fā)出了通知。注意調(diào)用notifyBLECharacteristicValueChange方法的以及注冊onBluetoothDeviceFound事件的順序,最好是在連接之后就調(diào)用notifyBLECharacteristicValueChange方法。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號