BLE estimote eddystone后台任务未运行

时间:2015-12-18 14:25:17

标签: c# bluetooth-lowenergy estimote windows-10-universal eddystone

我正在尝试创建一个后台任务,该任务将在系统检测到由estimote信标广播的eddystone广告时运行。

我已经配置了信标来发送eddystone数据包,我使用UniversalBeaconLibrary来获取这些数据包,而应用程序在前台(这里没有问题)。

现在我想在应用程序未启动时收到通知(使用后台任务对蓝牙广播数据包作出反应)。据我了解,为了避免对电池/ CPU造成太大压力,我需要过滤这些广告。

最简单的过滤方式之一(我尝试使用的方法)是使用蓝牙SIG提供的公司ID。

以下是我的尝试:

public static async void Register()
{
    if (BackgroundTaskRegistration.AllTasks.Count == 0)
    {
        var trigger = MakeTrigger();

        // this is needed for Phone, not so for Windows in this case.  
        var allowed = await BackgroundExecutionManager.RequestAccessAsync();

        if ((allowed != BackgroundAccessStatus.Denied) &&
            (allowed != BackgroundAccessStatus.Unspecified))
        {
            BackgroundTaskBuilder builder = new BackgroundTaskBuilder
            {
                Name = "BLEWatcher",
                TaskEntryPoint = typeof(BLEBackgroundConsumer.Consumer).FullName
            };
            builder.SetTrigger(trigger);
            builder.Register();
        }
    }
}
private static BluetoothLEAdvertisementWatcherTrigger MakeTrigger()
{
    var trigger = new BluetoothLEAdvertisementWatcherTrigger();
    //Can add some filters here
    //trigger.AdvertisementFilter.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData()
    //{
    //    CompanyId = 349 //Estimote
    //});
    //trigger.AdvertisementFilter.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData()
    //{
    //    CompanyId = 76 // Apple
    //});
    //trigger.AdvertisementFilter.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData()
    //{
    //    CompanyId = 224 // Google
    //});
    return (trigger);
}

因为它是我得到一个例外,说没有足够或太多的过滤。

当取消注释其中一个触发器块时,我没有例外,但任务似乎没有启动。

**编辑:**我询问estimote在使用eddystone数据包时他们使用的公司标识是什么。根据它们,没有。

关于这个答案,什么是合适的过滤器?

1 个答案:

答案 0 :(得分:1)

Bluetooth SIG公司ID仅用于制造商蓝牙LE广告,如iBeacon和AltBeacon。 Eddystone使用服务蓝牙L​​E广告,其中不包含公司ID。相反,它们包含16位服务UUID 0xFEAA。

请点击此处了解详情:https://github.com/google/eddystone/blob/master/protocol-specification.md