我正在为两个玩家构建tic tac,需要蓝牙连接来交换一些数据,我可以启用蓝牙,启用发现功能,但是“ 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();

最佳答案

两个播放器都将通过“ BluetoothSocket”进行通信,您可以使用它们使用InputStreams和OutputStreams发送/接收数据。但是要获得这样的一对套接字,您可以执行以下操作:

在一个播放器的一侧创建BluetoothServerSocket,另一个连接到该播放器。 BluetoothServerSocket使用“ accept”方法侦听连接,该方法会阻塞直到客户端BluetoothSocket连接到它为止。之后,BluetoothServerSocket.accept()方法将返回一个BluetoothSocket,可与客户端Btsocket一起使用以进行2路信息传输。

希望这可以帮助...

PS:createRfcommSocketToServiceRecord只会创建一个上述客户端。双方可以使用相同的UUID

关于android - 蓝牙 socket ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10148581/

10-12 00:25