Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在iOS中测量蓝牙信号强度吗?_Ios_Objective C_Iphone_Bluetooth - Fatal编程技术网

我可以在iOS中测量蓝牙信号强度吗?

我可以在iOS中测量蓝牙信号强度吗?,ios,objective-c,iphone,bluetooth,Ios,Objective C,Iphone,Bluetooth,我可以测量iPhone范围内蓝牙设备的信号强度吗 基本上,我想做的是扫描范围内的设备列表,然后看看哪一个具有最高的信号强度 在iOS中可能吗?如果可能,我将如何做 是的,有一种方法可以测量蓝牙低能量(4.0)的信号强度,它是RSSI编号。扫描外围设备时,将标记CBCentralManagerScanOptionAllowDuplicatesKey设置为YES,如下所示: NSDictionary * dictionary = [NSDictionary dictionaryWithObjects

我可以测量iPhone范围内蓝牙设备的信号强度吗

基本上,我想做的是扫描范围内的设备列表,然后看看哪一个具有最高的信号强度


在iOS中可能吗?如果可能,我将如何做

是的,有一种方法可以测量蓝牙低能量(4.0)的信号强度,它是RSSI编号。扫描外围设备时,将标记CBCentralManagerScanOptionAllowDuplicatesKey设置为YES,如下所示:

NSDictionary * dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil];

// Start scanning for peripherals
[cmanager scanForPeripheralsWithServices:nil options:dictionary];
如果你想看到RSSI号码在不编写任何代码的情况下工作,你应该在iTunes中查看该应用程序。当您连接到外围设备时,它会在连接时每秒向您显示更新的RSSI编号。

请查看:

这就是你要找的。免责声明:核心蓝牙仅适用于蓝牙4 LE


如果确切的范围无关紧要,但您对扫描一般可用的设备感兴趣,您可以查看github项目,它允许您扫描周围的所有蓝牙设备(不仅仅是蓝牙设备)。再次声明:我是BeeTee的作者

当您使用CBCentralManager编写“中央”代码时,您最终将连接到您要查找的CBCentralManager外围设备。连接到外围设备后,保留对它的引用,将对象设置为外围设备的委托,并在外围设备上调用“”。如果您编写了一个调用“readRSSI”的方法,您将得到一个委托回调,您可以使用

此问题的另一个建议答案是在扫描时提供“允许重复”键。字典键的文档在传递到时表示“禁用此过滤可能会对电池寿命产生不利影响,只有在必要时才应使用”

如果选择编写延迟调用,则可以调整调用频率,以帮助管理对用户电池的影响

- (void)centralManager:(CBCentralManager *)central 
 didDiscoverPeripheral:(CBPeripheral *)peripheral 
     advertisementData:(NSDictionary *)advertisementData 
                  RSSI:(NSNumber *)RSSI
{ ... }