蓝牙设备连接/断开连接时如何广播?

8
我希望能够在特定蓝牙设备连接时启动服务,并在其断开连接时停止此服务。显然,我不想一直拥有后台服务来检查BT设备是否已连接,因此我想通过接收器实现这一点。
这是否实际可行?在这里提到了android.bluetooth.device.action.ACL_CONNECTED,但显然它没有起作用。
谢谢!
1个回答

19
<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>

这些是您需要在广播接收器中添加的过滤器。

ACL_CONNECTED 表示蓝牙已连接,而 ACL_DISCONNECTED 表示蓝牙断开连接。

对于特定设备,您需要检查广播接收器中的意图/上下文。

您需要添加的两个权限是:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />

我认为这应该解决了你的问题。


好的,谢谢!我以为ACL_CONNECTED只适用于音频设备^^ - Force
以防万一有人在使用这段代码,如果用户关闭了蓝牙,ACL_DISCONNECT_REQUESTED和ACL_DISCONNECTED将不会被调用! - Force
1
是的,它并不会自动调用(根据我在代码中的使用方式),只有在数据通过蓝牙传输时以及停止传输时才会调用,但您必须使用蓝牙代码来检查蓝牙是否已关闭或打开。 - Abhinav Singh Maurya
我的问题是在连接设备期间触发了此事件!!我该怎么办? - Fakher
请澄清您的问题,我建议单独发布一个问题,这样它可以被更多人看到。 - Abhinav Singh Maurya
不需要权限android.permission.BLUETOOTH_ADMIN。请查看文档:https://developer.android.com/reference/android/bluetooth/BluetoothDevice。 - pr0gg3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接