0

rssiフィンガープリントを使用した位置認識のために、BluetoothデバイスからRSSIを読み取るためのアプリ(Android上)を作成しています。BT4.0/BLEではないペアリングされていない検出可能なBluetoothデバイスからRSSIを読み取るための作業コードがあります。BLEベースのタグ(stick-n-findなど)を入手した場合、自分自身(正確にはAndroidフォン)をbt-discoveryモードにするだけでRSSIを読み取ることができるかどうかを知りたいです。

4

2 に答える 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 に答える