Android - 如何关闭被杀死程序打开的蓝牙套接字/端口

时间:2014-03-27 16:12:50

标签: java android sockets bluetooth port

我的产品出现问题,我的产品有一个带根的平板电脑(iball 3G 7271,在4.1.2上运行),它试图与RN42蓝牙模块进行通信。根据我的项目要求,android应用程序,启动与RN42的BT连接必须具备以下功能:

  1. 远程更新
  2. 如果它崩溃,应重新启动。这些功能 已被编码并找到了工作。
  3. 然而,正如您所知,在这两种情况下,蓝牙连接都会中断和丢失,并且必须在平板电脑和RN42之间重新建立。

    我面临的问题是,当通过蓝牙连接到RN42的应用程序(根据情况1或情况2更新/重新启动)使蓝牙插座/端口处于连接/打开状态本身时,新应用程序分别重新安装/重新启动。为了重新安装/重新启动应用程序,当它启动与RN42的蓝牙连接时,设备操作系统会为其分配一个新的蓝牙套接字/端口(而不是旧的蓝牙套接字/端口,因为它是仍然被占领)。但经过几次重新安装/重启(确切地说是20次)之后,设备会耗尽任何可用的套接字端口,它可以分配给应用程序,我会重复异常,说明'连接未创建(失败或中止) “

    有没有办法可以关闭应用程序在重新安装/重启之前保持打开的蓝牙套接字/端口?

1 个答案:

答案 0 :(得分:0)

我遇到了不同BT芯片组(主要来自低成本平板电脑)的问题,通过.enable()或.disabled()来打开/关闭蓝牙适配器。

请注意,这是一个坏主意,不好的做法,但在我的模型范围内,它对调试很有用:)

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();        
mBluetoothAdapter.disable();
while(mBluetoothAdapter.isEnabled());
mBluetoothAdapter.enable();
while(!mBluetoothAdapter.isEnabled());