1

Android api レベル 15 で Bluetooth アプリを実行しています。Bluetooth を使用してリモート デバイスを接続したいと考えています。fetchUuidsWithSdp() を使用して UUID を取得します。nokia、pcなどの他のすべてのデバイスのuuidを取得していますが、Androidデバイスは取得していません。

ドキュメントから、

fetchUuidsWithSdp().//この API は非同期であり、ACTION_UUID インテントが送信され、UUID はリモート エンドでサポートされます。SDP レコードの取得中にエラーが発生した場合、またはプロセスに時間がかかる場合は、現在キャッシュに存在する UUID と共に ACTION_UUID インテントが送信されます。サービス検出を実行しない場合、クライアントは getUuids() を使用して UUID を取得する必要があります。

ドキュメント「クライアントはgetUuids()を使用する必要があります」から、私の質問は、UUIDが他のデバイスまたはAndroidからのものであることをどのように識別できますか?

4

1 に答える 1

1

できません。

Androidのドキュメントから:「UUIDのポイントは、ランダムに選択できるほど十分に大きく、衝突しないことです。」

シリアル ポート プロファイル (SPP) の UUID00001101-0000-1000-8000-00805F9B34FBを除いて、上記の理由により既知の UUID はありません。

0x1101はシリアル ポート プロファイルの ID です。そのため、UUID は で始まります00001101。したがって、他のデバイスがサポートするプロファイルを明らかに識別できます (これが、そもそも SDP の主な理由です)。デバイス ID (DID) プロファイルを調べて、相手側の製造元を検出するために信頼できるものがあるかどうかを確認してみてください。

Android デバイスから UUID を取得していないことについて: それらのデバイスが実際に Bluetooth 経由で少なくとも 1 つのサービス (ネットワーク アクセスなど) を提供していることを確認してください。次に、ネットワーク アクセス プロファイルの ID で始まる UUID を取得する必要があります (例:パン)。

getUuids() と fetchUuidsWithSdp() の違いは、ドキュメントの状態と同様に、後者は実際に他のデバイスへの SDP 要求を実行するのに対し、前者は最後の応答 (最も一般的には、検出時に受信したもの) でフェッチされたものを返すだけです。 Bluetooth 2.1+)。

于 2012-12-19T08:36:54.557 に答える