我正在写一个程序,该程序通过rfcomm与外部附件通讯。
我的问题是我不知道识别设备的正确方法是什么。
我现在做的方式是这样的:

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter
                .getBondedDevices();
        for (BluetoothDevice device : pairedDevices) {
            if (device.getName().equals(MY_DEVICE_NAME)) {
                this.myDevice = device;
                break;
            }
        }


但是,此方法依赖于设备的名称,在我看来这是肮脏和糟糕的:)
有一个更好的方法吗?
我尝试查看BluetoothDevice的所有方法,但似乎无济于事-名称真的是最好的方法吗?
我看到在某些地方,人们说我应该使用UUID,但这是在我拥有设备后用来打开设备的套接字的方法:

            _socket = myDevice.createRfcommSocketToServiceRecord(MY_UUID);


有更好的方法吗?

最佳答案

相同类型/功能和/或品牌的设备通常具有相似的名称。例如,所有RN-41 devices from Roving Networks都具有以下名称:

FireFly-XXXX


其中,XXXX是设备地址的后4位。这意味着您可以使用以下内容连接到其中任何一个:

        if (device.getName().startsWith("FireFly-")) {
            this.myDevice = device;
            break;
        }


这正是我在应用程序中所做的,并且没有找到任何更可靠/一致的方式来做到这一点。作为概括,如果您感兴趣的设备中的名称比上面的示例更复杂,则应该可以使用常规模式。

10-04 23:10
查看更多