2014-12-09 72 views
3

我們有一個基於iBeacon的生態系統,並希望通過Android廣告進行擴展。 我們使用基於這個博客帖子的AltBeacon BeaconTransmitter類:http://developer.radiusnetworks.com/2014/11/18/beacon-transmission-with-android-5.html在這個線程中提到的燈塔布局:Is this the correct layout to detect iBeacons with AltBeacon's Android Beacon Library?iOS設備無法看到Nexus 9廣告AltBeacon燈塔

我們使用Nexus 9平板電腦的廣告,我們的其他Android設備可以看到通告的燈塔,但iOS版設備不是。

我們創造這樣的信標:

mBeaconTransmitter = new BeaconTransmitter(this, new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")); 
      // Transmit a beacon with Identifiers 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 2 
      Beacon beacon = new Beacon.Builder() 
        .setId1("our uuid") 
        .setId2("a major id") 
        .setId3("a minor id") 
        .setManufacturer(0x0000) 
        .setTxPower(-59) 
        .setDataFields(Arrays.asList(new Long[] {0l})) 
        .build(); 

什麼可缺少的一部分?在CL的didRangeBeacons方法中,我們看不到這個燈塔。

回答

3

Android Beacon Library'sBeaconTransmitter類要求new BeaconParser.setBeaconLayout()表達式對於希望傳輸的信標類型是完全正確的。關於代碼

兩件事情看起來很可疑:

  1. 該代碼調用setDataFields()上的信標,即使沒有數據字段在信標佈局表達式定義(用d:前綴)。這可能會導致異常,但如果不是這樣,可能會導致變速器故障。我會刪除這個。

  2. 我不確定製造商代碼0x0000是否有效。如果(1)不能解決問題,請嘗試使用不同的製造商代碼找到適用於iOS的產品代碼。

只是爲了驗證有與Nexus 9硬件沒有問題,嘗試在谷歌Play商店運行免費QuickBeacon應用。它使用完全相同的API來傳輸,所以如果它起作用,你也應該能夠使你的代碼工作。

+0

謝謝大衛爲您的建議,我用0x004c(蘋果的製造商代碼),它現在的作品! – viplezer 2014-12-09 13:28:30

+0

大衛,有沒有估計的日期,當你將合併android-l-apis分支與主人? – viplezer 2014-12-09 13:50:42

+0

我打算在今天晚些時候發佈2.1-beta-1,所以會有二進制版本可用。由於掃描API發生了顯着變化以支持Android 5,因此2.1可能會在幾周內保持測試版,以便人們發送錯誤報告。不需要新掃描功能的人或BeaconTransmitter仍然可以使用2.0.x版本。 – davidgyoung 2014-12-09 15:43:10