如何在android中以编程方式配对蓝牙设备列表?

时间:2017-02-08 09:21:13

标签: java android bluetooth

我需要以编程方式连接蓝牙启用的Android设备的列表(多个)。我获得了启用蓝牙的设备数量并将其排序在列表中,同时尝试将其与第一个设备配对并且循环结束。

 if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                pairAllDevice(mDeviceList);
                showToast("finished");
                display();

            }
 private void pairAllDevice(ArrayList<BluetoothDevice> data)
    {
        if(!pairedDevice.isEmpty()) {
            pairedDevice.clear();
        }

        for(int i=0;i<data.size();i++)
        {
            pairDevice(data.get(i));
        }
    }

这是配对的功能

private void pairDevice(BluetoothDevice device) {
    try {
        Method method = device.getClass().getMethod("createBond", (Class[]) null);
        method.invoke(device, (Object[]) null);
        pairedDevice.add(device);


    } catch (Exception e) {
        Log.e("error","connecting");
        e.printStackTrace();
    }
}

我已经实现了隐式配对,所以我在另一端的应用程序得到自动配对,但是现在它仅适用于列表中的一个设备..

1 个答案:

答案 0 :(得分:0)

createBond方法不会抛出异常,它只是在立即错误时返回false。但是,如果它确实返回,它仍然不意味着粘合过程是成功的。您应该注册ACTION_BOND_STATE_CHANGED,看看是否从那里获得任何值(然后才将设备添加到列表中)。

此外,在您的代码中,您不必在创建新的绑定过程之前等待绑定过程在一个设备上完成。我不确定这是否是android无法处理的东西,但如果我是你,我会在开始新的之前等待一个绑定过程完成