BluetoothLEAdvertisementWatcher.Received 콜백이 반환되지 않음

먼저 결론


Package.appxmanifest 를 편집하여 블루투스 기능을 사용하도록 설정하십시오.

BluetoothLEAdvertisementWatcher



htps : // / cs. 미 c 로소 ft. 코 m/엔-우 s/우 wp/아피/우엔드 ws. 에서 ぃせ s. b ㅅ와 th. 아 dゔぇr 치세멘 t.ぅ 에토 th ぇ 아 d ご r 치세 멘토
이 클래스의 Received 의 이벤트에 콜백을 등록하면, 주변에서 광고중의 BLE 디바이스의 정보를 수시로 취득할 수 있습니다.

구현 예


var BleWatcher = new BluetoothLEAdvertisementWatcher 
{ 
    ScanningMode = BluetoothLEScanningMode.Active
};

BleWatcher.Received += async (w, btAdv) => {
    var device = await BluetoothLEDevice.FromBluetoothAddressAsync(btAdv.BluetoothAddress);
    Debug.WriteLine($"BLEWATCHER Found: {device.name}");

    // SERVICES!!
    var gatt = await device.GetGattServicesAsync();
    Debug.WriteLine($"{device.Name} Services: {gatt.Services.Count}, {gatt.Status}, {gatt.ProtocolError}");

    // CHARACTERISTICS!!
    var characs = await gatt.Services.Single(s => s.Uuid == SAMPLESERVICEUUID).GetCharacteristicsAsync();
    var charac = characs.Single(c => c.Uuid == SAMPLECHARACUUID);
    await charac.WriteValueAsync(SOMEDATA);
};

BleWatcher.Start();

하지만



로그에 아무것도 나오지 않습니다. 여러가지 조사하면서 돌아다니며 공식 문서를 보면,
htps : // / cs. 미 c 로소 ft. 코 m / 자 jp / 우동 ws / 우 wp /

🤮

재챌린지



Visual Studio의 솔루션 탐색기에서
Package.appxmanifest 를 더블 클릭하여 편집합니다.


[기능]에서 Bluetooth를 선택합니다.

그러면 로그에 원하는 BLE 디바이스의 스캔 결과가 표시됩니다.

안드로이드의 Android.manifest나 iOS의 info.plist 에도 BLE의 허가를 기재하는 설정 파일이 있습니다만, 이쪽은 개발(디버그)중은 미설정이라도 동작했을 것입니다만, Windows의 UWP 앱의 사양은 다르다 같아요.

아무것도 나오지 않기 때문에 BLE 디바이스 측에 문제가 있는지 등 여러가지 빠졌습니다.
뭔가 에러를 토해 주면 깨달았을 것입니다만, 공식의 문서는 제대로 보는 것이 좋다고 하는 이야기입니다. (개인의 블로그라면 당연한 것은 쓰지 않기 때문에)

참고



Why is BluetoothLEDevice.GattServices Empty
Windows 10에서 Bluetooth 지원 정보

좋은 웹페이지 즐겨찾기