web-dev-qa-db-ja.com

Android Bluetoothの例

Android Bluetoothコミュニケーションチュートリアルのリンクまたはヒントを教えてください。 BluetoothChatの例を参照するように言わないでください。デバイスを検出して接続する方法しか理解できませんが、Bluetoothを介してデータを送受信する方法はわかりません。

私は実際にAndroidおよび埋め込みBluetoothデバイスプロジェクトに取り組んでいます。私を助けてください。

52
Pratik

ブルートゥース通信のために他の人があなたに提案したように、私はまた次のリンクを使用しました。

http://developer.Android.com/guide/topics/connectivity/bluetooth.html

必要なのはクラスBluetoothChatService.Javaだけです

このクラスには次のスレッドがあります。

  1. 受け入れる
  2. 接続中
  3. 接続済み

BluetoothChatServiceの開始関数を次のように呼び出すと:

mChatService.start();

スレッドの受け入れを開始します。つまり、接続の検索を開始します。

今、あなたが電話するとき

mChatService.connect(<deviceObject>,false/true);

ここで、最初の引数はペアのデバイスリストから取得できるデバイスオブジェクトです。デバイスをスキャンすると、範囲内のすべてのデバイスが取得され、そのオブジェクトをこの関数に渡すことができます。

connect関数は、接続スレッドを開始し、受け入れスレッドを実行しているデバイスを探します。

そのようなデバイスが見つかると、受け入れスレッドと接続スレッドの両方がBluetoothChatServiceの接続された関数を呼び出します。

connected(mmSocket, mmDevice, mSocketType);

このメソッドは、両方のデバイスで接続されたスレッドを開始します。このソケットオブジェクトを使用して、接続されたスレッドは、他のデバイスへの入力および出力ストリームを取得します。また、whileループでinputstreamのread関数を呼び出して、他のデバイスがメッセージを送信するたびにこの読み取り関数がそのメッセージを返すように、常に他のデバイスから読み取りを試みます。

BluetoothChatServiceには、byte[]を入力として受け取り、接続されたスレッドでwriteメソッドを呼び出すwriteメソッドもあります。

mChatService.write("your message".getByte());

接続されたスレッドのwriteメソッドは、このバイトデータを他のデバイスの出力ストリームに書き込むだけです。

public void write(byte[] buffer) {
   try {
       mmOutStream.write(buffer);
    // Share the sent message back to the UI Activity
    // mHandler.obtainMessage(
    // BluetoothGameSetupActivity.MESSAGE_WRITE, -1, -1,
    // buffer).sendToTarget();
    } catch (IOException e) {
    Log.e(TAG, "Exception during write", e);
     }
}

2つのデバイス間で通信するには、mChatServiceで書き込み関数を呼び出して、他のデバイスで受信するメッセージを処理します。

10
vipul mittal