rssiフィンガープリントを使用した位置認識のために、BluetoothデバイスからRSSIを読み取るためのアプリ(Android上)を作成しています。BT4.0/BLEではないペアリングされていない検出可能なBluetoothデバイスからRSSIを読み取るための作業コードがあります。BLEベースのタグ(stick-n-findなど)を入手した場合、自分自身(正確にはAndroidフォン)をbt-discoveryモードにするだけでRSSIを読み取ることができるかどうかを知りたいです。
3091 次
2 に答える
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];
于 2013-03-20T08:17:17.883 に答える
0
私が収集したところによると、一部の Android 携帯メーカーには BLE サポートが含まれている可能性がありますが、現在 Android では直接サポートされていません (4.2 Jellybean の時点)。詳細については、問題 33371を参照してください。
この Google グループのディスカッションで示唆されているように、次の Android バージョンで BLE が登場する可能性があるようです。
于 2013-05-10T18:59:03.793 に答える