Java蓝牙套接字重启后不接受连接

时间:2012-04-25 01:28:32

标签: java android sockets bluetooth listener

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

下面是我正在使用的一些代码来测试:

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);
        }

我真的不知道我做错了什么。非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

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