很遗憾,我认为在API级别小于15的BluetoothDevice中没有好的方法来获取支持的UUID。我猜这就是为什么他们在API 15中添加了新功能。
请注意,来自BluetoothClass文档:
BluetoothClass用作大致描述设备的提示(例如在UI中显示图标),但不可靠地描述设备实际支持哪些蓝牙配置文件或服务。准确的服务发现是通过SDP请求完成的,当使用createRfcommSocketToServiceRecord(UUID)和listenUsingRfcommWithServiceRecord(String, UUID)创建RFCOMM套接字时会自动执行此操作。
因此,也许可以使用设备类作为提示,以了解在执行列出的函数之一之前将可用哪些服务。当然,检查类别并不会导致任何额外的蓝牙操作,所以这样做并不会有害。
请注意,服务类也可用(它是设备类的一部分),但这只是一个通用类,而不是特定服务的列表(如来自SDP)。