SPP Bluetooth モジュールを使用して、Android 電話アプリとモジュールの間でデータを送信しています。今日は面白いことに出くわしました。
- パスキーを入力してモジュールとペアリングします
- 通常、アプリとモジュールの間でデータをやり取りできます
- アプリ内から、モジュールから切断してアプリを閉じます。
- モジュールで、パスキーを新しい値に変更します。
- アプリを再度開いても、引き続きデータを交換できます。再度ペアリングする必要はありません。携帯電話とモジュールを最初にペアリングしたときに (古いパスキーを使用して) 交換したすべてのセキュリティ情報は、モジュールの PIN を変更した後でも有効なようです。
- 次に、アプリを閉じて、Bluetooth 設定からデバイスのペアリングを解除します。
- その後、2 つのデバイスをペアリングして、パスキーの変更が実際に受け入れられ、それで十分であることを確認しました。新しい PIN とのみペアリングできるようになりました。
驚いたことに、上記のポイント 5 では、携帯電話でも PIN を更新しなくてもすべてが機能していました。モジュールに PIN を変更するコマンドを送信した後、リフレクションを使用して removeBond() を呼び出すことで、これを回避する予定です。しかし、PINの変更が他の何かによって引き起こされる可能性がある場合、私の電話は機能しません.
私の質問は、これが正常かどうかです。Bluetoothの仕様はかなり長いので、他の誰かがこれを知っていることを願っていました. Bluetooth デバイスのパスキーを変更した後、既にペアリングされているすべてのデバイスは、今度は新しいパスキーを使用して、ペアリング プロセスを再度実行する必要があると思います。しかし、上記の手順は、そうではないことを示しています。これは私の Bluetooth モジュール (Bluegiga WT12) のバグですか、それとも予想される動作ですか? 誰もこれに遭遇したことがありますか?
ありがとうございました。
乾杯!