57

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

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

4

1 に答える 1

11

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

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

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

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

  1. 承認
  2. 接続中
  3. 接続済み

BluetoothChatService の start 関数を呼び出すと、次のようになります。

mChatService.start();

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

今あなたが電話するとき

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

ここで、最初の引数は、ペアリングされたデバイスのリストから取得できるデバイス オブジェクトです。デバイスをスキャンすると、範囲内のすべてのデバイスが取得され、そのオブジェクトをこの関数に渡すことができます。2 番目の引数は、安全な接続または安全でない接続を確立するためのブール値です。

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

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

connected(mmSocket, mmDevice, mSocketType);

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

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

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

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

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 で write 関数を呼び出し、他のデバイスで受信するメッセージを処理するだけです。

于 2014-01-12T07:03:56.703 に答える