私は Bluetooth を初めて使用しますが、BLE 周辺機器に接続してデータを特性に書き込む Android クライアントで 1 か月ほど作業しています。
私の BLE ペリフェラルは nrf52832 (Nordic) デバイスで、BLE_SM (セキュリティ マネージャー) サンプル プロジェクトを読み込んで、ボンディング/ペアリングを使用して安全な通信を行うことができます。
私の Android コードは周辺機器に正常にペアリング/結合されますが、周辺機器がアドバタイズを停止することがわかります。これが正常なのか、タイプ REMOTE_USER_TERMINATED_CONNECTION の gap.onDisconnection イベントを受信したためなのかはわかりません。
関係なく、私は拘束されているので、デバイスをスキャンする必要がなくなり、単に呼び出すことができると思うかもしれませんがdevice.connectGatt()
、それは機能せず、私のコールバックは GATT STATE_DISCONNECTED イベントを取得します。Nordic から以下を貼り付けた別の投稿 (チュートリアル)を読みました。
以前からアドレスを知っていても、アドバタイズしていない周辺機器に接続することはできません。これは、アドバタイズメントの送信後、周辺機器が受信機の電源を一定時間だけオンにするためです。この時間は、接続要求とスキャン要求をリッスンするために使用されます。
これが事実である場合、周辺機器の継続的なアドバタイジングを停止することはできないようです。これは、周辺機器の消費電力を削減しようとしている場合には役に立ちません。