0

AndroidビーコンライブラリでEddystone-URLを使用しています。私はビーコンのdataFiledsに圧縮されたURLを入れましたが、私がシグナルを受け取ったとき、dataFieldsは空ですなぜこれが起こりうるのでしょうか?ここでは送信機のコードを添付:Androidビーコンライブラリを使用して仮想Eddystone-URLビーコンからURLを受信

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); 

私は送信を開始する前にDataFieldsをデコードし、私にはよくURLを参照してくださいが、私は他のスマートフォンでは、このフィールドには何も受信していません。

答えて

0

この場合、データフィールドは使用できません。データフィールドは、ほんの数ビットの情報を保持するように設計されています。

代わりに、転送するデータをID1フィールド内に置きます。 iBeaconとAltBeacon形式の場合、そのIdは16バイトです。あなたの日のバイトを常に正確に16バイトに変換し、UUIDとしてフォーマットする必要があります。そうすれば、Identifier parseメソッドはそれらを識別子に変換できます。

+0

私が提供しているEddystone-URLフォーマットは何ですか? –

+0

ビーコン送信でデータをエンコードする場合、実際には、単純な固有の識別子を送信するように設計されたBluetoothビーコンの意図された使用以外になります。あなたはこれを行うことを歓迎しますが、あなたが意図した用途の外に出ているので、どのフォーマットを使用するかは実際には関係ありません。 Eddystone-URLを使用する場合は、URL内のデータをエンコードします。 Eddystone-UIDを使用する場合は、名前空間とインスタンスの識別子の中にエンコードします。 iBeaconまたはAltBeaconを使用する場合は、UUID、メジャーおよびマイナーID内でエンコードします。 – davidgyoung

関連する問題