Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在螺纹中打开插座并返回整个插座?_Android_Multithreading_Bluetooth - Fatal编程技术网

Android 在螺纹中打开插座并返回整个插座?

Android 在螺纹中打开插座并返回整个插座?,android,multithreading,bluetooth,Android,Multithreading,Bluetooth,也许有人能告诉我怎么做 我目前有一个Android应用程序,当我选择一个数据记录并点击Send时,它会通过蓝牙createRfcommSocketToServiceRecord发送一条短消息。代码如下所示 mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); if(mmSocket.isConnected()) { mmSocket.close(); }

也许有人能告诉我怎么做

我目前有一个Android应用程序,当我选择一个数据记录并点击Send时,它会通过蓝牙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时将我的应用程序连接到freez。因此,在我看来,在线程中创建蓝牙套接字应该没有问题,我必须返回mmSocket连接,以便以后使用它。这是正确的方法吗?如果是的话,我怎样才能在不等待主进程中的线程的情况下从tread返回mmSocket对象呢


非常感谢:

您可以使用套接字在类中创建一个静态字段,并从主线程访问它