【问题标题】:Connecting to a already paired Bluetooth device连接到已配对的蓝牙设备
【发布时间】:2011-07-20 09:58:14
【问题描述】:

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

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

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

还有以下内容:

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

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

所以我的问题是:

  • 我是否可以断开已配对的设备,然后连接到另一个嵌入式设备?我试过.. 只是连接到新设备,但我无法让它工作

【问题讨论】:

  • 不记得我是否解决了。但我记得我确实解决了它。将其标记为已回答

标签: android android-bluetooth pairing


【解决方案1】:

恐怕我不完全确定您的问题是什么。是否无法为已配对的蓝牙设备创建套接字?

首先,如果设备已经配对,则无需再次运行配对过程。您只需要创建用于通信的套接字,如果设备无法与之通信,它将失败。我最近一直在做一些事情,我使用了以下代码,对我来说效果很好:

    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 Bluetooth API connect to multiple devices

【讨论】:

  • 我想我的一个或多个问题很模糊。我已与设备配对,现在我想连接到它。我有一个嵌入式设备说它没有连接。但是,我的手机有一个已配对但未连接的设备。 getBondedDevices() 获取所有配对的设备。但是有没有办法查看我是否连接到设备?有没有办法获取套接字并断开它?
猜你喜欢
  • 2015-01-18
  • 1970-01-01
  • 2016-06-08
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多