iPhone の範囲内にある Bluetooth デバイスの信号強度を測定できますか?
基本的に私がやりたいことは、範囲内のデバイスのリストをスキャンして、どのデバイスが最も信号強度が高いかを確認することです。
iOSでそれは可能ですか?もしそうならどうすればいいですか?
iPhone の範囲内にある Bluetooth デバイスの信号強度を測定できますか?
基本的に私がやりたいことは、範囲内のデバイスのリストをスキャンして、どのデバイスが最も信号強度が高いかを確認することです。
iOSでそれは可能ですか?もしそうならどうすればいいですか?
はい、Bluetooth Low Energy (4.0) の信号強度を測定する方法があります。これは RSSI 番号です。周辺機器をスキャンするときは、以下に示すようにフラグ CBCentralManagerScanOptionAllowDuplicatesKey を YES に設定します。
NSDictionary * dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil];
// Start scanning for peripherals
[cmanager scanForPeripheralsWithServices:nil options:dictionary];
コードを記述せずに RSSI 番号が機能することを確認したい場合は、iTunesのアプリLightBlueをチェックしてください。周辺機器に接続すると、接続時に毎秒更新された RSSI 番号が表示されます。
CoreBluetoothのドキュメントをご覧ください。
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{ ... }
RSSIはあなたが探しているものです。免責事項: Core Bluetooth は、Bluetooth 4 LE 専用に作られています。
正確な範囲は重要ではないが、一般的に利用可能なデバイスのスキャンに関心がある場合は、github プロジェクトBeeTeeを参照してください。これにより、(Bluetooth LE だけでなく) 周囲のすべての Bluetooth デバイスをスキャンできます。再度免責事項: 私は BeeTee の作成者です。;-)