求教Android蓝牙与多个设备连接问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教Android蓝牙与多个设备连接问题相关的知识,希望对你有一定的参考价值。

参考技术A 蓝牙只能一个一个配对,但在开蓝牙热点的情况下可以和多个蓝牙连接,但有些安卓UI把这个功能阉割了,所以有些手机不能多连 参考技术B 小弟刚学了些蓝牙知识,得出的结论:蓝牙支持多个设备的配对,但是只支持一个蓝牙设备的连接,因为这种连接是p2p(点对点)……

与配对设备的蓝牙自动连接

【中文标题】与配对设备的蓝牙自动连接【英文标题】:Bluetooth Automatic Connection with Paired Devices 【发布时间】:2011-09-23 10:10:36 【问题描述】:

我是新来的,看了很多你的帖子,还是没有找到解决问题的办法。

我正在编写一个适用于 Android 2.2 的应用程序,使用蓝牙连接到终端设备。 我有一个配对设备列表,我可以将我的 Android 平板电脑与我已知的每台设备连接起来。

我想要做的是,一旦 Android 平板电脑(顺便说一下,整个通信中的主设备)检测到已知配对设备之一在范围内,就自动与终端设备连接。

一种可能性是不断轮询并尝试查看谁在我附近,但这会消耗大量电池寿命,并且如果我使用其中一个终端设备进入范围内并且我的 Android 平板电脑不在在轮询过程的中间,我不会获得自动连接;我必须等到下一个轮询周期。

这个问题有什么解决办法吗?

我希望整个事情都像 BT 耳机和我的得心应手一样工作:-/

感谢您的回答,希望我们能处理好!

【问题讨论】:

【参考方案1】:

我不确定这个解决方案是否有效。这个想法是获取所有配对的设备并循环通过它并尝试使用该设备的 MAC 地址进行连接

    String macAddress;     
    for (BluetoothDevice device : pairedDevices) 

    BluetoothSocket bluetoothSocket = null;
    try 
        if (bluetoothSocket == null || !bluetoothSocket.isConnected()) 
        bluetoothSocket = device.createRfcommSocketToServiceRecord(MYUUID);
        mBluetoothAdapter.cancelDiscovery();
        if(!bluetoothSocket.isConnected())
            bluetoothSocket.connect();
        
        if (bluetoothSocket.getInputStream() != null && bluetoothSocket.getOutputStream() != null) 
            macAddress = device.getAddress();
        
     

【讨论】:

以上是关于求教Android蓝牙与多个设备连接问题的主要内容,如果未能解决你的问题,请参考以下文章

android蓝牙:在多个连接的设备上读取远程RSSI

Android中的蓝牙连接与两台设备

通话过程如何与蓝牙设备配合使用?

Android 蓝牙 API 连接到多个设备

基于android studio3.0编写的蓝牙串口

Android 低功耗蓝牙BLE 开发注意事项