也许有人可以告诉我该怎么做。
我目前有一个Android应用程序,当我选择一个数据记录并点击"发送"时,它通过蓝牙(createRfcommSocketToServiceRecord)发送短消息。代码看起来像这样
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
if(mmSocket.isConnected()) {
mmSocket.close();
}
mmSocket.connect();
OutputStream mmOutputStream = mmSocket.getOutputStream();
mmOutputStream.write(fullMsg.getBytes());
mmOutputStream.close();
mmSocket.close();
这有效,但在某种程度上是不可靠的。 mmSocket.connect()在超时时至少有50%的时间失败,我不认为蓝牙连接的另一端是问题所在。
所以我想在应用程序启动后立即尝试建立连接(或者只要另一个端点已经配对 - 就可以看到),但我不希望我的应用程序在运行时冻结.connect。因此,我必须在一个线程中运行蓝牙套接字(应该没问题),并且我必须返回mmSocket连接才能在以后使用它。这是正确的方法,如果是这样的话 - 如何在不等待主过程中的线程的情况下从胎面返回mmSocket对象。
非常感谢:)
答案 0 :(得分:1)
您可以使用套接字在类中创建一个静态字段,并从主线程
中获取它