【问题标题】:Java Bluetooth Socket Wont Accept Connection after RestartJava蓝牙套接字在重新启动后不接受连接
【发布时间】:2012-04-25 01:28:31
【问题描述】:

我一整天都在摸索这个问题。我有一个监听设备的蓝牙套接字。这是通过 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);
        }

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

谢谢。

【问题讨论】:

    标签: java android sockets bluetooth listener


    【解决方案1】:

    如果您只在 Android 2.3.x 上看到此问题,那么您可能遇到了我刚刚在另一个问题上写过的问题。该问题还表现为 accept() 第一次工作,但随后在连续尝试中失败。详情见我的帖子here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 2016-04-30
      • 2019-12-11
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多