【问题标题】:Bluetooth is still active on Samsung S4 after switching it off蓝牙关闭后三星 S4 上的蓝牙仍然处于活动状态
【发布时间】: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


    【解决方案1】:

    这是一个很奇怪的问题,你有没有尝试另一种方法来监控蓝牙的状态?我使用了 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>
    

    【讨论】:

    • 嗯,这是我在第 3 段中指出的选项 "...我知道如何注册事件...我可以添加代码以断开与受控设备的连接这样的事件......但这很奇怪......”。不是吗?
    猜你喜欢
    • 2013-01-27
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多