2

2 人のプレーヤー用に tic tac を作成していますが、データを交換するために Bluetooth 接続が必要です。Bluetooth を有効にして検出機能を有効にすることはできますが、"BluetoothServerSocket" とクライアント "BluetoothSocket" の問題で、操作方法がわかりません。この部分、これはコードです:

ArrayList<String>al=new ArrayList<String>();
        BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
        Set<BluetoothDevice> pairedDevices = ba.getBondedDevices();


        if(pairedDevices.size()>0)  
            for(BluetoothDevice d: pairedDevices)
                al.add(d.getName()+" , "+d.getAddress());

                    if (!ba.isEnabled()) 
                       ba.enable();

                    BluetoothDevice device;
                    Intent dis=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
                    dis.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
                    startActivity(dis);

                    BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID);
                    socket.connect();

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

3 に答える 3

1

両方のプレーヤーは、InputStreams と OutputStreams を使用してデータを送受信できる「BluetoothSocket」を介して通信します。しかし、そのようなソケットのペアを取得するには、次のことを行うことができます:

1 つのプレーヤーの側で BluetoothServerSocket を作成し、もう 1 つのプレーヤーがそれに接続します。BluetoothServerSocket は、クライアントの BluetoothSocket が接続するまでブロックする「accept」メソッドを使用して接続をリッスンします。その後、BluetoothServerSocket.accept() メソッドは、双方向の情報転送のためにクライアント Btsocket で使用できる BluetoothSocket を返します。

お役に立てれば...

PS: createRfcommSocketToServiceRecord は、上記のようなクライアントを 1 つ作成するだけです。両側に同じ UUID を使用できます

于 2012-04-13T22:46:48.203 に答える
0

このリンクを参照してください。これは、シンプルな Bluetooth チャット アプリです。このアプリを変更して、必要なデータを送受信できます。

于 2014-03-14T11:12:08.100 に答える
0

データ交換に関する多くの複雑さが欠けているようです。主に、データをリッスン/送信するためにスレッドを処理する必要があります。ここに、私が話していることの完全な実装があります: https://github.com/buddles/AndBT/blob/master/AndBT/src/br/pucrs/tcii/BluetoothService.java

すでに実装されているライブラリを使用することを検討しましたか? このプロジェクトには、TicTacToe サンプルと、最大 7 つの接続をサポートするチャット アプリが付属しています: https://github.com/buddles/AndBT

于 2014-02-05T10:32:44.117 に答える