在后台应用程序中使用BluetoothLEAdvertisementWatcher?

时间:2017-06-27 15:11:59

标签: raspberry-pi windows-10-iot-core

我尝试在Raspberry PI 3上运行的Windows 10 IOT背景(无头)应用程序中扫描BLE设备。

我还尝试在同一台RaspBerry PI机器上使用带有UI的应用程序(带有UI)中的BluetoothLEAdvertisementWatcher,但它确实有效。

我的无头应用程序是最简单的:

public sealed class StartupTask : IBackgroundTask
{
    private readonly BluetoothLEAdvertisementWatcher _bleWatcher = 
        new BluetoothLEAdvertisementWatcher();

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        _bleWatcher.Received += _bleWatcher_Received;
        _bleWatcher.ScanningMode = BluetoothLEScanningMode.Active;
        _bleWatcher.Start();
    }

    private void _bleWatcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
    {

    }
}

_bleWatcher_Received永远不会被击中。功能设置(蓝牙,互联网,接近)。

有什么问题?我错过了什么?

1 个答案:

答案 0 :(得分:1)

当app方法完成时,app会关闭。这就是_bleWatcher_Received从未被击中的原因。

要阻止您退出应用,您需要调用“GetDeferral”方法,如下所示:

public void Run(IBackgroundTaskInstance taskInstance)
{
    deferral = taskInstance.GetDeferral();

    //YOUR CODE HERE
}

有关详细信息,请参阅“Developing Background Applications”。