2017-03-01 82 views
1

我需要從kontakt.io信標中獲取電池電量。我已經設置瞭如下的佈局,當我讀取RangingBeaconsInRegion中的信標時,DataFields爲空。如何使用AltBeacon API從Kontakt.io信標中獲取電池電量

我在等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?

UPDATE

我已經刪除了所有的解析器之前應用新的佈局,我能夠讀取數據域。但是,我得到一個價值,我不知道這個值是什麼意思。

+0

可能重複的[如何獲取Kontakt ibeacons的電池級別](http://stackoverflow.com/questions/25885659/how-to-get-battery-level-of-kontakt-ibeacons) – SushiHangover

+0

我看到了類似的問題但我得到的問題是,在應用新佈局之前,我沒有清理所有的** BeaconParser **。請參閱@davidgyoung回答 – gjfonte

回答

2

我對Xamarin的語法並不積極,但在添加自定義分析器之前嘗試移除所有現有的Beacon分析器。我懷疑內置的iBeacon解析器仍然是活動的並且它首先匹配。

+0

感謝您的幫助。我已經刪除了默認的解析器,現在我正在獲取一個值。值爲8(長),並且在Kontact.IO應用程序中查看電池索賠93%。 8意味着什麼?! – gjfonte

+1

原始值的範圍是0-255。你已經知道8顯然意味着93℅。您將需要更多的數據點來提供轉換公式。你可能會問Kontakt.IO。不幸的是,他們的SDK是封閉的源碼,所以我們無法親自看到。 – davidgyoung

+0

謝謝!你給了我一個很好的幫助。我會聯繫Kontakt.IO並找出價值的含義。 – gjfonte