87

Bluetooth UUID の意味がわかりません。UUID はプロトコルを示しますか (例: RFCOMM )? もしそうなら、なぜcreateRfcommSocketToServiceRecord()メソッドは名前に rfcomm を指定するのに UUID を必要とするのですか? BluetoothChat サンプル コードの UUID が一見恣意的でハードコードされているのはなぜですか?

この質問に従って、4.0.4 を実行しているデバイスがリフレクションを使用して (Android 以外の外部デバイスに) 接続しようとすると、null ポインター例外が発生するため、私の質問が発生します。ただし、その質問に対する解決策は私にはうまくいきません。UUID muuid = device.getUuids()[0].getUuid();例外を発生させます。

編集:この回答に従って(を使用して)シリアルポートサービスのUUIDをハードコーディングすることで、この問題を解決しましたUUID.fromString("00001101-0000-1000-8000-00805f9b34fb");

createInsecureRfcommSocketToServiceRecord(),さらに、リフレクション メソッドを使用せずに使用して、セキュリティで保護されていないrfcomm ソケットを作成するために UUID を指定する必要がある理由に困惑しています。

誰かが私をまっすぐにすることができますか?

4

7 に答える 7

22

通常、Bluetooth デバイスがサポートする一般的なサービス (プロトコル) を表します。

( を使用して) 独自の rfcomm サーバーを作成する場合listenUsingRfcommWithServiceRecordは、それに接続するクライアントが識別できるように、独自の UUID を指定する必要があります。createRfcommSocketToServiceRecordこれが、UUID パラメータが必要な理由の 1 つです。

それ以外の場合、一部の一般的なサービスは同じ UUID を持っています。必要なものを見つけて使用してください。

こちらをご覧ください

于 2012-12-20T17:22:50.600 に答える
8

UUID は、インターネットのポート番号と概念が似ています。ただし、Bluetooth とインターネットの違いは、Bluetooth では、実行時にポート番号が SDP (サービス検出プロトコル) サーバーによって動的に割り当てられ、各 UUID にポート番号が割り当てられることです。他のデバイスは、予約済みのポート番号で登録されている SDP サーバーにデバイスで利用可能なサービスについて問い合わせ、異なる UUID で登録されていることによって互いに区別可能なさまざまなサービスで応答します。

于 2014-02-14T03:49:06.487 に答える
2

要約するUUidと、アプリケーションを一意に識別するために使用されます。各アプリケーションには固有のものがありますUUid

したがって、UUid各デバイスに同じものを使用します

于 2012-12-21T16:15:39.447 に答える