iOS如何检测类似于Airpods的蓝牙信号强度?

Posted

技术标签:

【中文标题】iOS如何检测类似于Airpods的蓝牙信号强度?【英文标题】:How can iOS detect bluetooth signal strength similar to Airpods? 【发布时间】:2017-07-18 17:28:10 【问题描述】:

AirPods 和 iPhone 似乎可以在非常敏感的层面上进行通信。将 AirPods 移动到靠近设备(1 英尺远)会触发 iPhone 做出反应。

iPhone 真的可以如此准确地检测蓝牙信号吗?我现在正在使用蓝牙,但我似乎无法达到这种信号灵敏度水平。

【问题讨论】:

确定使用RSSI。请参阅:***.com/questions/13705647/… 另外,请记住,AirPods 包含一个独特的 Apple 蓝牙芯片,允许配对“正常工作”。 我对 airpods 不熟悉,但 Apple 可能也在蓝牙中使用 nfc(或类似的东西)。 它可能已经完成了,不是在核心蓝牙框架级别,而是更接近与 W1 芯片通信的物理层。因此使用应用程序无法访问的射频信号信息。不仅仅是框架处理的 RSSI。 【参考方案1】:

他们曾经有一些额外的措施来找出距离。正如 cmets 中的 hotpaw2 所注意到的那样


快速解答 - Swift 4.2

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) 
if let power = advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double
   print("Distance is ", pow(10, ((power - Double(truncating: RSSI))/20)))
   


TL:DR;

影响RSSI的因素

RSSI 读数不太稳定且高度依赖环境

它也可能因多种因素而有所不同,包括感应/发射无线电的功率和灵敏度,以及环境因素(您在室内还是室外?附近有很多人吗?嘈杂的无线环境或不是,以此类推)。

然而,问题在于信标信号实际上是无线电波,可以被金属、墙壁、水等吸收。由于它们在常用的 2.4GHz 频段传输无线电信号,因此从信标接收到的信号强度会有所不同广泛因为干扰。

最常用的计算距离的公式之一是

d = 10 ^ ((TxPower - RSSI) / 20)

TxPower 通常称为发射功率


如何从 BLE 广告数据中获取 TxPower

txPower 值将在 BLE 广告数据中可用(仅当广播公司(外围设备)提供其 Tx 功率级别时才可用)。

根据苹果文档,CBAdvertisementDataTx 中 CBAdvertisementDataTxPowerLevelKey 的值

访问原始广告数据的委托方法

optional func centralManager(_ central: CBCentralManager, 
                 didDiscover peripheral: CBPeripheral, 
           advertisementData: [String : Any], 
                        rssi RSSI: NSNumber)

也可以使用BlueCap API访问

了解 AirPlay 比传统蓝牙的更多优势

https://www.cambridgeaudio.com/blog/airplay


RSSI 和距离

根据下图来自Link

如果您覆盖信标(例如,有人挡在您和信标之间),RSSI 会下降。也就是说,您仍然在相同的距离内,但 RSSI 下降了——因此,如果您根据 RSSI 估算距离,那么距离会上升,而您不会移动一英寸。

以上许多解释取自其他网站。

我希望它可以满足您的需求!

【讨论】:

所以...我们可以简单地在我们自己的应用程序中使用该公式吗?而我们将能够确定类似于 AirPods 的距离?我们如何在 ios 上获得 TXPower? @Saranjith 我正在使用上面的公式,但我没有得到有效的响应。 Lock 离我的设备很近,但它仍然给我 7000 左右的值。我们需要转换这个值吗?

以上是关于iOS如何检测类似于Airpods的蓝牙信号强度?的主要内容,如果未能解决你的问题,请参考以下文章

来自蓝牙信标的信号强度不一致 - Kontakt.io

如何在 iOS 中检测 wifi 或 3G 信号强度?

如何使用蓝牙信号强度计算两个安卓设备之间的距离?

降低 Android 设备上的蓝牙信号强度

蓝牙 LE 信号强度 Linux

如何看华强北AirPods破解iOS16盗版检测,可绕过假冒耳机提示?