2011-02-09 19 views
0

私のNexus One Android Phoneを別のBluetooth Android PhoneにBluetoothで接続できます。私は接続のための入出力ストリームを使用して、私の要求を書いて、その応答を読むことができます。私のアプリケーションは、処理のためにリアルタイムデータを使用します。私は、通信のための異なるソケット(一種の専用ソケットのようなもの)で2つの入出力ストリームを開く方法があるのだろうかと思っていましたか?そしてもしそうなら、私はそれをどのように達成できますか?すべてのポインタが役立ちます...Android - 1つの接続で複数のソケット(入力と出力ストリーム)を開く

mmSocket.connect();

公共ボイド(接続) 導入されたバージョン:リモートデバイスに接続するためのAPIレベル5 試み。

このメソッドは、接続が確立されるか接続が失敗するまでブロックします。このメソッドが例外なく返された場合、このソケットは現在接続されています。

リモートBluetoothデバイスへの新しい接続の作成は、デバイスの検出が進行中であっては行わないでください。デバイスの検出は、Bluetoothアダプタ上では重量のある手順であり、デバイス接続が大幅に遅くなります。 cancelDiscovery()を使用して、進行中のディスカバリをキャンセルします。ディスカバリーはアクティビティーでは管理されませんが、システム・サービスとして実行されるため、アプリケーションは、ディスカバリーを直接要求していない場合でも、必ずcancelDiscovery()を呼び出す必要があります。

私は2つのソケットを使ってどのように接続できますか?上記の関数はソケットを使用して接続しています...そして、接続後に別のソケットによる接続を切断しますか?

答えて

2

もちろん可能ですが、ソケットのブロッキング呼び出しを使用していると思われますので、リアルタイムで便利な作業を行うには複数のスレッドが必要です。これは、通信する場合にスレッド間で少しの同期が必要であることを意味します。

あなたの質問は率直に少し曖昧ですので、あなたはそれを少し修飾しないと良い答えは得られないと思います。正確に何をしたいですか?なぜあなたは複数のソケットが必要ですか? 2番目のソケットは何のためですか?

+0

2番目の入出力ストリームがBluetoothデバイスにランダムな非頻繁なコマンドを送信している間に、最初の入出力ストリームを頻繁にポーリングしたい –

+0

その説明から、複数の接続が必要な理由がわかりません長時間実行され、時間的に重複している必要があるコマンドがあります。 – sandos

+0

yah私の頻繁にポーリングするスレッドは長時間実行されていますが、実行前に頻繁ではないコマンドをハングアップさせたくありません –

関連する問題