0

J'utilise Eddystone-URL avec la bibliothèque de balises Android. Je mets l'URL compressée dans les dataFileds de la balise mais quand je reçois le signal, les champs de données sont vides. Pourquoi est-ce possible? joindre ici le code de transmiter:Réception d'URL à partir d'une balise URL Eddystone virtuelle à l'aide de la bibliothèque Beacon Android

try { 
     byte[] buf = UrlBeaconUrlCompressor.compress("http://www.google.com"); 
     beacon = new Beacon.Builder() 
       .setId1("0000FEAA-0001-1000-8000-00805F9B34FB") 
       .setManufacturer(0xFEAA) 
       .setTxPower(-59) 
       .setDataFields(bytesToListOfLongs(buf)) 
       .build(); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    BeaconParser beaconParser = new BeaconParser() 
      .setBeaconLayout(BeaconParser.EDDYSTONE_URL_LAYOUT); 
    beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 

Je décodées les DataFields avant de commencer à transmettre et je vois bien l'URL, mais je ne reçois pas quoi que ce soit dans ce domaine dans l'autre smartphone.

Répondre

0

Vous ne pouvez simplement pas utiliser de champs de données pour ce cas. Les champs de données sont conçus pour contenir seulement quelques bits d'information.

Placer à la place les données que vous souhaitez transférer dans le champ ID1 lui-même. Dans le cas du format iBeacon et AltBeacon, cet Id a une longueur de 16 octets. Vous aurez besoin de convertir vos octets de jours pour toujours exactement 16 octets et les formater comme un uuid afin que la méthode d'analyse Identifier puisse les convertir en un identifiant.

+0

Ok, mais quel est le format Eddystone-URL qui me sert alors? –

+0

Si vous codez des données dans une transmission de balise, vous sortez vraiment de l'utilisation prévue des balises bluetooth, qui sont conçues pour transmettre un simple identifiant unique. Vous êtes invités à le faire, mais parce que vous allez en dehors de l'utilisation prévue, le format que vous utilisez n'a pas d'importance. Si vous utilisez Eddystone-URL, vous codez les données dans l'URL. Si vous utilisez Eddystone-UID, vous l'encodez dans les identifiants Namespace et Instance. Si vous utilisez iBeacon ou AltBeacon, vous l'encodez dans l'UUID, les identifiants majeurs et mineurs. – davidgyoung