Android 在螺纹中打开插座并返回整个插座?
也许有人能告诉我怎么做 我目前有一个Android应用程序,当我选择一个数据记录并点击Send时,它会通过蓝牙createRfcommSocketToServiceRecord发送一条短消息。代码如下所示Android 在螺纹中打开插座并返回整个插座?,android,multithreading,bluetooth,Android,Multithreading,Bluetooth,也许有人能告诉我怎么做 我目前有一个Android应用程序,当我选择一个数据记录并点击Send时,它会通过蓝牙createRfcommSocketToServiceRecord发送一条短消息。代码如下所示 mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); if(mmSocket.isConnected()) { mmSocket.close(); }
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时将我的应用程序连接到freez。因此,在我看来,在线程中创建蓝牙套接字应该没有问题,我必须返回mmSocket连接,以便以后使用它。这是正确的方法吗?如果是的话,我怎样才能在不等待主进程中的线程的情况下从tread返回mmSocket对象呢
非常感谢:您可以使用套接字在类中创建一个静态字段,并从主线程访问它