3

広告を送信するだけの Bluetooth LE デバイスを試しています (iBeacon に似ています)。私の Linux マシンでは、「hcitool lescan」がアドバタイズされているデバイスを検出し、「短縮名」を表示するため、無線インターフェイスは正しく機能しているようです。

残念ながら、最新のストック ROM (Android 4.3) を搭載した Nexus 4 スマートフォンで、4 つの異なる Bluetooth LE スキャナー アプリを試しましたが、どれもデバイスの広告を表示しませんでした。ただし、デバイスがアクティブな場合、「adb logcat」は多くの btu_ble_process_adv_pkt [1] イベントが処理されていることを示しており、デバイスの電源がオフになるとすぐに停止します。明らかに BTLE スタックは私の広告を拾っているように見えますが、アプリには届きません。

Android で適切に処理するために、広告に含まれている必要があるフィールドについて誰かアドバイスできますか?

[1] https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/jb-mr1.1-dev/stack/btu/btu_hcif.c#2198

4

1 に答える 1

2

私は自分でそれを理解することができました: 広告を送信するだけで接続を受け入れないBTLE デバイスを使用している場合、メッセージの最初のバイトとして送信される PDU タイプが 0x02 (ADV_NONCONN_IND) であることを確認する必要があります。 . そうしないと、Android は明らかに GATT 属性を照会するために接続を開こうとしますが、もちろん失敗します。AFAICT、iOS はここでより寛容です。

于 2013-10-15T09:02:09.970 に答える