3

URL フレームの仕様: https://github.com/google/eddystone/tree/master/eddystone-url

Eddystone URL フレームのアドバタイズに問題があります。次のコードを使用していますが、Eddystone ビーコン スキャナーはそれを認識しません。

byte[] data;
string url = "http://test.com";

var urlSchemeByte = EddystoneUrlFrame.EncodeUrlScheme(url);
var header = new byte[] { 0xAA, 0xFE, 0x10 };
using (var memoryStream = new MemoryStream())
{
    memoryStream.Write(header, 0, header.Length);

    // ranging data
    memoryStream.WriteByte(220);

    memoryStream.WriteByte((byte)urlSchemeByte);
    EddystoneUrlFrame.EncodeUrlToStream(url,EddystoneUrlFrame.UrlSchemeDictionary[(byte)urlSchemeByte].Length,memoryStream);

    data = memoryStream.ToArray();
}

var writer = new DataWriter();
writer.WriteBytes(data);

var advertisementData = new BluetoothLEAdvertisementDataSection();
advertisementData.Data = writer.DetachBuffer();
publisher.Advertisement.DataSections.Add(advertisementData);

私は何を間違っていますか?

4

2 に答える 2

0

ヘッダーを先頭に追加して、以下を含めてみてください。

  1. サービス データ PDU の PDU タイプと長さ:

    0x0D, 0x16
    
  2. 上記の前に、サービス UUID とともに、16 ビット サービス アドバタイズメント PDU の PDU タイプと長さを入力します。

    0x03, 0x03, 0xAA, 0xFE
    

したがって、次のようになります。

var header = new byte[] { 0x03, 0x03, 0xAA, 0xFE, 0x0D, 0x16, 0xAA, 0xFE, 0x10 };

私は Windows API の経験がないので、これらのバイトがこのように指定される可能性があるというのは間違っているかもしれません。しかし、どういうわけか、それらは適切な検出のために送信されている必要があります.

于 2015-11-12T18:14:48.343 に答える