如何以编程方式判断蓝牙设备是否已连接?

如何以编程方式判断蓝牙设备是否已连接?

我知道如何获得成对设备的列表,但如何判断它们是否相连?

这必须是可能的,因为我看到他们列在我的手机的蓝牙设备列表,并说明他们的连接状态。


慕后森
浏览 571回答 3
3回答

墨色风雨

在你的仙女座宣言中加入蓝牙许可,<uses-permission&nbsp;android:name="android.permission.BLUETOOTH"&nbsp;/>然后使用意图筛选器侦听ACTION_ACL_CONNECTED,&nbsp;ACTION_ACL_DISCONNECT_REQUESTED,和ACTION_ACL_DISCONNECTED广播:public&nbsp;void&nbsp;onCreate()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;IntentFilter&nbsp;filter&nbsp;=&nbsp;new&nbsp;IntentFilter(); &nbsp;&nbsp;&nbsp;&nbsp;filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); &nbsp;&nbsp;&nbsp;&nbsp;filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); &nbsp;&nbsp;&nbsp;&nbsp;filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); &nbsp;&nbsp;&nbsp;&nbsp;this.registerReceiver(mReceiver,&nbsp;filter);}//The&nbsp;BroadcastReceiver&nbsp;that&nbsp;listens&nbsp;for&nbsp;bluetooth&nbsp;broadcastsprivate&nbsp;final&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;BroadcastReceiver&nbsp;mReceiver&nbsp;=&nbsp;new&nbsp;BroadcastReceiver()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onReceive(Context&nbsp;context,&nbsp;Intent&nbsp;intent)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;action&nbsp;=&nbsp;intent.getAction(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BluetoothDevice&nbsp;device&nbsp;=&nbsp;intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(BluetoothDevice.ACTION_FOUND.equals(action))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;//Device&nbsp;found &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(BluetoothDevice.ACTION_ACL_CONNECTED.equals(action))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;//Device&nbsp;is&nbsp;now&nbsp;connected &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;//Done&nbsp;searching &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;//Device&nbsp;is&nbsp;about&nbsp;to&nbsp;disconnect &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;//Device&nbsp;has&nbsp;disconnected &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}};几个注意事项:无法在应用程序启动时检索已连接设备的列表。蓝牙API不允许您查询,而是允许您侦听更改。解决上述问题的一个棘手的工作就是检索所有已知/配对设备的列表.然后尝试连接到每一个(以确定您是否已连接)。或者,您可以让后台服务监视蓝牙API,并将设备状态写入磁盘,以便应用程序稍后使用。

紫衣仙女

在我的用例中,我只想看看蓝牙耳机是否连接到VoIP应用程序。以下解决方案对我有效:public&nbsp;static&nbsp;boolean&nbsp;isBluetoothHeadsetConnected()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;BluetoothAdapter&nbsp;mBluetoothAdapter&nbsp;=&nbsp;BluetoothAdapter.getDefaultAdapter(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mBluetoothAdapter&nbsp;!=&nbsp;null&nbsp;&&&nbsp;mBluetoothAdapter.isEnabled() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&&&nbsp;mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET)&nbsp;==&nbsp;BluetoothHeadset.STATE_CONNECTED;}当然,你需要蓝牙许可:<uses-permission&nbsp;android:name="android.permission.BLUETOOTH"&nbsp;/>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android