如何区分扫描响应从所有其他广告类型在Android.Bluetooth.LE (c#)



我对BLE相当陌生,所以请随身带着。我知道:

Bluetooth Low Energy:当扫描广告时,如何识别扫描响应?

但是我不知道如何深入研究像

这样的类
Android.Bluetooth.LE.ScanResult

为了弄清楚我是在处理SCAN_RSP还是其他东西

(或者ScanResult总是关于扫描响应而不是其他?)如果是这样的话,我们怎么能在Android上拦截所有其他类型的广告呢?

PS:为了更好地理解我的问题,在Windows世界中,类

Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementReceivedEventArgs

使得通过属性处理的消息类型非常清楚:

args.AdvertisementType

这个enum属性可以有以下类型:

BluetoothLEAdvertisementType.ScanResponse   <--- crystal clear!
BluetoothLEAdvertisementType.ConnectableDirected
BluetoothLEAdvertisementType.ScannableUndirected
BluetoothLEAdvertisementType.ConnectableUndirected
BluetoothLEAdvertisementType.NonConnectableUndirected

从应用程序的角度来看,传输的信息是'Advertising'还是'ScanResponse'数据包的一部分并不重要。两个包共享相同的格式,因此可以合并。

Android也这样做,因此在ScanResult类中合并两个数据包。此信息也可以在ScanResult.getScanRecord中找到。