Line Simple Beacon
https://github.com/line/line-simple-beacon/blob/master/README.en.md
Android Sample Code
Beacon.java
public interface Beacon {
AdvertiseData createAdvertiseData();
}
LineBeacon.java
public class LineBeacon implements Beacon {
private static final Integer LINE_BEACON_MANUFACTURER = 0x02C1;
private static final String LINE_BEACON_SERVICE_UUID = "0000fe6f-0000-1000-8000-00805f9b34fb";
private static final String LINE_BEACON_HWID = "{YOUR_LINE_BEACON_HWID}";
private static final String LINE_BEACON_ADVERTISE_DATA_HEX_STRING = "02%s7f00";
private BeaconSettings mBeaconSettings;
public LineBeacon(BeaconSettings beaconSettings) {
mBeaconSettings = beaconSettings;
if (mBeaconSettings == null) {
mBeaconSettings = new BeaconSettings();
mBeaconSettings.HWID = LINE_BEACON_HWID;
}
}
@Override
public AdvertiseData createAdvertiseData() {
ParcelUuid serviceUuid = ParcelUuid.fromString(LINE_BEACON_SERVICE_UUID);
AdvertiseData advertiseData = new AdvertiseData.Builder()
.addServiceUuid(serviceUuid)
.addServiceData(serviceUuid, BluetoothService.hexStringToByteArray(
String.format(LINE_BEACON_ADVERTISE_DATA_HEX_STRING, mBeaconSettings.HWID)
))
.setIncludeTxPowerLevel(mBeaconSettings.IsIncludeTxPowerLevel)
.setIncludeDeviceName(mBeaconSettings.IsIncludeDeviceName)
.build();
return advertiseData;
}
}
BeaconSettings.java
public class BeaconSettings {
public static final int BEACON_TYPE_LINE = 1;
public int Type;
public String HWID;
public boolean IsIncludeTxPowerLevel;
public boolean IsIncludeDeviceName;
public int TxPowerLevel;
public int AdvertiseMode;
public boolean IsConnectable;
public BeaconSettings(){
Type = BEACON_TYPE_LINE;
HWID = "";
IsIncludeTxPowerLevel = false;
IsIncludeDeviceName = false;
TxPowerLevel = AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM;
AdvertiseMode = AdvertiseSettings.ADVERTISE_MODE_BALANCED;
IsConnectable = false;
}
}
Start advertising in fragment or activity.
public void startTransmitBeacon(BeaconSettings beaconSettings) {
Beacon beacon = SimpleBeaconFactory.createBeacon(beaconSettings);
AdvertiseData advertiseData = beacon.createAdvertiseData();
AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
.setTxPowerLevel(beaconSettings.TxPowerLevel)
.setConnectable(beaconSettings.IsConnectable)
.setAdvertiseMode(beaconSettings.AdvertiseMode)
.build();
if (isBluetoothEnabled()) {
if (mBluetoothAdapter.isMultipleAdvertisementSupported()) {
mBluetoothAdapter.getBluetoothLeAdvertiser().startAdvertising(advertiseSettings, advertiseData, new AdvertiseCallback() {
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
super.onStartSuccess(settingsInEffect);
}
@Override
public void onStartFailure(int errorCode) {
super.onStartFailure(errorCode);
}
});
}
}
}