2017-12-13 5 views
0

CBCentralManagerを使用してBluetoothデバイスを検出して接続しようとしています。デバイスはヘッドセットです。それは電話でのブルートゥーススキャンによって発見することができます。デバイス名は「A1-25」です。 「A1-25」を電話機のBluetooth設定から直接接続すると、曲を再生できます。うまくいきます。iOS Core Bluetooth - スキャンから実際のデバイスを検出できません。

enter image description here

しかし、私はCBCentralManagerを使用して周辺機器をスキャンし始めたとき。私は "A1-25"という名前の周辺機器を見ることができません。しかしむしろ、私は "EQ_Test_llyan"という名前の周辺機器を見た。しかし、Bluetoothの設定から近くのデバイスをスキャンする前に、 "EQ_Test_llyan"が表示されませんでした。

2017-12-13 16:35:07.233021+0800 Test[1405:500801] started scanning 
2017-12-13 16:35:17.469375+0800 Test[1405:500801] discovered peripheral with name EQ_Test_llyan advertisementData:{ 
    kCBAdvDataIsConnectable = 1; 
    kCBAdvDataLocalName = "EQ_Test_llyan"; 
    kCBAdvDataManufacturerData = <b0024551 5f544553 54>; 
} 
2017-12-13 16:35:17.470672+0800 Test[1405:500801] connecting with device!!!!!!! 
2017-12-13 16:35:17.654884+0800 Test[1405:500801] connected to peripheral name:EQ_Test_llyan id:7326E741-BF68-D9E8-D7A6-5F27227685A7 
2017-12-13 16:35:17.656526+0800 Test[1405:500801] discovering services for peripheral name:EQ_Test_llyan 
2017-12-13 16:35:18.193311+0800 Test[1405:500801] discovered services:(
) for peripheral name:EQ_Test_llyan 

周辺「EQ_Test_llyanは」(ログ上記参照)は、サービスを持っていないので、私はそれと通信することはできません。今、私が電話設定でBluetoothデバイスに戻ったとき、私は今 "EQ_Test_llyan"に接続していますが、 "A1-25"には接続していません。さて、私は音楽を演奏しようとすると、音がヘッドセットから出てこない。

enter image description here

私はヘッドセットをオフにすると、私は「EQ_Test_llyan」から切断され、「A1-25が」消えてしまいます。したがって、私は "EQ_Test_llyan"と "A1-25"は同じデバイスから来ていると結論づけます。

私は両方に同時に接続できることに注意してください。プログラムで "EQ_Test_llyan"に接続するだけで、設定に表示されます。それから私は手動で "A1-25"に電話設定から接続します。それは、下の図に示すようなものです。音楽を聴くと、ヘッドセットからの音が聞こえます。だから、私は "A1-25"に接続していて、 "EQ_Test_llyan"だけには接続していない限り正常に動作しています。

enter image description here

だから私の質問は以下のとおりです。

  1. CBPeripheralは、実際のデバイスに言及されていますか?なぜなら、もしそうなら、 "A1-25"をスキャンできないのですが、 "EQ_Test_llyan"をスキャンできますか?
  2. 電話機が「A1-25」に接続されていて、その電話機の横に「i」が表示されている場合は、接続を終了できることに注意してください。しかし 電話機が「EQ_Test_llyan」に接続されているときは、「i」は の横にありません。したがって、あなたが デバイスをオフにしない限り、接続を切断することはできません。では、2つの違いは何ですか? 「AI-25」は 実際のデバイスですが、「EQ_Test_llyan」は単なる接続ですか?私は を理解していません。

答えて

1

CBCentralManagerから「A1-25」を検出することは、上記のようにヘッドセットであるため、検出できません。ヘッドセットはヘッドセットプロファイル(HSP)を使用します。これは「Bluetoothクラシック」プロファイルと呼ばれ、コアBluetoothはBluetooth低エネルギー(BLE、Bluetooth 4.0)汎用属性プロファイル(GATT)にのみ適しています。 CoreBluetooth APIを調べると、サービスと特性に関するすべてがわかります。サウンドに関連するプロファイルの抽象はありません。

一方、GATTは非常に一般的かつ抽象的なプロファイルであり、速度、温度、心拍数、デバイス構成、事実上任意の非常に特殊なデータについて、あらゆる種類のデバイスで使用することができますその他の値。そのため、正確なデバイスを認識しているアプリからのみGATTデバイスとペア設定することができます。あなたは、あなたの電話設定画面からそのような一般的なサービスとは何の関係もありません。

+0

こんにちは、お返事ありがとうございます。そうだとすれば、まだBluetoothヘッドセットのマイクから音を取り出してアプリから再生することは可能でしょうか?私は、BLE GATTのプロフィールのサウンド関連のプロファイルはないと言ったのですか?だから、BLEでリアルタイムのサウンドデータを渡すことができないのですか? –

+0

リアルタイムサウンドをBLE接続で渡すことはできません。不適切なAPIがあり、低速でサウンドを送信するために実行されます。 ヘッドセットを使用して、アプリからサウンドを再生して録音できます。電話設定画面でヘッドセット(A1-25)をペアにします。その後、内蔵マイクとスピーカーではなく、ヘッドセットを使用するようにアプリでオーディオセッションを設定する必要があります。 – fedulvtubudul

+0

理解していただきありがとうございます! –

関連する問題