BLE SDK封装了新大洲本田蓝牙协议的所有细节,业务模块(特别是module-vehicle)可以直接调用高级API,不需要了解:
// 在module-vehicle中
val bleService: BLEService = BLEServiceImpl(context)
// 扫描设备
bleService.startScan { device ->
if (device.name.startsWith("SDH-Smart")) {
// 连接设备
bleService.connect(device, object : ConnectCallback {
override fun onConnected() {
// 连接成功,进行握手
val userId = getUserID() // 16字节
val userType = BLEConstants.USER_TYPE_OWNER // 车主
bleService.handshake(userId, userType, object : HandshakeCallback {
override fun onSuccess() {
// 握手成功,可以发送指令了
}
override fun onFailed(error: String) {
// 握手失败
}
})
}
override fun onFailed(error: String) {
// 连接失败
}
override fun onDisconnected() {
// 连接断开
}
})
}
}
// 设防
bleService.sendAppControlCommand(
AppControlInstruction.SET_DEFENSE,
byteArrayOf(0x01), // 0x01=设防,0x00=撤防
object : CommandCallback {
override fun onResponse(response: BLEResponse) {
if (response.success) {
// 设防成功
}
}
override fun onTimeout() {
// 超时
}
override fun onError(error: String) {
// 错误
}
}
)
// 开启氛围灯,设置颜色RGB(255, 0, 0)
val colorData = byteArrayOf(0xFF.toByte(), 0x00, 0x00) // R, G, B
bleService.sendSystemControlCommand(
SystemControlInstruction.AMBIENT_LIGHT_COLOR,
colorData,
object : CommandCallback {
override fun onResponse(response: BLEResponse) {
// 处理响应
}
override fun onTimeout() { }
override fun onError(error: String) { }
}
)
bleService.queryVehicleInfo(object : CommandCallback {
override fun onResponse(response: BLEResponse) {
if (response.success && response.data != null) {
// 解析车辆信息(76字节数据)
val vehicleInfo = parseVehicleInfo(response.data!!)
}
}
override fun onTimeout() { }
override fun onError(error: String) { }
})
// 设置数据接收监听器
bleService.setDataReceivedListener(object : DataCallback {
override fun onDataReceived(data: ByteArray) {
// 解析实时数据(车辆状态、电池信息等)
val vehicleStatus = parseVehicleStatus(data)
}
})