关闭后,蓝牙在三星S4上仍处于活动状态

时间:2015-10-08 09:00:09

标签: android bluetooth android-bluetooth

我正在创建一个连接到蓝牙设备的应用程序,以便对其进行控制。当用户使用系统设置关闭蓝牙时,蓝牙堆栈会通知我的应用程序断开连接(调用BluetoothGattCallback.onConnectionStateChange())。

这在许多Android设备上都能正常运行(例如HTC Nexus 9 Android 5.1.1),但并非如此(例如Samsung S4)。在某些Android设备上,蓝牙连接仍然有效,连接的蓝牙设备仍可由我的应用程序控制。看起来系统实际上忽略了用户完成的设置。

我知道如何注册事件,由蓝牙适配器状态的更改触发,我可以添加代码以在此类事件上断开与受控设备的连接。但这很奇怪。我将不得不在代码中的许多位置考虑这种状态。如果用户通过系统设置UI这样做,我希望系统能够断开和关闭蓝牙,就像一些Andoid设备那样。

所以我的问题是。为什么系统在某些情况下不会按预期关闭蓝牙,并且有一种方法配置系统(或我的应用程序)以按预期运行。是否需要在涉及的对象(BluetoothDevice,BluetoothAdapter,...)中设置一些属性?

更多细节: 即使蓝牙已经在应用程序启动时关闭,应用程序也会通过蓝牙连接到设备,就像蓝牙从未停用一样。这种安全性也不是吗?

1 个答案:

答案 0 :(得分:0)

这是一个很奇怪的问题,您是否尝试过另一种方法来监控蓝牙的状态?我使用了ALC_DISCONNECT和ALC_CONNECTED的接收器,效果很好。

 <intent-filter> 
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
    <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" />
    <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>