我对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中找到。