2016-11-30 9 views
0

Ich muss wissen, wie ich Daten in Android mit Bluetooth zwischen zwei Geräten verbinden und senden kann. Im Moment ist das einzige, was ich weiß, wie man Bluetooth-Geräte anschaltet und findet.Wie kann ich verbinden und senden Daten in Android mit Bluetooth zwischen zwei Geräten?

Ich mache ein kleines Videospiel, das zwischen zwei Geräten mit Bluetooth spielt, aber ich verstehe nicht, wie man die Verbindung zwischen ihnen herstellt, wie bluetoothSockets, bluetoothServerSocket und Threads, die androids bringt mich.

Dies als Code, den ich gemacht habe:

public class MainActivity extends AppCompatActivity { 

    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    static ListView dispositivos; 

    ArrayList<String> adapter=new ArrayList(); 
    ArrayAdapter<String> adap; 

    private static final int REQUEST_CONNECT_DEVICE_SECURE = 1; 
    private static final int REQUEST_CONNECT_DEVICE_INSECURE = 2; 
    private static final int REQUEST_ENABLE_BT = 3; 

    public void con(View view){ 
     adapter.clear(); 
     if (!mBluetoothAdapter.isEnabled()) { 
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
     } 

     //checamos primero los dispositivos enlazados 
     Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
     if (pairedDevices.size() > 0) { 
      for (BluetoothDevice device : pairedDevices) { 
       adapter.add(device.getName() + "\n" + device.getAddress()); 
      } 
     } 


     //vamos a buscar otros dispositivos 
     mBluetoothAdapter.startDiscovery(); 
     IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
     registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy 

     adap=new ArrayAdapter<>(MainActivity.this,android.R.layout.simple_list_item_1, adapter); 
     dispositivos.setAdapter(adap); 

    } 


    //metodo de busqueda que agrega cada dispositivo que se encuentre a la lista 
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

       adap.add(device.getName() + "\n" + device.getAddress()); 
      } 
     } 
    }; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     dispositivos=(ListView)findViewById(R.id.lista); 
    } 
} 
+0

Haben Sie die Bluetooth-Chat-Beispiel-App gesehen: https://github.com/googlesamples/android-BluetoothChat –

Antwort

1

Um eine Bluetooth-Verbindung und den Datenaustausch zwischen zwei Geräten Sie einige Schritte folgen müssen, herzustellen:

  1. Finden und Paar-Geräte
  2. Eine Verbindung von einem Gerät starten (BluetoothServerSocket)
  3. Verbindung akzeptieren und bidirektionalen Datenstrom erstellen

-1 Sie haben gesagt, dass bereits wissen, wie Geräte zu suchen, aber here gibt es die Dokumentationsseite. Wenn Zielgerät noch gepaart worden ist Sie keine Erkennung durchführen müssen, fragen Sie einfach den BluetoohAdapter für paired devices

-2 Die Bluetooth-Verbindung von irgendwo beginnen hat, so ein Gerät hat es und Tat zur inizialize als ein Server; Um dies zu tun, müssen Sie eine BluetoothServerSocket erstellen. Sie könnten eine Schritt-für-Schritt-Erklärung finden here; Im Wesentlichen, sobald Sie es erstellt haben, hört dieser Server-Socket weiter auf die Anfrage einer eingehenden Verbindung, wenn die Anfrage akzeptiert wird, dann geben Sie eine gültige BluetoothSocket zurück. Bedenken Sie, dass die Verbindungsanfrage von dem anderen Gerät kommen muss, so dass das Smartphone diese Aufgabe hat, here, wie immer die Dokumentation.

-3 Mit Ihren zwei neuen BluetoothSocket Sie sind in der Lage ein Paar Ströme für jedes Gerät, einen Eingang ein und einen Ausgang eines abzurufen. Jetzt haben Sie zu manage the connection Senden und Daten aus dem spezifischen Strom

WICHTIG Empfang: Bluetooth-Aktivitäten sind schwer und asynchrone so den Haupt-Thread ausgeführt ausgeschaltet werden muss. erstellen Thread und außer Kraft gesetzt sein run() Methode jede Aktion auszuführen:

  • Suche

  • für eingehende Anfrage hören (Server-Seite)

  • verwalten Verbindung (beidseitig)

Am Ende jedes Dokumentationsabschnittes, den ich Ihnen verlinkt habe In diesem Codebeispiel lernen Sie, wie Sie diese bestimmte Aufgabe ausführen.

Beginnen Sie zu versuchen und wenn Sie einen Fehler bekommen oder Sie stecken bleiben, bitten Sie um Hilfe.

+0

Sie wissen, wie ich das andere Gerät anfordern kann ??? – Montero

+0

Lesen Sie den ersten Link an Punkt 2 meiner Antwort, alles ist dort erklärt, es gibt ein Beispiel – Marco

Verwandte Themen