仕事で、私は任務を与えられました:)何かをするためにデバイスに接続するAndroidライブラリを移植することです(NDAのため、これ以上は言えません)。Android コードではgetRemoteDevice(macAddress)
、createRfcommSocketToServiceRecord
基本的にペアリング メカニズム全体をスキップしてバイトを「そのまま」送信するために と を使用します。これはiOSで可能ですか?このレベルの「汚れ」はありますか:-)
2772 次
2 に答える
4
Bluetooth 2.1 なら、かなり簡単です。ソケットを作成することもできます。例えば:
EASession *session = [[EASession alloc] initWithAccessory:accessory
forProtocol:PROTOCOL_STRING];
if (session) {
[[session inputStream] setDelegate:self];
[[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session inputStream] open];
[[session outputStream] setDelegate:self];
[[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session outputStream] open];
}
ただし、@ Paulw11 が述べたように、MFI プログラムを通過する必要があります。
Bluetooth LE は大きく異なります。ソケットはありません。サービスと特性でのみ操作できます。
ちなみに、MACアドレスだけでBLEデバイスに接続することはできません。最初に、サービス UUID を使用してこのデバイスをスキャンする必要があります。
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:kScanServiceUUID]] options:options];
その後、CBPeripheral に接続します。
更新: そして、Bluetooth 2.1 で「基本的にペアリング メカニズム全体をスキップする」ことについてはどうでしょうか。ユーザーなしでペアリングを行うことはできないと思います。ユーザーにダイアログを表示し、ペアリングしたいデバイスを選択できる方法が1つありますが、それが私が見つけたすべてです:
- (void)showBluetoothAccessoryPickerWithNameFilter:(NSPredicate *)predicate completion:(EABluetoothAccessoryPickerCompletion)completion
ユーザーがデバイスを Bluetooth アクセサリとペアリングできるようにするアラートを表示します。
Bluetooth 2.1 とは異なり、Bluetooth LE ではペアリングはまったく必要ありません。
于 2014-08-16T20:20:41.100 に答える