2012-04-13 92 views
2

我正在爲兩個玩家建立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(); 

回答

1

無論是玩家交流會超過「的BluetoothSocket的使用,你可以發送/接收使用InputStreams和OutputStreams數據。但爲了獲得這樣的一對插座,你可以做這件事:

在一個播放器的一側創建BluetoothServerSocket,另一個連接到它。 BluetoothServerSocket使用'accept'方法監聽連接,直到客戶端BluetoothSocket連接它爲止。之後,BluetoothServerSocket.accept()方法返回一個BluetoothSocket,它可以與客戶端Btsocket一起用於雙向信息傳輸。

希望這有助於...

PS:createRfcommSocketToServiceRecord只是創建上面提到的一個這樣的客戶端。你可以在兩邊使用相同的UUID

0

您可以參考此link。這是一個簡單的藍牙聊天應用程序。您可以修改此應用程序以發送和接收所需的數據。