从蓝牙插座读取

Posted

技术标签:

【中文标题】从蓝牙插座读取【英文标题】:Reading from Bluetooth socket 【发布时间】:2021-08-07 15:36:00 【问题描述】:

我在从蓝牙套接字读取时遇到问题。我创建了套接字:

private OutputStream outputStream;
private InputStream inStream;
socket=device.createRfcommSocketToServiceRecord(uuids[0].getUuid());
socket.connect();
outputStream = socket.getOutputStream();
inStream = socket.getInputStream();

建立连接后,我向蓝牙设备发送一些指令,之后我需要得到回复(答案总是相同的 5 个字节)。但有时当我这样做时:

byte[] packetBytes = new byte[5];
inStream.read(packetBytes);

应用程序冻结。 我尝试了 inputstream.available 并将其与以前的设备一起使用,但它总是会在这里返回 0。 我试着在阅读之前等待,但仍然没有。当我在 PC 上尝试相同的命令时,我得到了答案。

【问题讨论】:

【参考方案1】:

对于和我有同样问题的人。现在我使用的解决方案是一个新的线程,它不断地从输入套接字中读取 inStream.read(packetBytes);

当读取某些内容时,我们只需将其发送到我们的主线程进行处理。

【讨论】:

以上是关于从蓝牙插座读取的主要内容,如果未能解决你的问题,请参考以下文章

无需打开插座即可连接蓝牙设备

iPhone sdk 是不是支持 l2cap 蓝牙插座?

Android - 关闭特定的蓝牙插座

如何将 Android 应用程序正确连接到支持蓝牙的 Arduino 微控制器上的 RFCOMM 插座?

STM32单片机智能蓝牙APP定时开关插座喂食器药盒

德国左邻 Smart Rising-lowering Socket智能升降插座