私は2つのAndroidデバイスをBluetooth経由で自動的に接続するアプリケーションを開発中です。すでにペアになっているとしましょう。それを達成することは可能ですか?2つのアンドロイドデバイスをプログラムでブルートゥースと接続するにはどうすればよいですか?
答えて
もちろん可能です。私はドキュメントの短いチュートリアルを作成します:
あなたの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.
で(ここでは、クライアント作成した)サーバーを作成する方法を見つける、を見て:http://developer.android.com /guide/topics/wireless/bluetooth.html –
このようなアプリケーションの欠点は、たとえば常に接続を行うためにページングしていると、バッテリの寿命に悪影響を及ぼします。いい考えではない。 –