2010-07-03 7 views

Antwort

7

Here Es gibt ein vollständiges Beispiel, um Geräte zu erkennen.

Sie könnten die MAC-Adresse als eindeutige ID verwenden.

Über Signalstärke denke ich, Sie sollten RSSI (Received Signal Strength Indicator) verwenden.

+0

jemand hat Erfahrung mit dieser RSSI-Sache? Ich bin hier etwas unsicher, da dies als Konstante definiert ist? – xenonite

+1

Ihr erster Link - http://developer.android.com/guide/topics/wireless/bluetooth.html#FindingDevices ist tot – Dayan

+0

Link hat zur Zeit – Charlie

35

Check out Code unten:

Start Suche

mBluetoothAdapter.startDiscovery(); 
mReceiver = new BroadcastReceiver() { 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 

    //Finding devices     
    if (BluetoothDevice.ACTION_FOUND.equals(action)) 
    { 
     // Get the BluetoothDevice object from the Intent 
     BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
     // Add the name and address to an array adapter to show in a ListView 
     mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
    } 
    } 
}; 

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
registerReceiver(mReceiver, filter); 
+3

+1 für netten und einfachen Code gebrochen :) – Lucifer

+0

Netter sauberer Code, sollte dies sei die richtige Antwort. – Dayan

+0

funktioniert nicht für mich. –

1

Call-Methode bluetoothScanning, Kontext

void bluetoothScanning(){ 

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
    context.registerReceiver(mReceiver, filter); 
    final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    mBluetoothAdapter.startDiscovery(); 

} 


// Create a BroadcastReceiver for ACTION_FOUND. 
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
      // Discovery has found a device. Get the BluetoothDevice 
      // object and its info from the Intent. 
      BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
      String deviceName = device.getName(); 
      String deviceHardwareAddress = device.getAddress(); // MAC address 

      Log.i("Device Name: " , "device " + deviceName); 
      Log.i("deviceHardwareAddress " , "hard" + deviceHardwareAddress); 
     } 
    } 
}; 

Ergebnis

Name erforderlich ist: LE-Bose Revolve + SoundLink- deviceHardwareAddress : MAC 04: 52: C7: D1: B2: 76

.....