BleDelegate

com.roumai.myodecoder.device.ble.BleDelegate

Overview

接口 BleDelegate 用于处理蓝牙连接、断开、数据传输等操作。

如果开发者需要继承该接口实现自定义的蓝牙连接过程(比如兼容 Windows 等其他平台时), 我们强烈建议开发者在继承该接口前深入了解关于低功耗蓝牙 BLE5.4 开发的相关知识。

Constructors

接口没有构造器,我们提供了一个默认的实例化类:BleDelegateDefaultImpl,该类针对 Android 做了特定实现和适配,可以开箱即用。

val device = // 从 MyoBleFinder 扫描到的任一设备
val delegate: BleDelegate = BleDelegateDefaultImpl(device)

Functions

#connect/0

连接设备。

返回值类型描述
Boolean连接是否成功
val success = delegate.connect()
if (success) {
  // 连接成功
}

#disconnect/0

断开设备连接。

返回值类型描述
Boolean断开是否成功
val success = delegate.disconnect()
if (success) {
  // 断开成功
}

#isConnected/0

判断设备是否已连接。

返回值类型描述
Boolean是否已连接
val connected = delegate.isConnected()
if (connected) {
  // 已连接
}

#read/1

读取特定 UUID 的特征值。

参数类型描述
keyBleDelegateKey目标描述符唯一 Key 值,包含 servicecharacteristic 的 UUID
返回值类型描述
ByteArray读取到的结果,以字节数组形式访问
// 该值在 MyoDecoder 项目中已被定义,开发者可以直接使用
val KEY_BATTERY = BleDelegateKey(
    service = ParcelUuid.fromString("0000180f-0000-1000-8000-00805f9b34fb"),
    characteristic = ParcelUuid.fromString("00002a19-0000-1000-8000-00805f9b34fb"),
)

val data = delegate.read(KEY_BATTERY)
// data == [78] // 78 即为电量值

#write/2

对特定服务下的特征进行写入操作。

参数类型描述
keyBleDelegateKey目标描述符唯一 Key 值,包含 servicecharacteristic 的 UUID
dataByteArray需要写入的数据
返回值类型描述
Boolean写入是否成功
val data = byteArrayOf(0x01, 0x02, 0x03)
val success = delegate.write(KEY_DEMO, data)
if (success) {
  // 写入成功
}

#subscribe/2

订阅特定服务下的特征,当特征值发生变化时会回调。

参数类型描述
keyBleDelegateKey目标描述符唯一 Key 值,包含 servicecharacteristic 的 UUID
callback(ByteArray) -> Unit回调函数
返回值类型描述
Boolean订阅是否成功
delegate.subscribe(KEY_EMG) { rawData ->
  Log.i(TAG, "EMG raw data: $rawData")
}

#unsubscribe/1

取消订阅特定服务下的特征。

参数类型描述
keyBleDelegateKey目标描述符唯一 Key 值,包含 servicecharacteristic 的 UUID
返回值类型描述
Boolean取消订阅是否成功
val success = delegate.unsubscribe(KEY_EMG)
if (success) {
  // 取消订阅成功
}

#rssi/0

获取当前设备的信号强度。

返回值类型描述
Int信号强度值(dBm)
val rssi = delegate.rssi()
Log.i(TAG, "RSSI: ${rssi}dBm")

#mtu/1

设置当前设备的最大传输单元(MTU)。

参数类型描述
mtuInt最大传输单元值(一般建议越大越好,常用设置为 500 左右)
返回值类型描述
Boolean设置是否成功
val success = delegate.mtu(502)
if (success) {
  // 设置成功
}

Advanced Example

FAQ