【发布时间】:2015-10-08 09:00:08
【问题描述】:
我正在创建一个连接到蓝牙设备以控制它的应用程序。当用户使用系统设置关闭蓝牙时,蓝牙堆栈会通知我的应用断开连接(调用 BluetoothGattCallback.onConnectionStateChange())。
这在许多 Android 设备(例如 HTC Nexus 9 Android 5.1.1)上都能正常工作,但并非在所有设备(例如三星 S4)上都能正常工作。在某些 Android 设备上,蓝牙连接仍然有效,并且连接的蓝牙设备仍然可以由我的应用程序控制。看起来系统实际上忽略了用户所做的设置。
我知道如何注册由蓝牙适配器状态更改触发的事件,并且我可以添加代码以在此类事件上断开与受控设备的连接。但这很奇怪。我将不得不在代码中的许多位置考虑这种状态。如果用户通过系统设置 UI 这样做,我希望系统断开并关闭蓝牙,就像某些 Andoid 设备一样。
所以我的问题是。为什么系统在某些情况下没有按预期关闭蓝牙,有没有办法配置系统(或我的应用程序)按预期运行。是否需要在相关对象(BluetoothDevice、BluetoothAdapter、...)上设置一些属性?
更多细节: 即使应用程序启动时蓝牙已经关闭,应用程序也会通过蓝牙连接到设备,就像蓝牙从未停用一样。这种安全问题也不是吗?
【问题讨论】:
标签: android bluetooth android-bluetooth