-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
Hi, i've been following the session from https://youtu.be/_z0MKbpXXOw and it's been very helpful. Right now Im trying to read the service uuids broadcasted by an Android peripheral from Windows 10 like this:
private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher sender,
BluetoothLEAdvertisementReceivedEventArgs advertisementArg)
{
Debug.WriteLine(" serviceUuids for advertisement " + advertisementArg.Advertisement.ServiceUuids.Count);
foreach(Guid guid in advertisementArg.Advertisement.ServiceUuids)
{
Debug.WriteLine("uuid is " + guid.ToString() + " address is " +advertisementArg.BluetoothAddress+ " name is "+ advertisementArg.Advertisement.LocalName);
}
}
However, when an Advertisement from an Android peripheral is received, the size of the serviceUuids list is always 0.
This is weird because the service data is correctly placed in the BluetoothLeAdvertisementDataSection of the advertisement:
IList<BluetoothLEAdvertisementDataSection> dataSection = advertisementArg.Advertisement.DataSections;
foreach (BluetoothLEAdvertisementDataSection ad in dataSection)
{
);
if (ad.Data.Length > 0)
{
DataReader dataReader = DataReader.FromBuffer(ad.Data);
byte[] bytes = new byte[ad.Data.Length];
dataReader.ReadBytes(bytes);
if (bytes.Length > 0)
{
string data = System.Text.Encoding.UTF8.GetString(crcBytes, 0, crcBytes.Length);
Debug.WriteLine("ANDROID DEVICE FOUND " + data);
}
}
}
So it's just the service uuid that is missing.
The service data is added in the Android peripheral like this:
AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
dataBuilder.addServiceData(new ParcelUuid(bluetoothUuid), advertiseData.getBytes
Metadata
Metadata
Assignees
Labels
No labels