1

我整天都在为此挠头。我有一个监听设备的蓝牙套接字。这是通过 AsyncTask 完成的。第一次尝试从远程设备连接到它时,我没有任何问题。现在我正在尝试模拟断开连接。通过超出范围,关闭远程设备的蓝牙适配器,或者只是远程关闭连接。现在,当连接丢失时,服务器套接字会抛出 IOException。我以此为线索重新启动 AsyncTask 并再次开始收听。这似乎工作正常,我所有的 logcat 消息都在重新启动时显示,所以我知道任务正在运行,但套接字不会接受连接。认为这可能是重新启动 AsyncTask 的问题,我尝试在连接被接受后立即转储连接。重置它们后,

这是我现在用来测试的一些代码:

boolean running = true;
        while(running){
            btAdapter = BluetoothAdapter.getDefaultAdapter();
            btServerSocket = btAdapter.listenUsingRfcommWithServiceRecord(NAME, ID);
            btSocket = btServerSocket.accept();

            btServerSocket.close();
            btSocket.close();

            btServerSocket = null;
            btSocket = null;
            btAdapter = null;

            System.gc();
            sleep(10);
        }

我真的不知道我做错了什么。任何帮助是极大的赞赏。

谢谢。

4

1 回答 1

0

如果您只在 Android 2.3.x 上看到此问题,您可能会遇到我刚刚在另一个问题上写过的问题。该问题还表现为 accept() 第一次工作,但随后在连续尝试中失败。有关详细信息,请参阅我的帖子

于 2013-10-02T02:05:09.397 回答