我需要创建一个函数,通过循环从缓冲区读取通过蓝牙接收的字符串,这是我到目前为止所做的,但它不起作用,如果我使用 while 循环它只会卡在循环中,也许我错过了正确的条件。
private suspend fun getmeData(){
var bytes :Int
val buffer: ByteArray = ByteArray(1024)
var readMessage : String = ""
if (m_isConnected ) {
try {
while(){
//read bytes received and ins to buffer
bytes =_bluetoothSocket!!.inputStream.read(buffer)
//convert to string
readMessage = readMessage + String(buffer, 0,bytes)
}
} catch (ex: Exception) {
ex.printStackTrace()
}
} else {
val toast = Toast.makeText(
contesto, "Non connesso",
Toast.LENGTH_LONG
)
toast.show()
}
}
最佳答案
嗨,伙计们,在与一位同事进行有趣的对话后,我找到了解决方案,“try”代码中的 while 条件必须是这样的,因为我收到的字符串包含一个结束字符串符号
while (!(readMessage.contains(';'))){
/*my code*/
}
感谢大家的努力! <3
关于android - 如何在kotlin中通过蓝牙接收字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64403968/