1

次のコードを使用して、テキスト ファイルを複数のデバイスに送信します。

ContentValues values = new ContentValues(); 
String filePath1   =Environment.getExternalStorageDirectory().toString()+"/filename.txt";
values.put(BluetoothShare.URI, Uri.fromFile(newFile(filePath1)).toString()); 
values.put(BluetoothShare.DESTINATION,itDevices.getAddress());               values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND); 
Long ts = System.currentTimeMillis(); 
values.put(BluetoothShare.TIMESTAMP, ts); 
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values);

メッセージを送信するための同じタイプのコードが必要です。最初に複数のデバイスにメッセージを送信しようとするときにBluetooth APIアプリケーションを使用することにより、デバイスに接続してそのデバイスにメッセージを送信し、再び切断して別のデバイスに接続し、この方法で別のデバイスにメッセージを送信します。

通信を切断せずに、複数のデバイスに1つずつメッセージを送信できますか?

4

2 に答える 2

4

はい、切断して再接続することなく、同時に複数の Android Bluetooth デバイスとメッセージを交換できると思います。

手始めに Android API は別として、Bluetooth を使用すると、複数のデバイスに同時に接続して通信することができます。すべての Bluetooth 接続は、マスターと最大 7 つのスレーブを含むピコネットで行われます。デバイスは複数のピコネットの一部になることができますが、これは非効率的 (2 つのピコネットのタイミングが調整されない) であり、信頼性が低い可能性があるため、他の複数のデバイスに接続する場合は、自分がマスターであることを確認する必要があります。

BlueZ ( AOSPを含むほとんどの Linux および Android デバイスの Bluetooth スタック) でこの種のことを行ったので、それがかなり簡単で確実に動作することを確認できます。

ただし、私は Android で 1 対 1 の接続しか行っていないため、そこでマスターとスレーブの割り当てをどのように制御するかはわかりません。Android は、通常の Linux に比べて機能と制御がはるかに少なく、マスター スレーブの役割の割り当てを直接読み取ったり変更したりする方法はありません。

理論的には、接続を開始した側がマスターになるというルールに基づいて役割を制御できるはずですが、他に何が起こっているのかを確認するためにいくつかのテストを行いたいと思います. 私の懸念は主に、クライアント デバイスの 1 つ (スレーブであると予想される) が既にヘッドセットやキーボードなどに接続されている可能性があるため、着信接続要求を受信すると、マスター ロールへの切り替えを要求する可能性があることです。サーバーをピコネットに追加できます。

私が提案したいのは、テストをしているときに、デバイスの 1 つ (Linux ボックスや root 化された Android など) で hcitool にアクセスし、「hcitool con」を実行すると、現在の接続のリストが表示されるということです。これには役割が含まれます。(hcitool は Linux の標準ツールであり、AOSP に含まれています。) 経験的なアプローチを使用することもできると思います: 確実に機能する同時接続を多数作成できれば、それがどのように機能するかは問題ではありません。 - 一部のデバイスが他のデバイスへの既存の接続を持っている状況を必ずテストしてください。

続けて申し訳ありませんが、これは良い質問だと思います。Android でこれを実行したことのある人からの連絡をお待ちしています。Android 用のマルチプレイヤー Bluetooth ゲームについて聞いたことがあると思いますが、それらが確実に動作するかどうか疑問に思っています。

于 2012-04-06T18:43:39.017 に答える
1

簡単な答えは、現在のデバイスから切断せずに複数のデバイスに送信することはできません。Bluetooth API は、それ自体が同期される One-To-One 接続を使用します。そのため、Bluetooth API を使用して複数の送信を実現することはできません。

于 2012-04-06T04:53:13.187 に答える