蓝牙插座

时间:2012-04-13 21:32:15

标签: android bluetooth

我正在为两个玩家构建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();

3 个答案:

答案 0 :(得分:1)

两个玩家都将通过'BluetoothSocket'进行通信,使用它可以使用InputStreams和OutputStreams发送/接收数据。但是为了获得这样一对插座,你可以做到这一点:

在一个播放器一侧创建BluetoothServerSocket,另一个播放器连接到它。 BluetoothServerSocket使用'accept'方法监听连接,该方法阻塞,直到客户端BluetoothSocket连接到它。之后,BluetoothServerSocket.accept()方法返回一个BluetoothSocket,可以与客户端Btsocket一起用于双向信息传输。

希望这会有所帮助......

PS:createRfcommSocketToServiceRecord只创建一个上面提到的这样的客户端。您可以为双方使用相同的UUID

答案 1 :(得分:0)

似乎你在数据交换方面缺少很多复杂性。主要是你需要处理线程来监听/发送数据。在这里,您可以完整地实现我所说的内容:https://github.com/buddles/AndBT/blob/master/AndBT/src/br/pucrs/tcii/BluetoothService.java

您是否考虑过使用已经实施的库?该项目附带一个TicTacToe示例和一个支持最多七个连接的聊天应用程序:https://github.com/buddles/AndBT

答案 2 :(得分:0)

您可以参考此link。这是一个简单的蓝牙聊天应用程序。您可以修改此应用以发送和接收所需数据。