gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:23:04 26 4
gpt4 key购买 nike

AirPods 和 iPhone 似乎可以在非常敏感的层面上进行交流。将 AirPods 移动到靠近设备的位置(1 英尺远)会触发 iPhone 使用react。

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

最佳答案

他们曾经有一些额外的措施来找出距离。正如 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 读数不是很稳定,高度依赖于环境

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

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

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

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

TxPower 通常称为发射功率


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

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

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

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

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

enter image description here

如果您遮住信标(例如,有人挡在您和信标之间),RSSI 会下降。也就是说,您仍处于相同的距离,但 RSSI 下降了 — 因此,如果您根据 RSSI 进行距离估计,则距离会上升,而无需移动一英寸。

上述许多解释都来自其他网站。

希望它能满足您的需求!

关于ios - iOS如何检测类似Airpods的蓝牙信号强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com