RSSI от Bluetooth Low Energy (BLE) Метки?
Я пишу приложение (на Android) для чтения RSSI с устройств Bluetooth, для распознавания местоположения с помощью снятия отпечатков пальцев rssi. У меня есть рабочий код для чтения RSSI с непарных и обнаруживаемых устройств Bluetooth, которые не BT4.0/BLE. Я хотел бы знать, получу ли я некоторые основанные на BLE теги (такие как stick-n-find), смогу ли я прочитать их RSSI, только переведя себя (мой телефон на Android), в режим bt-discovery.
2 ответа
В BT Low Energy роли поменялись. 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];
Насколько я понимаю, некоторые производители телефонов Android могут включать поддержку BLE, но в настоящее время она не поддерживается Android напрямую (начиная с версии 4.2 Jellybean). Смотрите Issue 33371 для получения дополнительной информации.
Похоже, что BLE может появиться в следующей версии Android, как намекнуло в этом обсуждении групп Google.