2013-03-19 89 views
0

我正在寫一個應用程序(在Android上)從藍牙設備讀取RSSI,以使用rssi指紋進行位置識別。我有工作代碼,用於從非配對和可發現的非BT4.0/BLE藍牙設備讀取RSSI。我想知道如果我得到一些基於BLE的標籤(例如stick-n-find),我是否可以通過將自己(我的android手機準確地)放入bt-discovery模式來閱讀RSSI。來自藍牙低功耗(BLE)標籤的RSSI?

回答

2

在低能耗BT中,角色已切換。 The Stick-n-find將會是廣告它的服務名稱或其他信息。當您從iOS應用接收到該廣告時,您將獲得該廣告的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]; 
+0

我真的很感謝你描述工作流程,甚至提供了iOS代碼。我們還沒有嘗試過iOS,但很想知道這是如何在Android 4.2的Bluedroid棧中編碼的。 – Bill 2013-03-20 10:48:11

0

從我所收集,一些Android手機廠商可能包括BLE的支持,但它目前不直接支持Android(從4.2版本開始)。有關更多信息,請參閱Issue 33371

看起來BLE可能會在下一個Android版本中出現,暗示在this Google Groups discussion