在 Android 中广播不同的 Eddystone 数据包

Broadcast different Eddystone packets in Android

我想在 Android 中广播多个 Eddystone 数据包。我读到它不能同时完成,但是我们必须创建一个计时器并广播多个数据包。我想知道是否有任何限制,例如我们可以广播多少个独特的 eddystone 数据包?我可以在1秒内广播不同的多个数据包吗?

一些Android设备确实允许同时发送多个广告。这完全取决于 phone 上的芯片组。没有办法提前知道这一点,但您可以反复尝试使用不同的信标标识符集开始广告,直到收到错误消息。这是 Android Beacon 库的代码:

Beacon beacon = new Beacon.Builder()
    .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
    .setId2("1")
    .setId3("2")
    .setManufacturer(0x0118)
    .setTxPower(-59)
    .setDataFields(Arrays.asList(new Long[] {0l}))
    .build();
BeaconParser beaconParser = new BeaconParser()
    .setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 
beaconTransmitter.startAdvertising(beacon beacon, new AdvertiseCallback() {
  public void onStartFailure(int errorCode) {
      // Called when failed
  }
  public void   onStartSuccess(AdvertiseSettings settingsInEffect) {
  }

});

也可以使用定时器通过每 100 毫秒左右更改标识符来模拟多个信标。因为发射器对于每个信标标识符将具有相同的 MAC 地址,所以不同类型的接收器将以不同方式处理此问题。 iOS 会将它们作为多个信标进行跟踪,使用 Android 信标库的设备也会如此。