与首选的蓝牙设备建立连接后,我会监听并等待一些不请自来的数据。定期在随机的时间间隔从设备发射数据。
val charUUID = UUID.fromString("49535343-1e4d-4bd9-ba61-23c647249616")
scanResult.bleDevice!!.establishConnection(false) ?
.doOnNext {
_ ->
Log.d("Device: ", "Retrieving Shot Count")
} ?
.flatMapSingle {
rxBleConnection ->
charUUID ? .let {
rxBleConnection.readCharacteristic(charUUID)
}
} ? .subscribe({
count ->
println("SUCCESS: ${count.toHexString()}")
// Update UI asynchronously with new count
}, {
throwable ->
Log.d("ERROR: ", "$throwable")
})
fun ByteArray.toHexString() : String {
return this.joinToString("") {
java.lang.String.format("%02x", it)
}
}
原始输出:
I/System.out: SUCCESS: 0000000000
调试:
预期结果:
以下格式的字符串:datc999999
至datc000000
我可以将ByteArray正确转换为十六进制吗?也许我访问了错误的特征服务,或者数据传输存在其他问题。有什么想法吗?