2012-04-13 11 views
2

Ich baue Tic Tac für zwei Spieler und brauche eine Bluetooth-Verbindung, um einige Daten auszutauschen, ich kann Bluetooth aktivieren, Discover-Fähigkeit aktivieren, aber mein Problem in "BluetoothServerSocket" und der Client "BluetoothSocket", ich don ' t wissen, wie man diesen Teil zu manipulieren, dies ist der Code:Bluetooth-Buchse

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(); 

Antwort

1

Sowohl die Spieler kommunizieren über ‚BluetoothSocket die mit dem Sie senden/empfangen Daten mit Inputstreams und OutputStreams. Aber um ein solches Paar Steckdosen zu erhalten, können Sie folgendes tun:

Erstellen Sie BluetoothServerSocket auf der Seite eines Players und andere verbindet sich damit. Der BluetoothServerSocket wartet auf Verbindungen mit der "accept" -Methode, die blockiert, bis ein Client BluetoothSocket eine Verbindung herstellt. Danach gibt die BluetoothServerSocket.accept() Methode einen BluetoothSocket zurück, der mit dem Client Btsocket für die 2-Wege Infoübertragung verwendet werden kann.

Hope this helps ...

PS: createRfcommSocketToServiceRecord schafft nur ein solcher Client oben erwähnt. Sie können die gleiche UUID für beide Seiten verwenden

0

Es scheint, dass Sie eine Menge Komplexität in Bezug auf den Datenaustausch vermissen. Hauptsächlich müssen Sie mit Threads umgehen, um Daten zu hören/senden. Hier haben Sie eine vollständige Implementierung von dem, worüber ich rede: https://github.com/buddles/AndBT/blob/master/AndBT/src/br/pucrs/tcii/BluetoothService.java

Haben Sie in Betracht gezogen, eine bereits implementierte Bibliothek zu verwenden? Dieses Projekt wird mit einem TicTacToe-Beispiel und einer Chat-App geliefert, die bis zu sieben Verbindungen unterstützt: https://github.com/buddles/AndBT

0

Sie können diese link beziehen. Dies ist eine einfache Bluetooth-Chat-App. Sie können diese App ändern, um die erforderlichen Daten zu senden und zu empfangen.