使用Google的Proximity Beacon API注册Estimote Beacons(Eddystone)

时间:2016-04-12 07:37:51

标签: android beacon eddystone google-beacon-platform

使用Proximity Beacon API注册信标似乎很简单,但我无法使用Nearby Messages API(已注册的信标,添加的附件,使用消息API订阅)接收任何消息。

我认为我的问题在于注册信标。它说你应该使用namespaceID和instanceID,但是我用来检索id的每个应用都告诉我要么必须在namespaceID / instanceID前加上0x,要么把它放在它们之间。 / p>

我尝试过以下格式:

  • namespaceIDinstanceID
  • namespaceID:instanceID
  • 0xnamespaceIDinstanceID

我目前正在使用Estimote信标。我如何将Eddystone的Estimote信标注册到Proximity Beacon API?

在转换为base64之前,我不需要代码,只需要Eddystone UID格式。

1 个答案:

答案 0 :(得分:2)

将Eddystone UID表示为包含命名空间和实例的字节数组,因此总共16个字节。像这样:

JSONObject json = new JSONObject();

// For namespace 0x0102030405060708090a, instance 0x0b0c0d0e0f00
byte[] myEddystoneUid = new byte[] {
        (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04,
        (byte)0x05, (byte)0x06, (byte)0x07, (byte)0x08,
        (byte)0x09, (byte)0x0a, (byte)0x0b, (byte)0x0c,
        (byte)0x0d, (byte)0x0e, (byte)0x0f, (byte)0x00
};

JSONObject advertisedId = new JSONObject()
        .put("type", "EDDYSTONE")
        .put("id", Base64.encodeToString(myEddystoneUid, Base64.NO_WRAP));
json.put("advertisedId", advertisedId);
json.put("status", "ACTIVE");