如何解决STATE_CONNECTED并不意味着它真的连接了吗?
如果我们看看this,它说:
还有getConnectedDevices()
的说明:
返回状态为
STATE_CONNECTED
的设备集
该方法的返回类型为List<BluetoothDevice>
,在我的情况下它返回多个。
一种用于galaxy Watch,一种用于galaxy Buds。
我知道该如何判断当前哪个人在活动。
当前使用的那个将在调用BluetoothHeadset.isAudioConnected()
时返回true。
因此,我在这里不问如何找到活动的蓝牙耳机设备。
我是想了解STATE_CONNECTED
的真正含义。
我认为这对其他人也很有用,因为有许多类似以下的答案,在某些情况下无法按预期进行:
public static boolean isConnected() {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
return bluetoothAdapter != null
&& bluetoothAdapter.isEnabled()
&& bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) == BluetoothProfile.STATE_CONNECTED;
}
如果您只想检查用户是否在通话,则此方法不合适。
这是因为打开蓝牙耳机并与智能手机同步后,用户的蓝牙耳机将立即变为STATE_CONNECTED
。
那么STATE_CONNECTED
到底是什么?
解决方法
根据文档,bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET)
返回BluetoothProfile.HEADSET
配置文件的当前连接状态。
如果手机的蓝牙适配器当前已连接到具有耳机配置文件的设备,则此呼叫返回BluetoothProfile.STATE_CONNECTED
。
这并不意味着用户当前正在使用耳机进行通话。这意味着耳机已准备就绪,可以处理与手机的通信。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。