UWB通信示例代码
Controller与Controlee(控制器与受控设备)
UWB通信在两个设备间发生,一个为控制器(Controller),其他为受控端(Controlee)。(此为FiRa标准中的定义,控制器负责测距流程的执行)
控制器决定complex channel(UwbComplexChannelUwbComplexChannelUwbComplexChannel,Qorvo的论坛反馈默认的使用信道5而非信道9),在两个设备之间共享。一个控制器可以与多个受控端工作,但受控端仅能与一个控制器通信。
通道选择(Channel selection)
对于测距中的受控端,必须识别控制器的local address和complex channel。
local address提供控制器设备的上下文,而complex channel提供测距会话的上下文。测距会话结束后,本地地址和复合信道都会轮换。
关于测距两端设备信息交互,在FiRa的标准中建议使用带外信道进行通信,通常建议使用BLE,以允许受控端了解控制器的本地地址和复合信道。
UWB API
要使用UWB API,需要执行以下步骤:
- 确保设备在Android 12或更高版本上运行(当前为Android 13)。
- 确保设备支持使用PackageManager#hasSystemFeature("android.hardware.uwb")
- 推荐:使用带外(OOB)机制发现支持UWB的对等设备,例如BluetoothScanner用于BLE扫描。
- 推荐:使用OOB机制(如BluetoothGattBLE GATT连接)交换本地设备的地址和对等设备的地址和复杂通道以用于会话。
- 如果用户想停止会话,取消会话的范围即可(cancel the scope of the session)。