4

最近我试图让一个配对过程以编程方式工作,我成功了。但我最近发现我的应用程序的用户可以连接到几个“有趣”的设备。所以我必须提示用户选择要连接的设备

所以我必须将用户连接到已经配对的蓝牙设备。但我的努力都没有奏效。我尝试使用以下命令再次运行配对过程:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

还有以下内容:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);

这是我已经实现的方法,也是将手机与嵌入式蓝牙设备配对的唯一有效方法

所以我的问题是:

  • 我可以断开配对设备然后连接到另一个嵌入式设备吗?我试过..简单地连接到新设备,但我无法让它工作
4

1 回答 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
    }

为了提示用户选择哪个设备,您可以查询所有当前配对设备的蓝牙适配器,如下所示:

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

最后,可以同时创建与多个设备的连接——请看这里:Android 蓝牙 API 连接到多个设备

于 2011-07-20T10:22:07.250 回答