2017-10-20 3 views
1

Ich erstelle eine App, die über Bluetooth mit einem bestimmten Gerät verbinden sollte.Koppeln Sie ein Bluetooth-Gerät in Android Studio

Ich möchte, dass meine App mit diesem Gerät eine Verbindung herstellt, egal, ob es bereits gepaart ist oder nicht.

Für jetzt habe ich diese

private void findDevice() { 
    Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices(); 
    if (pairedDevices.size() > 0) { 
     for (BluetoothDevice device : pairedDevices) { 
      if (device.getName().equals(DEVICE_NAME)) { 
       bluetoothDevice = device; 
       deviceFound = true; 
       break; 
      } 
     } 
    } 
} 

Aber diese Funktion verbindet nur gekoppelte Geräte. Wenn mein Gerät nicht bereits gekoppelt ist, möchte ich es paaren. Hab keine Ahnung wie man das macht.

Kann mir jemand bitte einen Rat geben?

+0

Haben Sie die Berechtigung BLUETOOTH_ADMIN angefordert? – nhoxbypass

+0

ja, ich habe angefordert – Kirchhoff1415

+0

Haben Sie versucht: https://stackoverflow.com/questions/14228289/android-pair-devices-via-bluetooth-programmatically – nhoxbypass

Antwort

1

Erste Anfrage BLUETOOTH_ADMIN Erlaubnis.

Dann wird Ihr Gerät sichtbar machen:

private void makeDiscoverable() { 
     Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
     discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
     startActivity(discoverableIntent); 
     Log.i("Log", "Discoverable "); 
    } 

Dann ein BroadcastReceiver erstellen zum Handeln von System zu hören:

: Suche nach Geräten durch die Registrierung dieses BoardcastReceiver

private BroadcastReceiver myReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Message msg = Message.obtain(); 
      String action = intent.getAction(); 
      if(BluetoothDevice.ACTION_FOUND.equals(action)){ 
       //Found, add to a device list 
      }   
     } 
    }; 

Und starten

private void startSearching() { 
     Log.i("Log", "in the start searching method"); 
     IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
     BluetoothDemo.this.registerReceiver(myReceiver, intentFilter); 
     bluetoothAdapter.startDiscovery(); 
    } 

Nach Geräten aus dem BroadcastReceiver kommen in eine Liste, wählen Sie Ihr Gerät aus der Liste und createBond() mit diesem:

public boolean createBond(BluetoothDevice btDevice) 
    throws Exception 
    { 
     Class class1 = Class.forName("android.bluetooth.BluetoothDevice"); 
     Method createBondMethod = class1.getMethod("createBond"); 
     Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice); 
     return returnValue.booleanValue(); 
    } 

Dann Code verwenden oben mit verknüpften Geräten zu verwalten.

+0

Mann, vielen Dank, scheint echt. Aber ein Problem mit BroadcastReceiver. Android Studio sagt, ich kann ein Symbol "BroadcastReceiver" nicht auflösen. Im für Antwort auf Google gesucht, aber kann nicht ein :( – Kirchhoff1415

+0

@ Kirchhoff1415 welches Problem – nhoxbypass

+0

ok, habe es, ich fehlte Import android.content.BroadcastReceiver finden;? Teil – Kirchhoff1415

Verwandte Themen