Xamarin 如何使用AltBeacon API从Kontakt.io信标获取电池电量

Xamarin 如何使用AltBeacon API从Kontakt.io信标获取电池电量,xamarin,xamarin.forms,ibeacon,altbeacon,kontakt.io,Xamarin,Xamarin.forms,Ibeacon,Altbeacon,Kontakt.io,我需要从kontakt.io信标获取电池电量。我已将布局设置为如下所示,当我在RangBeaconsis区域中读取信标时,数据字段为空 我希望我能从Kontakt.io文档中描述的最后一位读取电池电量 这是我当前的代码: private BeaconManager InitializeBeaconManager() { BeaconManager bm = BeaconManager.GetInstanceForApplication(Xamarin.Forms.Forms.Contex

我需要从kontakt.io信标获取电池电量。我已将布局设置为如下所示,当我在RangBeaconsis区域中读取信标时,数据字段为空

我希望我能从Kontakt.io文档中描述的最后一位读取电池电量

这是我当前的代码:

private BeaconManager InitializeBeaconManager()
{
    BeaconManager bm = BeaconManager.GetInstanceForApplication(Xamarin.Forms.Forms.Context);

    var iBeaconParser = new BeaconParser();
    iBeaconParser.SetBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");
    bm.BeaconParsers.Add(iBeaconParser);

    _rangeNotifier.DidRangeBeaconsInRegionComplete += RangingBeaconsInRegion;

    bm.Bind((IBeaconConsumer)Xamarin.Forms.Forms.Context);

    return bm;
}

void RangingBeaconsInRegion(object sender, RangeEventArgs e)
{
    if (e.Beacons.Count > 0)
    {
        var beacon = e.Beacons.FirstOrDefault();

        var data = beacon.DataFields.FirstOrDefault();
        // here DataFields is empty!

    }
}
我使用的是Xamarin表单,这是Android版本的代码

这可能吗?或者我需要使用Kontakt.io API吗

更新


在应用新布局之前,我已经删除了所有解析器,并且我能够读取数据字段。但是,我得到了一个值8,我不知道这个值是什么意思

我不确定Xamarin的语法,但在添加自定义的信标解析器之前,请尝试删除所有现有的信标解析器。我怀疑内置iBeacon解析器仍处于活动状态,它首先匹配。

Kontakt.io信标中的电池电量是其“”的一部分,而不是iBeacon结构的一部分,您必须使用它来读取


这是如何工作的一个快速分解,以及最近发布的用法。

我看到了类似的问题,但我遇到的问题是,在应用新布局之前,我没有清理所有BeaconParser。见@davidgyoung answer谢谢你的帮助。我已经删除了默认的解析器,现在我得到了一个值。该值为8(长),在Kontact.IO应用程序中,电池显示93%。8是什么意思?!原始值的范围为0-255。你已经知道8显然意味着93℅. 您还需要几个数据点才能得出转换公式。你可以问Kontakt.IO。不幸的是,他们的SDK是封闭源码的,所以我们自己无法看到。谢谢!你帮了我大忙。我将联系Kontakt.IO,了解该值的含义。