2016-07-21 55 views
0

Ich versuche, einige Tests zu machen, und ich möchte die ID meines Werbesignals iterieren. Ich kann einen Beacon nicht in einer Schleife initiieren und mit der Anzeige beginnen, weil der Beacon niemals iterieren wird. Gibt es einen Weg, wie ich einfach eine Werbung aussenden, die ID wiederholen und eine weitere Werbung versenden kann?Wie man die ID eines altbeacon iteriert?

+0

Wollen Sie sagen, Sie möchten als Beacon übertragen mit der Kennung im Laufe der Zeit inkrementieren? Können Sie den Code zeigen, den Sie jetzt haben? – davidgyoung

+0

Ja, ich spiele mit verschiedenen Networking-Ideen herum und es wäre hilfreich, wenn ich sehen könnte, ob mir Werbung fehlt. Wenn ich die ID oder einen Teil der Werbung iterieren lassen könnte, würde ich feststellen, ob mir Werbung fehlt. – Jeffkid

Antwort

0

Die Anzeigen werden mit verschiedenen konfigurierbaren Raten vom Android-Betriebssystem gesendet, sodass Sie nicht die volle Kontrolle über jedes Paket haben. Sie können jedoch einen Timer einrichten, der die übertragene Kennung jede Sekunde inkrementiert:

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
private void incrementIdentifierAndTransmitBeacon(final int identifier) { 
    Beacon beacon = new Beacon.Builder() 
      .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6") 
      .setId2("1") 
      .setId3(new Integer(identifier).toString()) 
      .setManufacturer(0x0118) // Radius Networks. Change this for other beacon layouts 
      .setTxPower(-59) 
      .setDataFields(Arrays.asList(new Long[]{0l})) // Remove this for beacon layouts without d: fields 
      .build(); 
    BeaconParser beaconParser = new BeaconParser() 
      .setBeaconLayout(BeaconParser.ALTBEACON_LAYOUT); 
    BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 
    beaconTransmitter.stopAdvertising(); 
    beaconTransmitter.startAdvertising(beacon, new AdvertiseCallback() { 

    }); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      incrementIdentifierAndTransmitBeacon((identifier+1) % 65536); 
     } 
    }, 1000l); 

}