0

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

4

2 回答 2

2

在 BT Low Energy 中,角色互换了。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];
于 2013-03-20T08:17:17.883 回答
0

据我所知,一些 Android 手机制造商可能包含 BLE 支持,但目前 Android 不直接支持(截至 4.2 Jellybean)。有关详细信息,请参阅问题 33371

看起来 BLE 可能会出现在这个 Google Groups 讨论中的下一个 Android 版本中。

于 2013-05-10T18:59:03.793 回答