Skip to content

Instantly share code, notes, and snippets.

@microwavePC
Last active April 18, 2017 06:18
Show Gist options
  • Save microwavePC/036ca9c88bb742cd1d461c42091d12bd to your computer and use it in GitHub Desktop.
Save microwavePC/036ca9c88bb742cd1d461c42091d12bd to your computer and use it in GitHub Desktop.
【Xamarin.Forms】iBeacon発信アプリをクロスプラットフォーム開発する ref: http://qiita.com/microwavePC/items/689fd81affe641c60449
// BLEの発信を制御するクラスのインスタンス
private BluetoothLEAdvertisementPublisher blePublisher = new BluetoothLEAdvertisementPublisher();
// 発信
public void StartTransmission(Guid uuid, ushort major, ushort minor, sbyte txPower)
{
// BLE発信用のデータを格納する箱を作成
BluetoothLEManufacturerData bleManufacturerData = new BluetoothLEManufacturerData()
{
CompanyId = Const.COMPANY_CODE_APPLE
};
// データを格納できるようにするため、UUID、Major、Minor、TxPowerをbyteに変換する。
// TxPowerはオフセットをかけてから変換する。
byte[] uuidByteArray = uuid.ToByteArray();
byte[] majorByteArray = BitConverter.GetBytes(major);
byte[] minorByteArray = BitConverter.GetBytes(minor);
byte txPowerByte = (byte)((int)txPower + 256);
// UUID、Major、Minorを、iBeaconのフォーマットに準拠する形に梱包する。
byte[] ibeaconAdvertisementDataArray = new byte[]
{
// iBeaconと識別するための固定値
0x02, 0x15,
// UUID
uuidByteArray[0], uuidByteArray[1], uuidByteArray[2], uuidByteArray[3],
uuidByteArray[4], uuidByteArray[5], uuidByteArray[6], uuidByteArray[7],
uuidByteArray[8], uuidByteArray[9], uuidByteArray[10], uuidByteArray[11],
uuidByteArray[12], uuidByteArray[13], uuidByteArray[14], uuidByteArray[15],
// Major
majorByteArray[0], majorByteArray[1],
// Minor
minorByteArray[0], minorByteArray[1],
// TxPower
txPowerByte
};
// データをBLEで発信する。
bleManufacturerData.Data = ibeaconAdvertisementDataArray.AsBuffer();
blePublisher.Advertisement.ManufacturerData.Add(bleManufacturerData);
blePublisher.Start();
}
// 停止
public void StopTransmission()
{
blePublisher.Stop();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment