2011-09-01 6 views
10

私は2つのAndroidデバイスをBluetooth経由で自動的に接続するアプリケーションを開発中です。すでにペアになっているとしましょう。それを達成することは可能ですか?2つのアンドロイドデバイスをプログラムでブルートゥースと接続するにはどうすればよいですか?

+1

で(ここでは、クライアント作成した)サーバーを作成する方法を見つける、を見て:http://developer.android.com /guide/topics/wireless/bluetooth.html –

+1

このようなアプリケーションの欠点は、たとえば常に接続を行うためにページングしていると、バッテリの寿命に悪影響を及ぼします。いい考えではない。 –

答えて

18

もちろん可能です。私はドキュメントの短いチュートリアルを作成します:

あなたのBluetoothマネージャーで始まります。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

bluetoothAdapterがnullの場合、それはこのAndroidデバイスは、Bluetoothをサポートしていないことを意味し(それは、Bluetooth無線を持っていない。私はそれがこれらのデバイスに遭遇する珍しいことだと思うけど...)

次に、確認してください

​​

それがオンになっていないなら、我々はそれを有効にするには、ユーザーに尋ねる活動を開始:Bluetoothが上です。

ユーザーが有効にしていたとします(彼が行ったかどうかを確認するには、onActivityResultメソッドで行います)。それらをループその後

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices(); 

::私たちはペアリングデバイスを照会することができfor(BluetoothDevice device : pairedDevices)と接続したいものを見つけます。

あなたはそれを接続するためのソケットを作成し、デバイスを見つけたら:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID); 

YOUR_UUIDのアプリの特別なIDを含むUUIDオブジェクトです。それについてはhereを読んでください。今

、接続しようとする試み(あなたがに接続しようとしているデバイスは、リスニングモードで同じUUIDで作成したソケットを持っている必要があります):

socket.connect(); 

が接続されるまで)(ブロックあなたのスレッドを接続が成立した場合、またはエラーが発生した場合 - 例外がスローされます。だから別のスレッドでconnectに電話する必要があります。

そこに!あなたは別のデバイスに接続しています。入力ストリームと出力ストリームを取得します。

InputStream is = socket.getInputStream(); 
OutputStream os = socket.getOutputStream(); 

データの送受信を開始できます。両方のアクション(送信と受信)はのブロックであることに注意してください。別々のスレッドから呼び出す必要があります。

これについての詳細を読み、それが可能であるBluetooth documentation.

+1

ありがとうございます、私は既に私のアプリケーションで、いくつかの時間前に私はそれをすべて考え出したにもかかわらず、あなたの答えは非常に良いと私はそれを受け入れているとマークして実装しました。 – Miky

+0

@Mikyあなたの実装を私達に示すことができます – jaimin

+0

@jaimin申し訳ありませんが、自動Bluetooth接続は私にとって満足のいくものでした。代わりにWiFiを選択しなければならなかった。 – Miky