6

誰でも簡単な言葉で、Android Bluetoothの例でUUIDの必要性を説明できますか? それに関するいくつかの記事を読みましたが、UUID の正確な必要性はまだ明確になっていません。そして今、私が開発したいもののシナリオを説明しましょう。たとえば、「拡張子.xyzのファイル」などのデータを自分の携帯電話からBluetooth経由で他の携帯電話に転送するAndroidアプリケーションを開発したいと考えています。受信側の電話にも、私が使用しているアプリケーションが必要である必要はまったくありません。アプリケーションから他の電話にデータを転送したいだけです。受信者がデータをどう処理するかは気にしません。範囲内のデバイスに接続し、アプリケーションを使用してそのファイルを転送したいだけですが、どうすればよいですか? UUID の役割はどこにあるのでしょうか? UUID は自分のアプリケーション用であると読みましたが、サーバーと受信者の両方が、接続を形成するためにこの UUID を認識している必要があります。しかし、受信者が私のアプリケーションを持っていない場合はどうなりますか? それは私のアプリケーションUUIDを確実に知らないでしょうか?では、どのようにデータ転送が可能になるのでしょうか? 特定のアプリケーションに関係なく、単に Bluetooth を使用したい。ここで、私のアプリケーションは何をすべきでしょうか? サーバーソケット/クライアントソケットまたは何を作成する必要がありますか? なぜ。

簡単な言葉での説明を歓迎します(できればいくつかの記事)。BluetoothChat の提案がある通常の回答は必要ありません。質問が理解できない場合は、お知らせください。より具体的に説明します。この質問の基本的な目標は、UUID の使用を明確にし、1 つの Android フォンで実行されているアプリケーションから Bluetooth を使用して 2 つのデバイス (アプリケーションではなく) 間でデータを転送することです。

4

2 に答える 2

5

ブルートゥースを使用しても、クライアントサーバーアプリケーションを作成できます..BluetoothSocket ここで読むことができますhttp://developer.android.com/reference/android/bluetooth/BluetoothSocket.html

ここで、2 つのデバイスがあるとします。

  1. デバイス A
  2. デバイス B

デバイス A がデバイス B にデータを送信していると仮定します。デバイス B がデバイス A にもデータを送信しているかどうかはわかりませんでした。そのため、A が B にデータを送信する最初のシナリオについて説明します。

その場合、すべてのデータはデバイス A に保存されており、それをデバイス B に送信したいので、デバイス A を BluetoothServer として作成し、デバイス B を BluetoothClient として作成してサーバーをリッスンする方が合理的です。

しかし..両方のデバイスがデータを交換したい場合..それらの1つをサーバーとして作成し、それぞれに対して2つのスレッドを作成できます。

  1. データを送信するスレッド
  2. データをリッスンするスレッド

両方ともデータを交換できます。

別のこと..通常のクライアントサーバーをプログラムしたことaccept()がある場合は、サーバーに接続されたクライアントが存在するまでメソッドがブロックされていることに気付きました..同じことがBluetoothクライアントサーバーアプリケーションにも当てはまります。

要約:

  1. 1 つのデバイスがサーバーとして機能するため、サーバー プロジェクトを作成
    して最初のデバイスにインストールする必要があります。

  2. 2 番目のデバイスはクライアントとして機能するため、クライアント プロジェクトを作成して 2 番目のデバイスにインストールする必要があります。


  3. 両方のプロジェクトのマニフェスト ファイルに bluetooth パーミッションを追加することを忘れないでください。

  4. 両方のプロジェクトには、質問で述べたのと同じ UUID が必要です。簡単に言えば、両方の側がUUIDを必要とするので、それぞれが誰と通信しているかを知ることができます。これは、通常のクライアントサーバーのポートのようなものだと思います.RFC通信に使用される場所を読みました..おそらくご存知のとおり
    RFC、SDP などのような Bluetooth 用のプロトコルがいくつかあります。

編集: ほとんどの携帯電話では、ブルートゥース経由でデータを送信するときにペアリング プロセスがあります。したがって、クライアントサーバーバージョンを使用したくない場合は、これを行うことができると思います:

  1. アプリケーションは、接続するデバイスを検索します。(ペアリングプロセス)
  2. ペアリング後、他のデバイスに接続され、データを送信するだけです

編集 2: A から B にデータを送信したいですか? もっと分かりやすく説明します..

クライアントが誰がサーバーであるかを知っている必要があり、サーバーのポートとIPを挿入する必要があると言ったのは正しいです。これは正しく、このように機能します。

ほら見て..

サーバーはクライアントからの接続をリッスンし、接続が確立されると通信が開始されます。

  1. クライアントがデータを要求する
  2. サーバーはクライアントのリクエストを処理し、関連データをクライアントに送信します

    したがって、ファイル、データベースなどのデータはサーバー側に保存する必要があります..

    あなたの場合、送信したいファイルはデバイス B ではなくデバイス A にあります。したがって、デバイス A がサーバーである場合、彼は接続をリッスンします。デバイス B がサーバー (デバイス A) に接続すると、通信が開始されます。 .. デバイス B はデバイス A からファイルを要求できます.. また、デバイス A はサーバーであるため、メッセージをブロードキャストすることもできます.. 接続されているすべてのクライアントに同じメッセージを送信することを意味します.

    しかし、あなたがしたいのは、デバイス b が要求していなくてもファイルを送信することですよね? デバイス B もデバイス A にファイルを送信する必要があるかどうかわかりません
    。シナリオに分けてみましょう。

  3. デバイスAがBに送信するだけ:この場合、ファイルはデバイスAにあるため、デバイスAにデータがあり、デバイスAがサーバーでデバイスBがクライアントであることを意味します。したがって、接続が確立されたら、A から B に送信できます。

  4. 両方のデバイスがデータを交換する: この場合、両方のデバイスが相互にリッスンする必要がありますが、1 つだけがサーバーとして機能し、もう 1 つがクライアントとして機能する必要があります。つまり、一方に serverApp をインストールし、もう一方に clientApp をインストールする必要があります。しかし、それぞれが他の人に送信して聞くことができます。したがって、それぞれについて、送信データを処理するスレッドと受信データを処理する別のスレッドを作成する必要があります

于 2013-05-04T09:27:50.053 に答える
1

UUID は Universal Unique Identifier です。Bluetooth が公開しているサービスのいずれかに接続する場合は、この特定のサービスへの接続を開始する必要があることを Bluetooth ソフトウェア モジュールに伝える UUID が必要です。あなたの場合、DevA から DevB にファイルを送信するには、ファイル転送プロファイルを使用する必要があり、これに関連付けられている特定の uuid があり、これは Bluetooth 製品を認定し、技術に取り組む権限である Bluetooth SIG によって定義されています。これは、Bluetooth を使用するすべてのデバイスで認識されています。

要するに、DevB が固有の uuid を持つ受信接続要求を受信すると、デバイスが接続しようとしている DevB の特定のサービスを認識し、そのサービスに接続します。したがって、DevA から DevB にファイルを送信する場合、DevB に同じアプリケーションを用意する必要はありません。ただし、Bluetooth SIG によってファイル転送プロファイルに指定されている UUID を使用していることを確認する必要があります。

よろしく、 シュリパティ

于 2013-10-30T12:52:42.963 に答える