我正在为两个玩家构建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();
答案 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。这是一个简单的蓝牙聊天应用程序。您可以修改此应用以发送和接收所需数据。