Last active
April 18, 2017 06:18
-
-
Save microwavePC/036ca9c88bb742cd1d461c42091d12bd to your computer and use it in GitHub Desktop.
【Xamarin.Forms】iBeacon発信アプリをクロスプラットフォーム開発する ref: http://qiita.com/microwavePC/items/689fd81affe641c60449
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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