2012-04-04 18 views

Antwort

4

ich weiß nicht von irgendeiner Weise eine Liste der aktuell angeschlossenen Geräte zu bekommen, aber Sie können für neue Verbindungen hören die ACL_CONNECTED Absicht mit: http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#ACTION_ACL_CONNECTED

Diese inte Es enthält ein zusätzliches Feld für das Remote-Gerät, mit dem die Verbindung hergestellt wird.

Auf Android-Geräten sind alle Bluetooth-Verbindungen ACL-Verbindungen. Wenn Sie sich für diese Absicht anmelden, erhalten Sie alle neuen Verbindungen.

Also, Ihr Empfänger würde wie folgt aussehen:

public class ReceiverBlue extends BroadcastReceiver { 
    public final static String CTAG = "ReceiverBlue"; 
    public Set<BluetoothDevice> connectedDevices = new HashSet<BluetoothDevice>(); 

    public void onReceive(Context ctx, Intent intent) { 

    final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

    if (BluetoothDevice.ACTION_ACL_CONNECTED.equalsIgnoreCase(action)) { 
     Log.v(CTAG, "We are now connected to " + device.getName()); 
     if (!connectedDevices.contains(device)) 
     connectedDevices.add(device); 
    } 

    if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equalsIgnoreCase(action)) { 
     Log.v(CTAG, "We have just disconnected from " + device.getName()); 
     connectedDevices.remove(device); 
    } 
    } 
} 
+0

Ich habe dieses versucht. Immer, wenn ich ein Gerät anschließe, wird "ACTION_ACL_CONNECTED" angezeigt, aber es zeigt sofort "ACTION_ACL_DISCONNECTED" an. Mache ich irgendetwas falsch? –

+0

Das ist seltsam. Das hört sich so an, als würde die Verbindung nur kurz aufrechterhalten und dann verloren gehen. Ich bin mir nicht sicher, warum Sie das bekommen. – Tom

+0

'Unter Android sind alle Bluetooth-Verbindungen ACL-Verbindungen." Sind Sie sicher? hast du einen Link dafür ?! – Soheil

0

Ich denke getBondedDevices() wird Ihnen helfen :)

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
// If there are paired devices 
if (pairedDevices.size() > 0) { 
// Loop through paired devices 
for (BluetoothDevice device : pairedDevices) { 
    // Add the name and address to an array adapter to show in a ListView 
    mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
} 
} 

Thanks :)

+8

getBondedDevices() erhalten Sie Geräte gekoppelt, nicht verbunden diejenigen. – Tom

+0

Ein hacky Weg ist zu versuchen, mit allen zu verbinden, um zu sehen, ob sie verbunden sind, Nachteil ist, dass dies auf dem Haupt-Thread getan wird. – jobbert

Verwandte Themen