连接到已配对的蓝牙设备

4
最近我尝试通过程序实现配对过程,并成功了。但是我最近发现,我的应用程序用户可能与多个“有趣”的设备连接。因此,我必须提示用户选择一个设备进行连接。
所以,我必须将用户连接到已经配对的蓝牙设备。但是我的所有努力都没有成功。我尝试再次运行配对过程,使用以下代码: tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 还有以下方式:
Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);

这是我实施并且能让我的手机与嵌入式蓝牙设备配对的唯一方式。
所以我的问题是:
我是否可以断开与一个已配对的设备的连接,然后连接到另一个嵌入式设备?我尝试过仅仅连接到新设备,但我无法使其工作。

不记得我是否解决了它。但是我记得我确实解决了它。虽然我会将其标记为已回答。 - Mazze
1个回答

2

很抱歉,我不太确定您的问题是什么。您是否无法创建与已配对的蓝牙设备的套接字?

首先,如果设备已经配对,您不需要再次运行配对过程。您只需要创建用于通信的套接字,如果设备无法进行通信,则会失败。我最近在处理一些相关的东西,我使用了以下代码,对我来说运行良好:

    try {
        Method m = device.getClass().getMethod("createRfcommSocket",
                new Class[] { int.class });
        BluetoothSocket mySocket = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));

    } catch (<VARIOUS EXCEPTIONS>) {
        //Do stuff
    }

为了提示用户选择哪个设备,您可以按以下方式查询BluetoothAdapter中所有当前配对的设备:

Set<BluetoothDevice> bondedDevices = BluetoothAdapter
            .getDefaultAdapter().getBondedDevices();

最后,现在可以同时连接多个设备 - 可以在这里查看:Android Bluetooth API connect to multiple devices


我想我的问题或问题不太清楚。我已经与一个设备配对,现在我想连接它。我有一个嵌入式设备,显示它没有连接。然而,我的手机上有一个已配对但未连接的设备。getBondedDevices()获取所有配对设备。但是有没有办法查看我是否连接到设备?有没有办法获取套接字并断开连接? - Mazze

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