2015-12-27 17 views
5

Ich versuche, eine App zu schreiben, die alle MAC-Adressen rund um Windows 10 IoT liest. Diese Codezeilen geben alle gekoppelten Geräte zurück, auch wenn sie nicht eingeschaltet sind.Suche nach Bluetooth-Mac-Adresse in Windows10 UWP ohne Pairing

var selector = BluetoothDevice.GetDeviceSelector(); 
var devices = await DeviceInformation.FindAllAsync(selector); 
listBox.Items.Add(devices.Count); 
foreach (var device in devices) 
{ 
    listBox.Items.Add(device.Id); 
} 

Und ich fand auch diese Codezeile

await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); 

Diese Rückkehr obwohl null. Gibt es eine Möglichkeit, nach allen MAC-Adressen in einer universellen Windows 10-App zu suchen?

Antwort

1

Sie sind sehr nahe dran, die Antwort auf Ihre Frage zu finden. Sie können versuchen, eine BluetoothDevice-Instanz von der DeviceId-Eigenschaft abzurufen. Sie werden dann in der Lage sein, alle die spezifischen Bluetooth Informationen, einschließlich der Bluetooth-Adresse

var selector = BluetoothDevice.GetDeviceSelector(); 
var devices = await DeviceInformation.FindAllAsync(selector); 
foreach (var device in devices) 
{ 
    var bluetoothDevice = await BluetoothDevice.FromIdAsync(device.Id); 
    if (bluetoothDevice != null) 
    { 
     Debug.WriteLine(bluetoothDevice.BluetoothAddress); 
    } 
    Debug.WriteLine(device.Id); 
    foreach(var property in device.Properties) 
    { 
     Debug.WriteLine(" " + property.Key + " " + property.Value); 
    } 
} 
+0

Die App nur noch Geräte gründen, die bereits gepaart sind. Gibt es eine Möglichkeit, die MAC-Adresse ohne Pairing zu finden? –

+0

Nein, das können Sie eigentlich nicht tun. – danvy

+0

ok, also wie kann ich gepaarte Geräte finden, sondern nur solche, die sich in Reichweite von Geräten befinden. Entdecke diese Codezeilen und gründe alle Geräte, die jemals gepaart wurden. –

2

Es ist ein neuer Ansatz BluetoothLEAdvertisementWatcher um für alle Bluetooth LE Gerät zum Scannen verwenden zu erhalten. Hier ist ein Stück Code, den ich in meinem Projekt verwenden:

var advertisementWatcher = new BluetoothLEAdvertisementWatcher() 
{ 
    SignalStrengthFilter.InRangeThresholdInDBm = -100, 
    SignalStrengthFilter.OutOfRangeThresholdInDBm = -102, 
    SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(2000) 
}; 

advertisementWatcher.Received += AdvertisementWatcher_Received; 
advertisementWatcher.Stopped += AdvertisementWatcher_Stopped; 

advertisementWatcher.Start(); 

und später

advertisementWatcher.Stop(); 

advertisementWatcher.Received -= AdvertisementWatcher_Received; 
advertisementWatcher.Stopped -= AdvertisementWatcher_Stopped;