2014-03-27 51 views
0

我一直在遇到一个问题,那就是我的产品有一个根植平板(iball 3G 7271,运行于4.1.2),它试图通信每个我的项目需求的RN42蓝牙module.As的Android应用程序,从而启动了BT连接到RN42必须具备的能力:Android - 如何关闭被杀程序打开的蓝牙插座/端口

  1. 进行远程更新
  2. 如果如果自己重新启动的情况下,crashes.Both这些功能 已被编码,并发现工作。

但是,正如您所知,在这两种情况下,蓝牙连接都会中断并丢失,并且必须在平板电脑和RN42之间重新建立连接。

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

有没有一种方法可以关闭在重新安装/重新启动之前应用程序保持打开的蓝牙插口/端口?

回答

0

我对不同的BT芯片组(主要是低成本平板电脑)存在这样的问题,并且通过.enable()或.disabled()打开/关闭蓝牙适配器完成了这项工作。

注意这是一个坏主意,坏的做法,但在我的实体模型的范围是有用的调试:)

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