app活动显示可用BLE设备列表,然后与所选设备连接(我看到通知等)。代码:
private static BluetoothAdapter mAdapter=null;
if(mAdapter == null);
mAdapter = BluetoothAdapter.getDefaultAdapter();
mAdapter.startLeScan((BluetoothAdapter.LeScanCallback)mContext);
它允许输入一个设备(如预期的那样)。但是,我无法正常断开连接。关闭应用程序时保留连接接缝。 LED指示连接保持打开状态,在应用程序的下一次运行时,可用设备列表很明显 - 断开连接我必须重新启动设备或电话。
我已尝试System. exit(0)
和private static BluetoothGatt mGatt; mGatt.disconnect();
并在Android设备监视器中停止应用程序实例(在主要活动的BACK按钮之后,顺便说一下 - 为什么它可能在那里 - 未注册的广播接收器?)。设备仍处于开启状态,在下一个应用程序启动时,可用设备列表为空(屏幕上不显示任何消息 - 通知等)。
如何正确重置BLE连接? 如果需要更多应用代码,我会添加它。
答案 0 :(得分:1)
从描述中发现的情况并不完全清楚。您看到了什么通知?您是如何构建和管理设备列表的?在什么条件下LED灯会在你的设备上开启?
无论如何,如果您之前没有调用它,几乎可以肯定您应该在mGatt.close()
或onDestroy()
中致电onPause()
。
是否按下后退按钮完成应用程序取决于它的设置方式,并且不一定意味着某些资源尚未发布,但它值得检查。它比一个我认为由系统处理的未注册广播接收器更有可能成为一个已经运行的服务(这并不意味着你不应该取消注册你的接收器)。
答案 1 :(得分:1)
断开连接与将BluetoothAdapter设置为空无关。
要从设备断开连接,您必须调用mGatt.close()
如果要在调用mAdapter.disable()
之后关闭蓝牙