4

我们正在使用 iOS 私有框架 BluetoothManager 进行一个简单的实验——寻找可发现的通用(非 iOS)BT 设备。现在,只有以下行返回设备:

for(BluetoothDevice* device in [[BluetoothManager sharedInstance] pairedDevices])

不幸的是,它只返回已经配对的设备,这不是我们想要的。使用connectingDevices而不是pairedDevices根本不会返回任何设备。那么,我们必须具备哪些选项才能检测到任何触手可及的蓝牙设备呢?我不认为我可以使用 GameKit,因为我想发现非 iOS 设备。

欢迎任何建议。

4

3 回答 3

3

您需要使用BluetoothManager 开启蓝牙,然后开启对远程设备的蓝牙扫描。

注册通知回调后,您将获得发现的设备。通知对象实际上是一个指向 BluetoothDevice 对象的指针。

获取 BluetoothDevice 对象指针,从那里您可以获取名称、地址或连接到远程设备。

这里没有RSSI,你可以通过查看BluetoothDevice.h文件看到完整的方法列表。

我在这里写了一个完整的示例,与 iOS 5.1 兼容:http ://www.pocketmagic.net/?p=2827

祝你好运!

于 2012-07-16T20:53:16.787 回答
3

几天来我一直在搞乱私有框架,获取附近设备的列表非常简单。

首先,您必须使用以下命令启用设备扫描:

[[BluetoothManager sharedInstance] setDeviceScanningEnabled:YES];

如果范围内有设备,它将开始向通知中心发布BluetoothDeviceDiscoveredNotification通知。订阅这些,传递给回调的 NSNotification 中的对象将是BluetoothDevice*类型。

我确定 BluetoothManager 将任何发现的设备存储在某处,但我只是将所有内容都放入我自己的 NSMutableArray 中。

不幸的是,我还没有弄清楚如何使用私有 API 与设备实际配对。

于 2011-12-08T20:15:40.813 回答
-2

作为 GameKit 框架一部分的GKSession类是您正在寻找的,因为它提供了使用蓝牙发现并连接到附近的 iOS 设备的能力。

于 2011-06-29T12:15:21.993 回答