繁体   English   中英

蓝牙低功耗(BLE)标签的RSSI?

[英]RSSI from Bluetooth Low Energy (BLE) Tags?

我正在编写一个应用程序(在Android上)从蓝牙设备读取RSSI,用于使用rssi指纹识别进行位置识别。 我有工作代码,用于从非配对和可发现的非BT4.0 / BLE蓝牙设备读取RSSI。 我想知道如果我得到一些基于BLE的标签(例如stick-n-find)我只能通过将自己(我的Android手机精确)放入bt-discovery模式来读取他们的RSSI。

在BT低能量中,角色被切换。 Stick-n-find将广告它的服务名称或其他信息。 当您从iOS APP收到广告时,您将获得该广告的RSSI值。

所以做一些像:

@property (strong, nonatomic) CBCentralManager *CM;

#define SERVICE_ID_STR     "4d1dc300-424d-13e2-a661-0002a55dc51b"

self.CM = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber
   numberWithBool:NO] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
CBUUID *peripheralUUID = [CBUUID UUIDWithString:@SERVICE_ID_STR];
[self.CM scanForPeripheralsWithServices:[NSArray arrayWithObject:myUUID]
   options:scanOptions];

然后,当它从外围设备听到广告包时,你会得到

- (void)centralManager:(CBCentralManager *)central 
    didDiscoverPeripheral:(CBPeripheral *)peripheral 
    advertisementData:(NSDictionary *)advertisementData
    RSSI:(NSNumber *)RSSI {

你得到RSSI的地方。

如果您只想在第一次听到外围设备的情况下回复didDiscoverPeripheral,那么请不要使用ScanOptions

[self.CM scanForPeripheralsWithServices:[NSArray arrayWithObject:myUUID] options:nil];

根据我的收集,一些Android手机制造商可能包括BLE支持,但Android目前不支持它(截至4.2 Jellybean)。 有关详细信息,请参见问题33371

看起来BLE可能会出现在下一个Android版本中,正如Google Groups讨论中所暗示的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM